设置钉钉告警
创建钉钉群组,添加自定义机器人,添加

保存好生成的webhook之后要用
在zabbix服务器上
安装python并生成环境:yum install python3
yum install -y python3-pip
pip3 install requests
创建日志文件
mkdir /usr/lib/zabbix/alertscripts/log
touch /usr/lib/zabbix/alertscripts/log/dingding.log
mkdir -p /usr/lib/zabbix/log/
touch /usr/lib/zabbix/log/dingding.log
chown zabbix.zabbix -R /usr/lib/zabbix/log/
生成python脚本
vim /usr/lib/zabbix/alertscripts/dingding.py
#!/usr/bin/env python
-*- coding: utf-8 -*-
import requests
import json
import sys
import os
import datetime
webhook = "https://oapi.dingtalk.com/robot/send?access_token=237132311231w4ru3rweehfiuqeor21o34u1923412werqwrq223"
user=sys.argv[1]
subject=sys.argv[2]
text=sys.argv[3]
data={
"msgtype": "text",
"text": {
"content": "%s%s"%(subject,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/alertscripts/log/dingding.log"):
f=open("/usr/lib/zabbix/alertscripts/log/dingding.log","a+")
else:
f=open("/usr/lib/zabbix/alertscripts/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()
!!!注意替换webhook!!!
给权限:chmod +x dingding.py
chown zabbix.zabbix dingding.py
试验脚本是否可用:./dingding.py 钉钉账号 告警 test
web页面操作
告警-->媒介-->创建媒介类型 

{ALERT.SUBJECT}
{ALERT.MESSAGE}
{ALERT.SENDTO}

告警-->动作-->触发器动作->创建动作




#告警操作内容:
##标题:
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
##消息内容:
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
#恢复操作内容
##标题:
服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
##消息内容:
告警主机:{HOST.NAME}
告警地址:{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}