[toc]
zabbix3.4使用钉钉告警
第一步、钉钉机器人创建
打开windows钉钉客户端-->右上角头像处-->机器人管理
选择自定义
选择添加
填写机器人名字和要添加到的群组
这里的webhook值需要写在后续python脚本中
第二步、zabbix-server端编写python脚本
#在zabbix-server端编辑python脚本
[root@zabbix-server alertscripts]# pwd
/usr/lib/zabbix/alertscripts
[root@zabbix-server alertscripts]# cat >/usr/lib/zabbix/alertscripts/dingding.py <<EOF
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://oapi.dingtalk.com/robot/send?xxx" #注意,api_url到后边的一串是一行,且这里的api_url要写成自己企业钉钉中创建的机器人中的webhook
def msg(text):
json_text= {
"msgtype": "text",
"at": {
"atMobiles": [
"17310470653"
],
"isAtAll": False
},
"text": {
"content": text
}
}
print requests.post(api_url,json.dumps(json_text),headers=headers).content
if __name__ == '__main__':
text = sys.argv[1]
msg(text)
EOF
#赋予脚本执行权限
[root@zabbix-server alertscripts]# chmod +x dingding.py
#修改脚本所有者为zabbix
[root@zabbix-server alertscripts]# chown zabbix.zabbix dingding.py
#安装依赖包
[root@zabbix-server ~]# yum -y install python-pip
[root@zabbix-server ~]# pip install requests
#执行脚本进行测试,返回以下内容即为正确,并且钉钉能够收到信息
[root@zabbix-server alertscripts]# ./dingding.py test
{"errmsg":"ok","errcode":0}
第三步、zabbix web界面设置
3.1 创建钉钉告警
管理-->报警媒介类型-->创建媒体类型
填写相关信息,注意脚本参数写 {ALERT.MESSAGE}
右上角小人头-->报警媒介-->添加
3.2 修改告警操作
修改操作标题如下
服务器:{HOST.NAME}发生: {TRIGGER.NAME} 故障!
修改消息内容如下
服务器:{HOST.NAME}发生: {TRIGGER.NAME} 故障!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}
3.3 修改恢复操作
修改恢复标题如下
服务器:{HOST.NAME}: {TRIGGER.NAME} 已恢复!
修改恢复内容如下
服务器:{HOST.NAME}: {TRIGGER.NAME} 已恢复!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
}
3.4 修改确认信息
修改确认标题如下
服务器:{HOST.NAME}: 报警确认
修改确认内容如下
服务器:{HOST.NAME}: 报警确认
{
确认人:{USER.FULLNAME}
时间:{ACK.DATE} {ACK.TIME}
确认信息如下:
"{ACK.MESSAGE}"
问题服务器IP:{HOSTNAME1}
问题ID:{EVENT.ID}
当前的问题是: {TRIGGER.NAME}
}
第四步、钉钉验证
pc端钉钉
手机端钉钉