当前位置: 首页 > java >正文

Ubuntu Zabbix 钉钉报警

文章目录

    • 概要
    • Zabbix警监控脚本
    • 技术细节
    • 配置zabbix告警

概要

提示:本教程用于Ubuntu ,zabbix7.0

Zabbix警监控脚本

提示:需要创建一个脚本

#检查是否有 python3 和版本
root@zabbix:~# python3 --version 
Python 3.12.3

在/usr/lib/zabbix/alertscripts/目录中创建一个名称为dingding_alert.py的Python脚本;内容如下;

#!/usr/bin/env python3
# -*- coding: utf-8 -*-import requests
import json
import sys
import os
import datetime# 钉钉机器人 Webhook 地址
webhook = "这里填写创建的机器人Webhook 地址"# 日志文件路径
log_file = "/var/log/zabbix/dingding_alert.log"# 参数检查
if len(sys.argv) < 4:print("Usage: dingding_alert.py <phone> <subject> <text>")sys.exit(1)# 读取命令行参数
user = sys.argv[1]
subject = sys.argv[2]
text = sys.argv[3]# ✅ 修改内容:加上关键词前缀 **这里要与钉钉安全设置的名称一致**
msg = f"【zabbix告警】\n{subject}\n{text}"# 构造消息内容
payload = {"msgtype": "text","text": {"content": msg},"at": {"atMobiles": [user],"isAtAll": False}
}headers = {'Content-Type': 'application/json'}
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")# 确保日志目录存在
os.makedirs(os.path.dirname(log_file), exist_ok=True)# 发送钉钉消息
try:response = requests.post(url=webhook, data=json.dumps(payload), headers=headers, timeout=5)result = response.json()with open(log_file, "a+") as f:f.write("\n" + "=" * 60)f.write(f"\n[{now}] 用户: {user}")f.write(f"\n请求状态码: {response.status_code}")f.write(f"\n返回结果: {result}")f.write(f"\n告警内容:\n{msg}")if result.get("errcode") == 0:f.write("\n发送状态: ✅ 成功\n")else:f.write("\n发送状态: ❌ 失败\n")except Exception as e:with open(log_file, "a+") as f:f.write("\n" + "=" * 60)f.write(f"\n[{now}] 用户: {user}")f.write(f"\n异常发生: {str(e)}")f.write(f"\n告警内容:\n{msg}")f.write("\n发送状态: ❌ 失败\n")

技术细节

提示:必须条件
在这里插入图片描述
在这里插入图片描述

提示:创建一个存放dingding_alert存放日志的文件;

root@zabbix:~# touch /var/log/zabbix/dingding_alert.log
root@zabbix:~# chown zabbix:zabbix /var/log/zabbix/dingding_alert.log
#为脚本添加可执行权限;
root@zabbix:~# chmod a+x /usr/lib/zabbix/alertscripts/dingding_alert.py
#测试脚本的准确性;
root@zabbix:~# python3 /usr/lib/zabbix/alertscripts/dingding_alert.py 138000000 subject of testing "This is a test information."

在这里插入图片描述

配置zabbix告警

提示:创建报警媒介类型:
在这里插入图片描述
在这里插入图片描述
提示:脚本参数::

{ALERT.SENDTO}
#对应脚本中的,user=sys.argv[1](发给钉钉群中哪个用户)。{ALERT.SUBJECT}
#发送的信息的标题,在”报表”的”动作日志”中可以看到。{ALERT.MESSAGE}
#对应脚本中的,text=sys.argv[3](发送的报警内容)。

创建报警动作:
在这里插入图片描述
在这里插入图片描述
添加触发器动作:
在这里插入图片描述
这里以system name has changed为例,意味着如果设备的名称被修改,就会触发告警。
在这里插入图片描述
参数解读:

“主题”对应”钉钉告警”媒介中的:{ALERT.SUBJECT}
“消息”对应”钉钉告警”媒介中的:{ALERT.MESSAGE}

主题:
故障名称(触发器名称):{EVENT.NAME}

消息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

恢复操作基本相同,添加细节操作

主题:
故障恢复:{EVENT.NAME}

消息:
恢复主机:{HOSTNAME1}
恢复时间:{EVENT.DATE}{EVENT.RECOVERY.TIME}
主机IP:{HOST.IP}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

给用户添加报警媒介
在这里插入图片描述

在这里插入图片描述

触发告警
登录到交换机POE-S5735S;修改交换机的设备名称;等待几分钟,查看报警情况。
[POE-S5735S]sysname POE-SWITCH-2025

在这里插入图片描述

在这里插入图片描述

http://www.xdnf.cn/news/9687.html

相关文章:

  • 职坐标AI算法实战:TensorFlow/PyTorch深度模型
  • 【案例分享】蓝牙红外线影音遥控键盘:瑞昱RTL8752CJF
  • Python量化交易12——Tushare全面获取各种经济金融数据
  • LVS + Keepalived高可用群集
  • LVS-Keepalived高可用群集
  • 【unity游戏开发——编辑器扩展】EditorApplication公共类处理编辑器生命周期事件、播放模式控制以及各种编辑器状态查询
  • 算法-js-子集
  • 【论文精读】2024 CVPR--Upscale-A-Video现实世界视频超分辨率(RealWorld VSR)
  • 【计算机常识】--环境变量
  • 双路物理CPU机器上安装Ubuntu并部署KVM以实现系统多开
  • k8s上运行的mysql、mariadb数据库的备份记录
  • 低代码——表单生成器Form Generator详解(二)——从JSON配置项到动态渲染表单渲染
  • vscode调试stm32,Cortex Debug的配置文件lanuch.json如何写,日志
  • 《P2324 [SCOI2005] 骑士精神》
  • uniapp开发企业微信小程序时 wx.qy.login 在uniapp中使用的时候,需要导包吗?
  • TCP连接关闭过程的技术解析:从四次挥手到资源释放
  • 变频器从入门到精通
  • 【达梦数据库】临时表空间不足
  • MySQL 查询语句的执行顺序
  • 【Rust模式与匹配】Rust模式与匹配深入探索与应用实战
  • 变更数据捕获(CDC)与流处理引擎实现医疗数据实时同步(下)
  • 【C语言】函数指针及其应用
  • Python基础 | jupyter工具的安装与基本使用
  • AI 眼镜新纪元:贴片式TF卡与 SOC 芯片的黄金组合破局智能穿戴
  • 油猴脚本开发基础
  • 苹果公司计划按年份来重命名重大的软件,将升级iOS 18软件至iOS 26
  • Apache Kafka 实现原理深度解析:生产、存储与消费全流程
  • 如何将 WSL 的 Ubuntu-24.04 迁移到其他电脑
  • 【C语言极简自学笔记】项目开发——扫雷游戏
  • 【AI论文】论文转海报:迈向从科学论文到多模态海报的自动化生成