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

【Zabbix 多渠道报警全攻略(附图文教程):钉钉 / 企微 / 飞书 / 邮箱配置,含前置环境搭建(监控项、触发器、脚本与动作创建)、完整配置流程(脚本添加、媒介创建、关联授权)与功能测试】

提示:本文原创作品,良心制作,干货为主,简洁清晰,一看就会

Zabbix钉钉/企微/飞书/邮箱报警

  • 一、前置环境
    • 1.1 实验环境介绍
    • 1.2 创建监控项
    • 1.3 创建触发器
    • 1.4 创建脚本
    • 1.5 创建动作
    • 1.6 测试nginx能否重启
  • 二、钉钉报警
    • 2.1 创建机器人
    • 2.2 添加脚本
    • 2.3 创建媒介
    • 2.4 用户关联媒介
    • 2.5 动作关联媒介
    • 2.6 测试报警
  • 三、企微/飞书报警
    • 3.1 创建机器人
    • 3.2 添加脚本
    • 3.3 创建媒介
    • 3.5 用户关联媒介
    • 3.6 动作关联媒介
    • 3.7 测试报警
  • 四、邮箱报警
    • 4.1 邮箱开启授权
    • 4.2 创建媒介
    • 4.3 动作关联媒介
    • 4.4 测试报警

一、前置环境

1.1 实验环境介绍

我先说一下我的环境

IP地址主机名部署软件节点作用及职责安装配置状态
192.168.136.134zabbix-server1. Zabbix Server
2. Zabbix Agent
3. MySQL
4. Apache
监控系统核心节点,负责接收各被监控节点上报的数据,同时承担数据存储、告警触发及监控面板展示的核心职责已完成安装与配置
192.168.136.135zabbix-node11. Zabbix Agent
2. 业务被监控软件
业务侧被监控节点,通过Zabbix Agent采集本地系统资源与业务软件运行状态数据,并实时上报至Zabbix Server已完成安装与配置

我的环境比较简单,这里我不再演示怎么搭建环境,不清楚的小伙伴可以看我这篇文章https://blog.csdn.net/m0_63756214/article/details/156421867?spm=1001.2014.3001.5501

什么时候我们有报警需求?当监控指标出现异常,需要 Zabbix 及时推送告警通知时,需先创建对应监控项,再为该监控项配置触发器;触发器触发后,将执行预设动作(如运行指定命令或发送告警消息)

接下来我会做的事如下:

  1. 创建监控项;2. 配置触发器,在监控项数据异常时触发;3.创建脚本,执行重启nginx的命令;4.创建媒介发送消息;5. 创建动作,关联媒介,触发器触发后自动执行命令并发送告警消息

本次将以监控 Nginx 80 端口为例进行实操演示


1.2 创建监控项

新增一个监控项


1.3 创建触发器




1.4 创建脚本

这一步的作用是,当nginx宕机后会执行脚本重启nginx



1.5 创建动作

这里我们可以先创建动作,之后再关联媒介




1.6 测试nginx能否重启

手动关闭nginx模拟故障,看动作能不能正确触发
点击“问题”中可以看到,我们手动关闭后nginx被zabbix自动重启

确认上述配置无误后,即可开始配置消息报警。本实验核心是讲解告警配置方法,即便不添加上述脚本也能完成演示;但为了内容更详尽,这里还是对脚本做了说明



二、钉钉报警

2.1 创建机器人





2.2 添加脚本

