效果图:
发送日志图:
环境需求:
zabbix需要能连接互联网
python 2 3,requests模块
钉钉配置
需要新建一个钉钉群,群里面添加一个机器人即可。点击加入一个自定义机器人
这里需要记住webhook,脚本后面需要
zabbix配置
进入zabbix自定义脚本目录,在zabbix server安装目录定义的
这里我的conf配置文件在/usr/local/zabbix/etc/zabbix_server.conf
里面定义的脚本执行目录是
AlertScriptsPath=/usr/local/zabbix/alertscripts
在/usr/local/zabbix/alertscripts下面新建一个dingding.py,这里修改
webhook="你的钉钉机器人地址"
vim /usr/local/zabbix/alertscripts/dingding.py #!/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("/tmp/zabbix_dingding.log"): f=open("/tmp/zabbix_dingding.log","a+") else: f=open("/tmp/zabbix_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()赋予权限:chmod +x /usr/local/zabbix/alertscripts/dingding.py
zabbix web 设置
创建一个报警媒介
管理-->报警媒介类型-->创建媒介类型
新建一个钉钉的报警,脚本名称就是我们脚本名dingding.py
用户添加报警媒介
收件人是钉钉上的手机号码
添加报警动作
这里就完成了
问题:如果一条多个报警,且提示报警失败,请将/tmp/zabbix_dingding.log设置为zabbix用户和用户组
脚本测试:
python dingding.py 报警手机号码 test "报警类容"
评论区