最近疫情影响,大部分都在远程办公,钉钉这个软件马上就被广泛应用,所以我们zabbix也要配置上钉钉收发报警,保证服务可用性。
一、环境介绍:
系统版本:Centos7.6
内核版本:3.10
Python版本:python2.7.5
监控服务:zabbix 4.2 (已升级到4.X版本)
二、创建钉钉群机器人
创建一个群,把需要收到报警信息的人员都拉到这个群内.然后点击群右上角的 群机器人
->添加机器人
->自定义
,记录该机器人的webhook
值!
三、Zabbix server设置
3.1 查看zabbix默认脚本执行路径
[root@zabbix ~]# cat /etc/zabbix/zabbix_server.conf |grep AlertScriptsPath
AlertScriptsPath=/usr/lib/zabbix/alertscripts
3.2 添加dingding.py 脚本
#!/usr/bin/env python
#coding:utf-8
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxx"
user=sys.argv[1]
text=sys.argv[3]
data={
"msgtype": "text",
"text": {
"content": text
},
"at": {
"atMobiles": [
user
],
"isAtAll": False
}
}
headers = {'Content-Type': 'application/json;charset=utf-8'}
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))
3.3 授权
[root@zabbix]# touch /var/log/zabbix/dg-Monitor.log
chown zabbix.zabbix dingding.py
chmod 755 dingding.py
chown zabbix.zabbix /var/log/zabbix/dg-Monitor.log
3.4 测试信息发送
./dingding.py test 158111572*** "这个条测试信息,忽略"
#注意开通python版本2.7.5,并且要有requests模块功能。否则会报错:“ImportError: No module named requests”
#如果版本没有问题,还是找不到,使用下面命令安装模块即可。
[root@zabbix]# yum install python-pip
pip -v
pip install requests
四、Zabbix监控界面设置
4.1、创建报警媒介.
- ALERT.SENDTO
发送参数
- ALERT.SUBJECT
主题参数
- ALERT.MESSAGE
消息参数
4.2、用户添加报警媒介
收件人是钉钉上的手机号码.这里使用Admin管理员用户,在Admin用户的”报警媒介”里添加收件人信息;特别注意:这里只需要添加钉钉群里的任何一个成员的手机号码即可,即添加一个收件人,这样在机器人群里成员都能看到告警信息.
如果添加多个收件人,则机器人群里就会发送多个告警信息,一个收件人发一条信息.
4.3、添加动作
动作里的报警信息和恢复信息都发送给Admin用户.
默认接收人:{TRIGGER.STATUS}: {TRIGGER.NAME}
默认信息:
告警主机:{HOST.NAME}
主机IP: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
恢复操作(确认操作也是一样):
默认接收人:{TRIGGER.STATUS}: {TRIGGER.NAME}
默认信息:
告警主机:{HOST.NAME}
主机IP: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
至此结束,快去试试吧,更多内容请查看 zabbix监控频道。
- QQ精品交流群
-
- 微信公众号
-