zabbix 钉钉告警


注册钉钉机器人

必须设置关键词

image-20240802204625610

python3脚本告警

环境准备

 yum install python3
 pip3 install requests

脚本准备

cd /usr/lib/zabbix/alertscripts/
vim dingding.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*- 
import requests
import json
import sys
import os
import datetime
webhook = "000000000000000000000000"
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()

其余环境准备

#为脚本添加执行权限
[root@zabbix alertscripts]# chmod +x dingding.py

#修改脚本的属主和属组:
[root@zabbix alertscripts]# chown zabbix.zabbix dingding.py

#创建日志文件:
[root@zabbix alertscripts]# mkdir -p /usr/lib/zabbix/alertscripts/log
 
[root@zabbix alertscripts]# touch usr/lib/zabbix/alertscripts/log/dingding.log
 
[root@zabbix alertscripts]# chown zabbix.zabbix -R /usr/lib/zabbix/alertscripts/log

测试脚本

#py脚本           手机号    关键词   告警信息
./dingding.py 12312312312   告警      test

image-20240802205503915

zabbix-web-服务端相关配置

创建报警媒介
{ALERT.SUBJECT}
{ALERT.MESSAGE}
{ALERT.SENDTO}

image-20240802205922925

报警媒介添加到用户

image-20240802210017361

设置动作关联钉钉


#告警操作内容:
##标题:
服务器:{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}

image-20240802210232651

进行测试

image-20240802210616373

image-20240802210629385