登陸釘釘客戶端,建立一個羣,把須要收到報警信息的人員都拉到這個羣內.而後點擊羣右上角的"羣機器人"->"添加機器人"->"自定義",記錄該機器人的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