这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.
2022 Zabbix中国峰会
2022 Zabbix中国峰会

3 自定义报警脚本

概述

如果您对目前发送告警的媒介类型不满意,那么还有另外一种方式来执行此操作。您可以创建一个脚本,按照您自己的方式来处理通知。

告警脚本在Zabbix server上执行。这些脚本的存放目录,是服务器 配置文件AlertScriptsPath 变量所定义的。

以下是一个报警脚本的示例:

#!/bin/bash
       
       to=$1
       subject=$2
       body=$3
       
       cat <<EOF | mail -s "$subject" "$to"
       $body
       EOF

<note important>从3.4版本开始,Zabbix会检查执行命令和脚本的退出代码。若退出代码不为 0,则均被视为 命令执行 错误。在这种情况下,Zabbix将尝试重复失败的执行。 :::

环境变量不会为脚本保留或创建,因此应该明确地来处理它们。

配置

配置自定义告警脚本为媒介类型:

  • 转到 管理 - > 媒介类型
  • 点击 创建媒介类型

媒介类型 选项包含了媒介类型的一般属性:

红色星号标记的为必填字段。

以下为脚本媒介类型所特有的参数:

参数 描
脚本名称 输入脚 的名称。
脚本参数 向脚本 加命令行参数。
脚本中支持 {ALERT.SENDTO}, {ALERT.SUBJECT} 和 {ALERT.MESSAGE} 参数。
从Zabbix 3.0开始支持自定义脚本参数。

有关如何配置默认消息和报警处理选项,请详见 通用媒介类型参数

即使自定义报警脚本不使用默认消息,也必须为此媒介类型使用的操作类型定义消息模板,否则将不会发送通知。

从Zabbix 3.4.0开始,就已实现了媒介类型的并行处理。因此需要注意的是,如果配置了多个脚本媒介类型,这些脚本可能会被报警进程并行处理。报警进程的总数受StartAlerters 参数 的限制。

用户媒介

媒介类型配置完成后,请转到 管理 → 用户 部分,编辑用户配置文件,将此媒介分配给用户。用户媒介的配置步骤请参见 媒介类型 页面(适用于所有媒介类型)。

注意:定义用户媒介时,Send to 字段不能为空。如果在自定义脚本中不使用此字段,那么请在此字段中输入任何支持的字符组合,以绕过验证要求。