登陆钉钉客户端,建立一个群,把须要收到报警信息的人员都拉到这个群内.而后点击群右上角的"群机器人"->"添加机器人"->"自定义",记录该机器人的webhook值!python
cat /usr/local/zabbix/etc/zabbix_server.conf|grep AlertScriptsPath AlertScriptsPath=/usr/local/zabbix/monitor_scripts
cd /usr/local/zabbix/monitor_scripts/ cat dingding.py #!/usr/bin/env python #coding:utf-8 #zabbix钉钉报警 import requests,json,sys,os,datetime webhook="https://oapi.dingtalk.com/robot/send?access_token=95a25d8b8f0945ecd0f0ac992f4be80d3f738ded0acb199ff356426e70fca675" user=sys.argv[1] text=sys.argv[3] data={ "msgtype": "text", "text": { "content": text }, "at": { "atMobiles": [ user ], "isAtAll": False } } headers = {'Content-Type': 'application/json'} x=requests.post(url=webhook,data=json.dumps(data),headers=headers) if os.path.exists("/usr/local/zabbix/logs/dingding.log"): f=open("/usr/local/zabbix/logs/dingding.log","a+") else: f=open("/usr/local/zabbix/logs/dingding.log","w+") f.write("\n"+"--"*30) if x.json()["errcode"] == 0: f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text)) f.close() else: f.write("\n"+str(datetime.datetime.now()) + " " + str(user) + " " + "发送失败" + "\n" + str(text)) f.close()
touch /usr/local/zabbix/logs/dingding.log chown zabbix.zabbix dingding.py chmod 755 dingding.py chown zabbix.zabbix /usr/local/zabbix/logs/dingding.log
./dingding.py test 13611027803 "这是一条测试信息,忽略"
注意:该脚本要求至少python2.6.6版本,且具备requests模块.web
不然会报错:json
Traceback (most recent call last): File "./dingding.py", line 4, in <module> import requests,json,sys,os,datetime ImportError: No module named requests
解决办法:api
pip install requests
钉钉上收到的测试信息以下:app
收件人是钉钉上的手机号码.这里使用Admin管理员用户,在Admin用户的"报警媒介"里添加收件人信息
特别注意:这里只须要添加钉钉群里的任何一个成员的手机号码便可,即添加一个收件人,这样在机器人群里成员都能看到告警信息.
若是添加多个收件人,则机器人群里就会发送多个告警信息,一个收件人发一条信息. ide
动做里的报警信息和恢复信息都发送给Admin用户.post
操做 默认接收人:{TRIGGER.STATUS}: {TRIGGER.NAME} 默认信息: 告警主机:{HOST.NAME} 主机IP: {HOST.IP} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID: {EVENT.ID} 恢复操做(确认操做也是同样): 默认接收人:{TRIGGER.STATUS}: {TRIGGER.NAME} 默认信息: 告警主机:{HOST.NAME} 主机IP: {HOST.IP} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID: {EVENT.ID}
而后进行测试,好比关闭一台被监控机器的10050端口,过一下子,查看下钉钉上的报警信息,以下:测试
还能够查看dingding.log日志,看看告警信息发送状况:url