自定义告警脚本在/usr/local/zabbix/etc/zabbix_server.conf中配置,默认为: AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts警报脚本在Zabbix服务器上执行。 这些脚本位于服务器配置文件中定义的目录中AlertScriptsPath.
Zabbix-Server 在调用脚本的时候,会传递三个变量参数给脚本作为位置参数:$1, $2, $3。 其中:$1 表示收件人,$2 表示主题,$3 表示内容。
注:如果是Python脚本需要搭建好Python环境且安装好相关模块,由于shell为Linux原
生,这里采用shell脚本,脚本如下:
#!/bin/bash LOGFILE="/tmp/dingding.log" :>"$LOGFILE" exec 1>"$LOGFILE" exec 2>&1 url="http://127.0.0.1/zabbix" CURL="/usr/bin/curl" to=$1 subject=`echo $2 | tr '\r\n' '\n'` body=`echo $3 | tr '\r\n' '\n'` ${CURL} 'https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXX' \ -H 'Content-Type: application/json' \ -d """ { \"msgtype\": \"markdown\", \"markdown\": { \"title\":\"${subject}@18******5\", \"text\": \"${body}\" }, \"at\": { \"atMobiles\": [ \"18*******5\", ], \"isAtAll\": false } }"""
CURL参数改成之前获取的机器人的地址
后面的手机号是在发消息时@的那个人的钉钉注册手机号
故障模板:
标题:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障! 消息内容: 告警主机:{HOSTNAME1} 告警IP:{HOST.IP} 告警时间:{EVENT.DATE} {EVENT.TIME} 等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 持续时间:{EVENT.AGE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
恢复和确认的操作一样,模板如下:
恢复:
标题:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复! 内容: 告警主机:{HOSTNAME1} 告警IP:{HOST.IP} 恢复时间:{EVENT.DATE}{EVENT.RECOVERY.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 持续时间:{EVENT.AGE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
确认:
标题:服务器:{HOST.NAME1}: 报警确认 内容: 服务器:{HOST.NAME1}发生: {TRIGGER.NAME}故障! 确认人:{USER.FULLNAME} 时间:{ACK.DATE} {ACK.TIME} 确认信息如下: "{ACK.MESSAGE}" 问题服务器IP:{HOSTNAME1} 问题ID:{EVENT.ID} 当前的问题是: {TRIGGER.NAME}
测试结果如下:
小功告成。
注:shell脚本内容为网上找的,忘记具体网址了,罪过罪过!