Zabbix实现钉钉群告警

https://cloud.tencent.com/developer/article/1842957
需求:
Zabbix告警通知发送到钉钉群组
钉钉报警时基于zabbix,访问钉钉应用接口去推送的报警消息,所以我们需要一个在钉钉创建一个报警应用。
版本:
Zabbix:4.0.7
Python:2.7.5
一、钉钉配置
1、创建群组、添加告警机器人
钉钉的聊天界面,点击发起群聊:
在这里插入图片描述
在这里插入图片描述

钉钉要3个人才能建群,所以需要添加两个人即可。
2、点击群设置 → 智能群助手 → 添加更多 → 添加机器人 → 自定义 :
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击添加,输入机器人名字即可

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

生成了一个 webhook ,先复制,后面会用到。
二、zabbix配置
1、创建脚本
vi /etc/zabbix/zabbix_server.conf

:/alertscripts 找到这一行(alertscripts是zabbix-server自定义脚本的目录,所有自定义的脚本都放在此处)

在这里插入图片描述

cd /usr/lib/zabbix/alertscripts/

vi dingding.py

#!/usr/bin/python
# -*- coding: utf-8 -*
import requests
import json
import sys
import os
import datetime
#webhook = "https://xxxxxxxxxx" 钉钉机器人擎天柱的webhook地址
#第一个参数应该是收件人,更换成了机器人地址
#第二个参数应该是主题,更换成了收件人
#第三个参数是消息
#具体参数设置在zabbix报警媒介类型
webhook=sys.argv[1]
user=sys.argv[2]
text=sys.argv[3]
data={
        "msgtype":"text",
        "text":{
                "content":text
        },
        "at":{
                "atMobiles":[
                        user
                        ],
                        "isAtAll":True
            #"isAtAll": True 发送给群里面的所有人(不想让其他人收到报警这里填False即可)
        }
}
headers={'Content-Type':'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
#if os.path.exists("/usr/lib/zabbix/alertscripts/dingding.log"):
#       f=open("/usr/lib/zabbix/alertscripts/dingding.log","a+")
#else:
#       f=open("/usr/lib/zabbix/alertscripts/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()

:wq保存退出

chmod 755 dingding.py

手动测试是否能发消息到钉钉
./dingding.py “ERROR could not found java-scripts”
注意这里的内容包含了钉钉自定义的关键词ERROR,如果没有关键词你是发不过去的

三、Zabbix web界面设置
1、添加报警脚本到zabbix:
步骤:管理——报警媒介类型——创建报警媒介类型——更新​

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Problem: {EVENT.NAME}
Problem started at {EVENT.TIME} on {EVENT.DATE}
Problem name: {EVENT.NAME}
Host: {HOST.NAME}
Severity: {EVENT.SEVERITY}
Operational data: {EVENT.OPDATA}
Original problem ID: {EVENT.ID}
{TRIGGER.URL}
2、配置用户
收件人填写钉钉群机器人的Webhook地址
在这里插入图片描述

3、创建动作:配置>>动作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

操作:
默认标题:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME} 故障!
消息内容:
告警主机: {HOSTNAME1}
主机地址: {HOST.IP}
告警等级: {TRIGGER.SEVERITY}
监控项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}
告警信息: {TRIGGER.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}
事件ID: {EVENT.ID}
恢复操作:
默认标题:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME} 已恢复!
消息内容:
告警主机: {HOSTNAME1}
主机地址: {HOST.IP}
告警等级: {TRIGGER.SEVERITY}
监控项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}
告警信息: {TRIGGER.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}
事件ID: {EVENT.ID}
4、进行钉钉报警测试
[root@JDCloud_Server alertscripts]# python dingding.py Test测试 132xxxx

在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏诗曼CharmaineXia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值