一、添加釘釘機器人
1.
2.
復制webhook后面腳本用到:https://oapi.dingtalk.com/robot/send?access_token=36e69dd50bbcc54b7b2a84abe1b452dceb54f1daeca83c185c357662c8037692
二、Zabbix設置
1.查看服務端腳本存放路徑
[root@GYQ-Prod-Zabbix ~]# cat /etc/zabbix/zabbix_server.conf|grep AlertScriptsPath ### Option: AlertScriptsPath # AlertScriptsPath=${datadir}/zabbix/alertscripts AlertScriptsPath=/usr/lib/zabbix/alertscripts
登錄到/usr/lib/zabbix/alertscripts下編寫dingding.py腳本(腳本中包含釘釘機器人的webhook值):
[root@GYQ-Prod-Zabbix ~]# cd /usr/lib/zabbix/alertscripts
[root@zabbix01 monitor_scripts]# cat dingding.py
[root@GYQ-Prod-Zabbix 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=36e69dd50bbcc54b7b2a84abe1b452dceb54f1daeca83c185c357662c8037692" 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/lib/zabbix/logs/dingding.log"): f=open("/usr/lib/zabbix/logs/dingding.log","a+") else: f=open("/usr/lib/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()
創建上面腳本中的日志路徑:
[root@GYQ-Prod-Zabbix alertscripts]# mkdir /usr/lib/zabbix/logs
[root@GYQ-Prod-Zabbix alertscripts]# touch /usr/lib/zabbix/logs/dingding.log
[root@GYQ-Prod-Zabbix alertscripts]# chown zabbix.zabbix dingding.py
[root@GYQ-Prod-Zabbix alertscripts]# chmod 755 dingding.py
[root@GYQ-Prod-Zabbix alertscripts]# chown zabbix.zabbix /usr/lib/zabbix/logs/dingding.log
手動測試腳本發信是否正常:
[root@GYQ-Prod-Zabbix alertscripts]# ./dingding.py test 15377937463 "hehe"
===========================================================
注意:該腳本要求至少python2.6.6版本,且具有requests模塊.
否則會報錯:
Traceback (most recent call last):
File "./dingding.py", line 4, in <module>
import requests,json,sys,os,datetime
ImportError: No module named requests
解決辦法:
yum安裝
[root@zabbix monitor_scripts]# yum install python-pip
[root@zabbix monitor_scripts]# pip -v
[root@zabbix monitor_scripts]# pip install requests
===========================================================
源碼安裝
1.下載:
在它的官網可以下載到安裝包:
https://pypi.python.org/pypi/setuptools
下載路徑:
#wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-12.0.3.tar.gz#md5=f07e4b0f4c1c9368fcd980d888b29a65
2. 安裝
# tar xvf setuptools-12.0.3.tar.gz
# cd setuptools-12.0.3
# python setup.py install
# cd pip-18.0
# python setup.py install
三、設置zabbix報警媒介
1.添加報警媒介類型
腳本參數添加3個:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
2.設置用戶告警
3.添加告警動作
4.
1、報警 {TRIGGER.STATUS}: {TRIGGER.NAME} {TRIGGER.NAME} 故障! 告警主機:{HOST.NAME} 告警IP:{HOST.IP} 監控項目:{ITEM.NAME} 監控取值:{ITEM.LASTVALUE} 告警等級:{TRIGGER.SEVERITY} 當前狀態:{TRIGGER.STATUS} 告警信息:{TRIGGER.NAME} 告警時間:{EVENT.DATE} {EVENT.TIME} 事件ID:{EVENT.ID} 2、報警恢復 {TRIGGER.STATUS}: {TRIGGER.NAME} {TRIGGER.NAME} 已恢復! 告警主機:{HOST.NAME} 告警IP:{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、報警確認 服務器:{HOST.NAME}: 報警確認 確認人:{USER.FULLNAME} 時間:{ACK.DATE} {ACK.TIME} 確認信息如下: "{ACK.MESSAGE}" 問題服務器IP:{HOSTNAME1} 問題ID:{EVENT.ID} 當前的問題是: {TRIGGER.NAME}
結果: