Zabbix实现钉钉群告警

简介: 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

相关文章
|
2月前
|
缓存
ecs-centos分区空间大于70时发送钉钉告警并清理
当分区空间大于70时,开始清理并发送钉钉告警。
36 1
|
3月前
|
机器人 关系型数据库 MySQL
shell脚本实现文件自动清理并推送钉钉机器人告警
shell脚本实现文件自动清理并推送钉钉机器人告警
48 1
|
3月前
|
运维 监控 安全
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
85 0
|
8月前
|
监控 Nacos 微服务
集成nacos,使用钉钉发送服务下线告警
我们在集成微服务框架的时候,涉及服务太多,如果是单节点的话,遇到凌晨服务挂起的问题会很麻烦。并且原生的监控也不是很理想。这里结合nacos,再通过钉钉来发送服务下线告警,这样可在第一时间确定服务异常并及时处理。
361 0
|
3月前
|
安全 机器人 Shell
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
46 0
|
3月前
|
运维 监控 安全
【优化篇】调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
【优化篇】调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
71 0
|
18天前
|
监控 关系型数据库 应用服务中间件
zabbix自定义监控、钉钉、邮箱报警
zabbix自定义监控、钉钉、邮箱报警,实验准备,安装,添加监控对象,添加自定义监控项,监控mariadb,监控NGINX,钉钉报警设置,邮件报警
136 0
|
5月前
|
监控 机器人 开发工具
python监控脚本外发钉钉告警
python监控脚本外发钉钉告警
90 1
|
7月前
|
监控 物联网 机器人
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
183 2
|
9月前
|
监控 机器人 Python
Zabbix-实现钉钉群报警
Zabbix-实现钉钉群报警
155 0

热门文章

最新文章

推荐镜像

更多