#在zabbix-server中操作root@zabbix-server:~# python3 -V #先看一下有没有python3的环境;如果你是centos7系统要另外去配置python的环境Python3.6.9 root@zabbix-server:~# apt -y install python3-pip #安装python3-pip工具root@zabbix-server:~# pip3 install requests #安装requests库root@zabbix-server:~# cd /usr/lib/zabbix/alertscripts/ #这个目录是专门用来放脚本的root@zabbix-server:/usr/lib/zabbix/alertscripts# lsroot@zabbix-server:/usr/lib/zabbix/alertscripts# vim dingding.py#!/usr/bin/env python3importrequests,json,sys,os,datetime# 钉钉机器人webhook地址webhook="粘贴webhook地址"# 处理参数:兼容测试和Zabbix调用场景user=sys.argv[1]iflen(sys.argv)>=2else""# 测试时如果只传1个参数,文本用第一个参数;Zabbix调用时用第3个参数text=sys.argv[3]iflen(sys.argv)>=4elsesys.argv[1]# 构建钉钉消息体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)# 确保日志目录存在log_dir="/var/log/zabbix"ifnot os.path.exists(log_dir): os.makedirs(log_dir)# 写入日志(UTF-8编码避免中文乱码)log_file=os.path.join(log_dir,"dingding.log")with open(log_file,"a+",encoding="utf-8")as f: f.write("\n"+"--"*30)ifx.json()["errcode"]==0: f.write(f"\n{datetime.datetime.now()} {user} 发送成功\n{text}")else: f.write(f"\n{datetime.datetime.now()} {user} 发送失败\n{text}")root@zabbix-server:/usr/lib/zabbix/alertscripts# chmod +x dingding.pyroot@zabbix-server:/usr/lib/zabbix/alertscripts# ./dingding.py "问题" #测试一下脚本

查看钉钉收到消息


2.3 创建媒介

去zabbix界面上操作

消息模板中一定要包含我们刚才在钉钉中创建的关键字,不然会收不到消息


2.4 用户关联媒介

待会我们需要一个用户去发送消息,所以该用户需要有媒介的权限



2.5 动作关联媒介

选择我们刚才创建的动作



2.6 测试报警

手动停掉nginx模拟故障,然后去"问题"中查看,可以看到执行了两部动作:执行重启命令和发送消息



三、企微/飞书报警

企微和飞书的设置方式一样,这里我拿企微做例子

3.1 创建机器人



3.2 添加脚本

root@zabbix-server:/usr/lib/zabbix/alertscripts# cd /usr/lib/zabbix/alertscripts/root@zabbix-server:/usr/lib/zabbix/alertscripts# vim weixi.py#!/usr/bin/env python3importrequests, json, sys, os, datetime# ==================== 替换成你的企业微信机器人webhook ====================WEBHOOK_URL="替换成你的企业微信机器人webhook"# ======================================================================# 处理告警文本参数(无参数用默认值,有参数则拼接所有传入的参数)alert_text="Zabbix默认告警:无具体信息"iflen(sys.argv)>=2: alert_text=" ".join(sys.argv[1:])# 拼接所有传入的参数作为告警文本# 构建企业微信纯文本消息体(移除所有@人相关字段)data={"msgtype":"text","text":{"content":alert_text# 仅保留告警文本,无@人逻辑}}headers={'Content-Type':'application/json;charset=utf-8'}response_result={"errcode":-1,"errmsg":"未发送请求"}# 发送请求(保留UTF-8编码解决中文问题)try: json_str=json.dumps(data,ensure_ascii=False)json_bytes=json_str.encode('utf-8')resp=requests.post(url=WEBHOOK_URL,data=json_bytes,headers=headers,timeout=10)resp.raise_for_status()response_result=resp.json()except Exception as e: response_result["errmsg"]=f"请求失败:{str(e)}"# 确保日志目录存在log_dir="/var/log/zabbix"ifnot os.path.exists(log_dir): os.makedirs(log_dir,exist_ok=True)# 写入日志(移除手机号相关记录)log_file=os.path.join(log_dir,"weixin.log")with open(log_file,"a+",encoding="utf-8")as f: f.write("\n"+"--"*35)log_content=(f"\n时间:{datetime.datetime.now()}"f"\n告警文本:{alert_text}"f"\n发送结果:{'成功' if response_result['errcode'] == 0 else '失败'}"f"\n错误信息:{response_result['errmsg']}")f.write(log_content)root@zabbix-server:/usr/lib/zabbix/alertscripts# chmod +x weixi.pyroot@zabbix-server:/usr/lib/zabbix/alertscripts# ./weixi.py "Zabbix告警:Nginx 80端口异常" #测试一下脚本能不能发送

