保姆级教程:一步一步配置使用企业微信与Zabbix监控系统联动,及时推送告警信息

[复制链接]
发表于 昨天 08:20 | 显示全部楼层 |阅读模式
本帖最后由 hackfans 于 2026-6-17 08:50 编辑

一、背景需求
      之前搭建了Zabbix系统,我们可是实时对网络设备进行监控了,但是不可能有人24小时呆在电脑前,我们还需要让设备告警和恢复的通知可以及时通知到手机,这样才能时刻掌握网络状态。
       Zabbix一般可以通过E-Mail、短息和Webhook模式,进行网络告警通知。这里邮件通知不够明显,手机短息通知,一般也不好操作,最方便的方法就是可以借助企业微信的机器人功能,进行群内通知,及时掌握网络波动情况。
二、环境配置
     (1)操作系统:Ubuntu26+1Panel+Mysql8+Zabbix 7.4
     (2)机器人:企业微信或者钉钉,这里以企业微信为例,钉钉有时间再补进来,其实大同小异。
三、准备工作
     (1)提前申请好企业微信,然后拉一个小群,之后添加一个机器人进来。
添加机器人_1.png
然后在群里,新增一个机器人,它这里叫 【信息推送
添加机器人_2.png
机器人会生成一个唯一的Webhook地址,千万不要泄露出去,以免被恶意盗刷信息。
四、开始配置
现在我们开始着手在Zabbix里配置各种参数,以便实现推送到企业微信中。
(1)添加“媒介”:告警---->媒介---->创建媒介类型
添加媒介_1.png
1.1然后在对话框中,开始配置参数。
添加媒介_2.png
在这里系统默认会有URL和Proxy,可以删除也可以不用管,我这里为了看着简洁干净就全删除了。
这里的名称列严格区分大小写,必须严格注意。之前就被坑过。
名称
Key {ALERT.SENDTO}  
Subject {ALERT.SUBJECT}
Message {ALERT.MESSAGE}

