登录钉钉客户端,创建一个群,把需要收到报警信息的人员都拉到这个群内.
然后点击群右上角 的"群机器人"->"添加机器人"->"自定义",
记录该机器人的webhook值。
添加机器人 在钉钉群中,找到只能群助手 添加机器人 选择自定义机器人
添加 添加两个自定义关键字 [故障][恢复] 完成
将链接地址记住
钉钉报警脚本 Python版本 切记,脚本中的webhook一定要把里边的内容换成刚才机器人的链接地址
[root@zabbix-server ~]#
vim /usr/local/zabbix/share/zabbix/alertscripts/dingding.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
import datetime
webhook="这里写刚刚给的webhook那一长串" #更改这里
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/dingding.log"):f=open("/usr/lib/zabbix/dingding.log","a+")
else:f=open("/usr/lib/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()#解决Python脚本中存在的问题[root@zabbix-server ~]# chmod +x /usr/local/zabbix/share/zabbix/alertscripts/dingding.py#使用在线epel源安装[root@zabbix-server ~]# yum -y install python-pip[root@zabbix-server ~]# curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py python get-pip.py #pip2.7版本的用这个命令[root@zabbix-server ~]# pip install requests --upgrade #安装模板[root@zabbix-server ~]# mkdir -p /usr/lib/zabbix[root@zabbix-server ~]# touch /usr/lib/zabbix/dingding.log
测试
[root@zabbix-server ~]# /usr/local/zabbix/share/zabbix/alertscripts/dingding.py 手机号(注册钉钉的手机号) 关键字(故障) 故障原因(test) [root@zabbix-server ~]# cat /usr/lib/zabbix/dingding.log
web添加选项
管理-->报警媒介类型-->创建媒体类型
点击右上角头像-->报警媒介-->添加
类型:dingding
收件人:钉钉地址 然后点击更新
修改动作
配置-->动作-->点击-->操作-->编辑-->仅送到dingding
邮件格式如下:
默认接收人内容:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
默认信息内容:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}