2020-12-09
1、获取钉钉群机器人的webhook,参考钉钉官方获取方式:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
2、zabbix服务端配置
1、[root@r1 ~]# cat /etc/zabbix/zabbix_server.conf | grep ^AlertScriptsPath
AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@r1 ~]# cd /usr/lib/zabbix/alertscripts
2、[root@r1 alertscripts]# vim dd.py #创建一个python脚本如下图,内容在文章底部
3、添加执行权限&创建脚本中的日志路径&修改文件属主数组
[root@r1 alertscripts]# chmod +x dd.py
[root@SrtAly120 alertscripts]# mkdir -p /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
4、测试脚本:[root@r1 alertscripts]# ./dd.py test test "测试下"
#如果收不到消息,查看下机器人的安全设置如下图,增加个测试的关键字
#可能会报错,某个python的模块没有安装,自行百度安装个对应的模块就好
2、web端配置
1、创建报警媒介 脚本参数:{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
2、给用户添加报警媒介,收件人随便写;之后就可以收到报警信息了
######################################################################
#!/usr/bin/env python
#coding:utf-8
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="替换" #说明:这里改为自己创建的机器人的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()