釘釘在企業運用中已經比較廣泛,且使用郵件等發送告警效果不是很理想,而且釘釘也支持這個功能,所以使用釘釘來告警是一個不錯的選擇。
Zabbix實現釘釘告警
第一步:釘釘建立羣聊(已有羣的跳過)
第二步:添加羣機器人
第三步:配置zabbix-server
~]# yum install -y python-requests #腳本中會用到的一個模塊
~]# cat /usr/local/zabbix/etc/zabbix_server.conf | grep -Ev "#|^$"
...
AlertScriptsPath=/usr/local/zabbix/etc/alertscripts #告警腳本存放目錄,若已經配置就放到相應目錄下
...
~]# cd /usr/local/zabbix/etc
~]# mkdir alertscripts
~]# chown -R zabbix:zabbix alertscripts
~]# cd alertscripts
~]# cat zabbix_send_ding.py #告警腳本
#!/usr/bin/env python
# coding:utf-8
# zabbix dingding
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?access_token=693f641aba0577965a70c23439cdc00f9c0e9b001fa1a1f0839d662495764937" #釘釘機器人生成的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'}
response=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 response.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()
~]# chmod a+x zabbix_send_ding.py
~]# service zabbix-server restart
第四步:添加告警媒介
第五步:添加動作
第六步:綁定發送用戶
綁定成功後即可!