3 自定义告警脚本
概述
如果您对现有的发送警报的媒体类型不满意,还有另一种方法可以做到这一点。 您可以创建一个脚本,以您的方式处理通知。
自定义警报脚本在 Zabbix 服务器上执行。 这些脚本必须位于服务器配置文件 ‘AlertScriptsPath’ 参数中指定的目录中。
以下是自定义警报脚本的示例:
#!/bin/bash
to=$1
subject=$2
body=$3
host=$4
value=$5
cat <<EOF | mail -s "$subject" "$to"
$body
Host: $host
Value: $value
EOF
Zabbix 检查已执行命令和脚本的退出代码。 任何不同于 0 的退出代码都被视为 命令执行 错误。 在这种情况下,Zabbix 将尝试重复失败的执行。
环境变量不会为脚本保留或创建,因此应明确处理它们。
配置
配置自定义告警脚本为媒介类型:
- 进入 告警 → 媒介类型
- 点击 创建媒介类型
媒介类型 页包含一些通用的媒介类型属性如下:
标红星的为必填字段。
下列参数只适用于脚本媒介类型:
参数 | 说明 |
---|---|
脚本名称 | 输入脚本的名称 |
脚本参数 | 添加脚本的命令行参数 脚本参数中支持{ALERT.SENDTO}, {ALERT.SUBJECT}和 {ALERT.MESSAGE} 宏 从Zabbix 3.0版本开始,支持自定义脚本参数. |
关于如何配置默认消息及告警处理的详细内容,请参见 通用媒介类型参数
即使告警脚本没有使用默认消息,此媒介类型使用的操作类型的消息模板仍必须定义,否则通知将无法发送。
如果配置了多个脚本媒体类型,这些脚本可能会被警报器进程并行处理。警报器进程的总数受服务器配置文件 ‘StartAlerters’ 参数限制。
媒体类型测试
要测试已配置的脚本媒体类型:
在媒体类型列表 (/manual/config/notifications/media#overview) 中找到相关脚本。
单击列表最后一列中的 测试;测试表单将在弹出窗口中打开。 测试表单将包含与为脚本媒体类型配置的参数数量相同的参数。
如果需要,编辑脚本参数值。编辑仅影响测试过程;实际值不会更改。
单击 测试。
测试已配置的脚本媒体类型时,{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE} 和用户宏将解析为其值,但与事件相关的宏(例如,{HOST.HOST}、{ITEM.LASTVALUE} 等)将不会解析,因为在测试期间没有相关事件可从中获取详细信息。请注意,{ALERT.SUBJECT} 和 {ALERT.MESSAGE} 宏内的宏也不会解析。例如,如果 {ALERT.SUBJECT} 的值由“问题:{EVENT.NAME}”组成,则 {EVENT.NAME} 宏将不会被解析。
用户媒介
配置完媒介类型后,需进入用户 → 用户为用户配置相应的媒介。配置用户媒介的步骤和配置其它媒介类型的方式类似,可以参见 媒介类型 页.
注意,在定义用户媒介的时候,Send to 字段不能为空。如果该字段在告警脚本中不会被使用,可以输入任意支持的字段以跳过该校验。