原创作者:运维工程师 谢晋
zabbxi实现钉钉报警
- Zabbix 5.0 钉钉报警
- zabbix 钉钉告警机制
- 钉钉配置
- 配置zabbix server
- WEB端配置
Zabbix 5.0 钉钉报警
zabbix 钉钉告警机制
群机器人是钉钉群的高级扩展功能,群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步。例如:通过聚合GitHub,GitLab等源码管理服务,实现源码更新同步;通过聚合Trello,JIRA等项目协调服务,实现项目信息同步。不仅如此,群机器人支持Webhook协议的自定义接入,支持更多可能性. 比如我们可将Zabbix运维报警提醒通过自定义机器人聚合到钉钉群中,以实现钉钉告警。
钉钉配置
- 注册钉钉
到钉钉官网下载pc版钉钉,安装、注册、登陆:
创建群聊和钉钉机器人
创建群聊,把需要收到报警的人员都拉到这个群
【创建项目群】
【添加人员】
【添加智能群助手】
【添加机器人】
【选择自定义】
【告警机器人设置】
【复制webhook,这个链接很重要,后面钉钉脚本需要用到此链接】
配置zabbix server
- 报警脚本配置
取消注释AlertScriptsPath
# grep -Ev '^$|#' /etc/zabbix/zabbix_server.conf | grep ^A
AlertScriptsPath=/usr/lib/zabbix/alertscripts
创建脚本
入该定义的脚本存放路径下创建用来推送告警消息的脚本,使用自己的webhook
# cd /usr/lib/zabbix/alertscripts
# vim 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=3a7191b12c8e8f5580b9bedc9e48938421845e7629c8ff0fe2833f1ede9e8b30" (修改为自己的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("/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()
脚本赋予可执行权限
# chmod +x dingding.py
创建日志文件:
# touch /var/log/zabbix/dingding.log
# chown zabbix.zabbix /var/log/zabbix/dingding.log
手动测试脚本是否可以正常发送消息
# ./dingding.py xiejin test “这是条告警测试信息,请忽略”
【发送成功】
WEB端配置
- 创建报警媒介
【管理——报警媒介类型——创建媒体类型】
添加媒介名称,类型脚本,脚本名称为刚创建的dingding.py,点击更新
- 添加动作
配置——动作——创建动作
创建动作名称,并添加一个条件,触发报警条件为大于等于警告
添加操作和恢复操作
告警操作
主题:
Problem: {EVENT.NAME}
消息:
-=【告警啦】=-
告警组:{TRIGGER.HOSTGROUP.NAME}
告警主机:{HOSTNAME1}
告警主机别名:{HOST.NAME}
主机IP:{HOST.IP}
主机描述:{HOST.DESCRIPTION}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
警报类别:{TRIGGER.NAME}
当前状态:{ITEM.LASTVALUE}
告警平台:http://192.168.10.172/zabbix
告警恢复
主题:故障恢复:{EVENT.NAME}
消息:
恢复主机:{HOSTNAME1}
恢复时间:{EVENT.DATE} {EVENT.TIME}
主机IP:{HOST.IP}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
点击添加
可以看到新加的动作
- 配置报警媒介
管理——用户——报警媒介——添加 - 定义需发送消息的告警级别
- 配置完成即可。
- 测试报警效果
将一台监控主机关闭 - 重新开机