首页需要在群里面添加好通知机器人(webhook)类型,申请步骤略
申请后得到一个webhook推送地址:
https://oapi.dingtalk.com/robot/send?access_token=xzfsdafdsafXXXXXXXXXXXX
编辑消息推送脚本(python3:需要安装requests模块:pip install requests):
#!/usr/bin/python3
#coding:utf-8
import requests,json,sys,os,datetime
# 机器人的Webhook地址
#webhook="https://oapi.dingtalk.com/robot/send?access_token=87b9fba6fc1b3b2dc692d22eb74415b2c1018d86099178c6ca58bcf95e799daa"
webhook=sys.argv[4]
user=sys.argv[1]
subject=sys.argv[2]
text=sys.argv[3]
data={
"msgtype": "text",
"text": {
"content": text
},
"at": {
"atMobiles": [
# 在web端用户绑定媒介中通过指定用户注册是的手机号,可以通知指定人员,否则只发消息,不艾特具体人
user
],
"isAtAll": False
# 设置为1,则@所有人
# "isAtAll": 1
}
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/var/log/zabbix/dingding.log"):
f=open("/var/log/zabbix/dingding.log","a+")
else:
f=open("/var/log/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()
然后将这个文件放到 /usr/lib/zabbix/alertscripts/dingding.py 位置
添加执行权限
chmod +x /usr/lib/zabbix/alertscripts/dingding.py
测试消息是否可以成功发送
/usr/lib/zabbix/alertscripts/dingding.py 13000000000 test message_content https://oapi.dingtalk.com/robot/send?access_token=xzfsdafdsafXXXXXXXXXXXX
注意:能正常发送后,把 /var/log/zabbix/dingding.log 这个日志文件先删除,不然正常添加到zabbix后,由于用户权限导致脚本执行不能修改这个日志文件而发生执行失败的结果
然后就是添加消息媒介了
打开这个页面 /zabbix.php?action=mediatype.list 添加一个消息媒介
名称:Dingtalk
类型:脚本
脚本名称:dingding.py
脚本参数(4个):
1.{ALERT.SENDTO}
2.{ALERT.SUBJECT}
3.{ALERT.MESSAGE}
4.https://oapi.dingtalk.com/robot/send?access_token=xzfsdafdsafXXXXXXXXXXXX
描述:通过钉钉群WEBHOOK机器人向群中发送通知消息
以及添加【消息内容模板】设置
添加好以后可以点【测试】,看是否发送成功
最后,编辑某一个用户,在【用户资料-报警媒介】页面添加 Dingtalk 这个通知方式以及设置报警级别,通知人填写接收人 手机号 达到@指定人