1.2点开脚本对话框,粘贴下面的代码。
  1. var Qiyeweixin = {
  2.     key: null,
  3.     message: null,
  4.     msgtype: "markdown",
  5.     proxy: null,

  6.     sendMessage: function () {
  7.         var params = {
  8.                 msgtype: Qiyeweixin.msgtype,
  9.                 markdown: {
  10.                     content: Qiyeweixin.message,
  11.                 },
  12.             },
  13.             data,
  14.             response,
  15.             request = new HttpRequest(),  
  16.             url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" + Qiyeweixin.key;

  17.         if (Qiyeweixin.proxy) {
  18.             request.setProxy(Qiyeweixin.proxy);  
  19.         }

  20.         request.addHeader("Content-Type: application/json");
  21.         data = JSON.stringify(params);

  22.         Zabbix.log(4, "[Qiyeweixin Webhook] URL: " + url);  
  23.         Zabbix.log(4, "[Qiyeweixin Webhook] params: " + data);
  24.         response = request.post(url, data);  // ← Post 改为小写 post
  25.         Zabbix.log(4, "[Qiyeweixin Webhook] HTTP code: " + request.getStatus());  
复制代码
1.3继续打开【消息模板】标签,开始配置问题 (Problem) 和 恢复 (Recovery) 的模板数据。
添加媒介_3.png
添加媒介_4.png
问题模板代码如下:
  1. # <font color="warning">🔴告警通知</font>
复制代码
  1. **主机**:{HOST.NAME}
  2. **IP**:{HOST.IP}
  3. **时间**:{EVENT.DATE} {EVENT.TIME}
  4. **等级**:{TRIGGER.SEVERITY}
  5. **状态**:{TRIGGER.STATUS}
  6. **信息**:{TRIGGER.NAME}
  7. **当前值**:{ITEM.NAME} = {ITEM.VALUE}
复制代码

恢复问题模板代码如下:
  1. # <font color="info">✅恢复通知</font>
复制代码
  1. **主机**:{HOST.NAME}
  2. **IP**:{HOST.IP}
  3. **恢复时间**:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
  4. **持续时间**:{EVENT.AGE}
  5. **状态**:{TRIGGER.STATUS}
  6. **信息**:{TRIGGER.NAME}
  7. **当前值**:{ITEM.NAME} = {ITEM.VALUE}
复制代码
因为企业微信,支持markdown,所谓我们这里需要遵循markdown的语法,可以实现一些格式化的信息推送。
之后点击添加按钮。
(2)配置用户和告警媒介
2.1 一次点开用户 -> 用户 -> 选择你的管理员用户(如 Admin)
添加用户_1.png
2.2开始给用户配置报警媒介数据
添加用户_2.png
2.3创建收件人媒介
添加用户_3.png
这里的收件人填写企业微信机器人申请的Webhook的Key值,如果你的链接是ttps://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1234-5678-abcd,那么这里的发送人就填写1234-5678-abcd
然后点击添加,创建完毕。
然后点击更新按钮,才算添加完毕,不要直接关闭该窗口。
添加用户_4.png
(3)配置动作
3.1下一步开始为告警通知配置触发动作,依次打开告警---->动作---->触发器动作---->创建动作 按钮
添加动作_1.png
3.2开始配置动作数据
起一个好记的名字
添加动作_2.png
然后在点击操作标签,进行数据配置
添加动作_3.png
之后点击添加添加或更新按钮,恢复操作,按如上参数,一样配置。
添加动作_4.png
之后点击添加按钮,提交刚才的操作。
五、验证过程
主要配置基本完成,下面开始进行告警测试环节。
(1)开始我们,可以关闭Zabbix监控的某台设备,或者拔掉设备的某一个网口,来进行测试
这里我们拔掉路由器下挂的一台NAS服务器,尝试一下。
马上我们可以在Zabbix的后台,收到了一条端口link down的消息
验证_1.png
同时我们的企业微信,也收到了同样的告警群消息
验证_2.png
(2)我们把网线接回去,一般设备会自动恢复,之后收到系统发来的告警恢复的微信通知。
验证_3.png

PS:在学习和配置过程中,踩过的那些小坑和大坑

1、在配置Webhook参数配置过程中,取Key值的时候,K字母需要为大写,脚本中必须是 params.Key(大小写敏感)。
2、在配置脚本的时候,系统报错,提示Sending failed: ReferenceError: identifier 'CurlHttpRequest' undefined,后发现是因为网上找到的脚本适用于Zabbix 5.X的,在Zabbix 6.0以后的版本, CurlHttpRequest这个对象已被弃用并移除。通过官方文档,可以查询到,具体变化内容。
Zabbix 5.4 之前:使用 CurlHttpRequest(旧名称)
Zabbix 5.4 开始:引入 HttpRequest(新名称)
Zabbix 6.0 及以后:CurlHttpRequest 已被移除,必须使用 HttpRequest
新旧版本核心差异对照表
项目旧版本 (Zabbix ≤5.2)新版本 (Zabbix ≥6.0)
HTTP 请求对象new CurlHttpRequest()new HttpRequest()
添加 HeaderAddHeader('k: v')addHeader('k', 'v')
POST 请求Post(url, data)post(url, data)
GET 请求Get(url, data)get(url, data)
获取状态码Status()getStatus()
设置代理SetProxy(proxy)setProxy(proxy)
日志输出Zabbix.Log(level, msg)Zabbix.log(level, msg)




© 2001-2026 Discuz! Team. Powered by Discuz! X5.0

GMT+8, 2026-6-18 01:52 , Processed in 0.038805 second(s), 6 queries , Redis OnArchiver|手机版|小黑屋|『遗失的梦』 ( 津ICP备12003239号-1|违法与不良信息举报:admin@hackfans.net )|nimba_sitemap:appname

快速回复 返回顶部 返回列表