企微接受消息成功


3.3 创建媒介

参考钉钉报警

3.5 用户关联媒介

参考钉钉报警

3.6 动作关联媒介

参考钉钉报警


3.7 测试报警

手动停掉nginx模拟故障,然后去"问题"中查看,可以看到执行了两部动作:执行重启命令和发送消息



四、邮箱报警

4.1 邮箱开启授权

去邮箱的设置中开启这两个服务,然后复制弹窗中的授权码


4.2 创建媒介

接下来我们创建媒介

添加完成后,可以测试一下邮件能不能发生成功

查看163邮箱,发现邮件接受成功


4.3 动作关联媒介

这个时候我们回到刚才创建的action_trigger_nginx_listen_80这个动作,然后添加两个操作


下面这一步是保证Admin和刚才我们创建的媒介关联


4.4 测试报警

接下来我们进行测试,验证 Nginx 启停状态是否能正常触发邮件通知
进入监测→问题查看状态,正常情况下 Nginx 无异常;手动停掉 Nginx 模拟故障,触发器会触发关联动作尝试重启服务
若重启失败,将通过问题模板发送告警邮件;若重启成功,则通过问题恢复模板发送通知邮件



注:
文中若有疏漏,欢迎大家指正赐教。
本文为100%原创,转载请务必标注原创作者,尊重劳动成果。
求赞、求关注、求评论!你的支持是我更新的最大动力,评论区等你~

http://www.jsqmd.com/news/221405/

相关文章:

  • 逻辑回归中的条件概率
  • 从零实现:搭建ARM64蓝屏调试环境并进行WinDbg分析
  • DevicePairingFolder.dll文件丢失找不到问题 免费下载方法分享
  • 研究发现商业AI模型可完整还原《哈利·波特》原著内容
  • DDACLSys.dll文件丢失找不到问题 免费下载分享
  • Pspice在OrCAD Capture中的仿真探针使用深入解析
  • ddodiag.exe文件丢失找不到问题 免费下载方法
  • 从零实现AUTOSAR NM报文唤醒的软件配置
  • UVC协议实现高清视频传输:项目应用详解
  • dll一键修复工具 dll运行库修复工具下载
  • Razer在2026年CES展会推出全息AI伴侣项目
  • Vitis安装与Xilinx USB下载器驱动兼容性完整指南
  • 模拟电路基础知识总结:新手入门必看的十大核心概念
  • 独立IP服务器有哪些常见的应用场景?
  • 模拟信号基础知识体系梳理:完整学习路径
  • 救命神器 9款一键生成论文工具测评:继续教育论文写作全攻略
  • 从零搭建鲲鹏 HPC 环境:从朴素矩阵乘法到高性能实现
  • 双卧轴搅拌机与立轴行星式搅拌机哪种设备好?
  • 数字化SPC项目申报,看这个投资回报评估就够了...
  • 基于DWA的动态环境下多智能体自主避障路径优化附MATLAB代码
  • 直播云服务器安全防护有哪些常见的误区?
  • 力扣hot100:每日温度
  • RenderDoc使用指南
  • 鲲鹏平台 HPC 高性能计算应用实践:矩阵乘法并行优化从入门到精通
  • 直播云服务器安全防护有哪些最新的技术趋势?
  • 【DOA估计】基于Wirtinger梯度的原子约束最大似然无网格DOA估计附Matlab复现含文献
  • 基于工业设备的RS232引脚配置:操作指南
  • 7. 自然语言处理NLP - Bert
  • 2026.1.9
  • 数电实验3【译码器设计实验报告】数字电路 逻辑与计算机设计 logisim