zabbix告警通知是zabbix触发告警时候执行脚本,通过传参获取报警具体信息,再由脚本调用相关接口给用户组及用户发送通知的过程
zabbix服务端有脚本的存放路径,默认路径为 /usr/lib/zabbix/alertscripts,以下脚本内容仅供参考
#!/bin/bash export LANG=en_US.UTF-8 #PHONE=$(echo $1 |sed 's/,/", "/g') Subject=`echo -e "$3" |awk 'NR==3 {print $0}'` #定义主题,页面配置的第二个参数可直接写$2,一下是根据公司要求,所以变动了一下 MESSAGE=$3 #页面配置的第三个参数,主要是报警内容 echo $1 $2 $3 >>/tmp/sms.log curl -H "xxxxxxxxxx" -H "xxxxxxxxxxxxxx" -XPOST 消息转发的接口地址 -d """ { "applicationId":"xxxxxxxxxxx", "topic":"devops", "expireTime":1000, "dev":false, "msgType":true, "notify":true "messageBody":"{'alertBody':'"devops-prod"','alertTitle':'$Subject','data':'$MESSAGE'}" } echo $? >/tmp/sendsms.log
curl中定义的内容是由消息平台提供给和决定的
接下来是web页面配置:
1)创建报警媒介类型
定义的脚本参数就是出发报警时候执行脚本要传进去的参数,$1,$2,$3 分别对用手机号等信息,主题,具体内容(动作的操作中定义获取)
2)配置用户报警媒介
3)创建报警触发动作
配置消息内容,发送的用户群组及用户等
更新保存退出,测试出发报警是否成功
附:消息内容定义
1 生产环境zabbix告警!!! 告警主机:{HOST.IP} 告警信息:{TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 当前状态:{TRIGGER.STATUS} : {ITEM.VALUE} 事件ID:{EVENT.ID} 2 3 4 生产环境zabbix告警恢复 恢复主机:{HOST.IP} 恢复信息:{TRIGGER.NAME} 恢复详情:{ITEM.NAME}:{ITEM.VALUE} 恢复时间:{EVENT.DATE} {EVENT.RECOVERY.TIME} 恢复等级:{TRIGGER.SEVERITY} 时间ID:{EVENT.ID}
最终结果如下: