羣機器人是釘釘羣的高級擴展功能,羣機器人能夠將第三方服務的信息聚合到羣聊中,實現自動化的信息同步。例如:經過聚合GitHub,GitLab等源碼管理服務,實現源碼更新同步;經過聚合Trello,JIRA等項目協調服務,實現項目信息同步。不只如此,羣機器人支持Webhook協議的自定義接入,支持更多可能性. 好比咱們可將Zabbix運維報警提醒經過自定義機器人聚合到釘釘羣中,以實現釘釘告警。html
釘釘機器人建立python
登陸釘釘客戶端,建立一個羣,把須要收到報警信息的人員都拉到這個羣內.而後點擊羣右上角的"羣機器人"->"添加機器人"->"自定義",記錄該機器人的webhook值!web
zabbix-server 配置json
[root@SrtAly120 ~]# cat /usr/local/zabbix/etc/zabbix_server.conf |grep ^AlertScriptsPath AlertScriptsPath=/usr/local/zabbix/lib/zabbix/alertscripts 進入到/usr/local/zabbix/alertscripts下編寫dingding.py腳本(腳本中包含釘釘機器人的webhook值): [root@SrtAly120 ~]# cd /usr/local/zabbix/lib/zabbix/alertscripts [root@SrtAly120 alertscripts]# 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=8ea7abd3db4b49a9e898e911920d4899c526ae78f5794c977cfca8b6c0bjsdd" #說明:這裏改成本身建立的機器人的webhook的值 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/log/dingding.log"): f=open("/usr/local/zabbix/log/dingding.log","a+") else: f=open("/usr/local/zabbix/log/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() 賦予腳本執行權限 [root@SrtAly120 alertscripts]# chmod +x dingding.py 建立上面腳本中的日誌路徑 [root@SrtAly120 alertscripts]# mkdir /usr/local/zabbix/log/ [root@SrtAly120 alertscripts]# touch /usr/local/zabbix/log/dingding.log [root@SrtAly120 alertscripts]# chown zabbix.zabbix /usr/local/zabbix/log/dingding.log 手動測試腳本是否能夠正常發送消息 這個條文檔記錄的測試信息,忽略 [root@SrtAly120 alertscripts]# ./dingding.py test gaojing "測試下"
釘釘收到的測試消息以下: api
zabbix web界面配置app
1)建立報警媒介 腳本參數:ALERT.SENDTO ALERT.SUBJECT ALERT.MESSAGE運維
2)給用戶添加報警媒介post
說明:收件人是釘釘上的手機號碼,我這裏使用的是Admin管理員用戶。測試
特別注意:這裏只須要添加釘釘羣裏的任何一個成員的手機號碼便可,即添加一個收件人,這樣在機器人羣裏成員都能看到告警信息.
若是添加多個收件人,則機器人羣裏就會發送多個告警信息,一個收件人發一條信息. url
測試結果:
查看日誌
至此、zabbix 釘釘告警就完成了。