3 自定义告警脚本
概述
如果当前的告警媒介类型无法满足您的要求,您可以创建一个自定义的脚本对告警通知进行处理。
告警脚本在Zabbix服务器上执行。这些脚本放置于服务器配置文件 configuration file中定义的 AlertScriptsPath目录下。
以下是一个自定义告警脚本的示例:
#!/bin/bash
to=$1
subject=$2
body=$3
cat <<EOF | mail -s "$subject" "$to"
$body
EOF
从3.4版本开始,Zabbix会检查执行的命令和脚本的退出代码。任何不为0 的退出代码都将被视为command execution 错误. 在这种情况下,Zabbix会尝试重复执行。
环境变量不会为脚本保留或创建,因此它们应该被明确处理。
配置
配置自定义告警脚本为媒介类型:
- 进入 管理 → 媒介类型
- 点击 创建媒介类型
媒介类型 页包含一些通用的媒介类型属性如下:
标红星的为必填字段。
如下参数只适用于脚本媒介类型
参数 | 说明 |
---|---|
Script name | 输入脚本的名称 |
Script parameters | 添加脚本的命令行参数 {ALERT.SENDTO}, {ALERT.SUBJECT}和 {ALERT.MESSAGE} 宏 在脚本参数中是支持的 从3.0版本开始,Zabbix开始支持自定义脚本参数. |
关于如何配置默认消息及告警处理的详细内容,请参见 通用媒介类型参数
即使告警脚本没有使用默认消息,此媒体类型使用的操作类型的消息模板仍必须定义,否则通知将无法发送。
从Zabbix 3.4.0版本开始实现了多个告警媒介并行处理, 所以需要注意的是,当配置了多个告警脚本时,这些脚本是可以被告警进程并行处理的. 告警进程的进程数可以通过Zabbix Server的配置项StartAlerters参数进行限制。
用户媒介
配置完媒介类型后,需进入管理 → 用户为用户配置相应的媒介。配置用户媒介的步骤和配置其它媒介类型的方式类似,可以参见 媒介类型 页.
注意,在定义用户媒介的时候,Send to 字段不能为空。如果该字段在告警脚本中不会被使用,可以输入任意支持的字段以跳过该校验。