保姆级教程:一步一步配置使用企业微信与Zabbix监控系统联动,及时推送告警信息
本帖最后由 hackfans 于 2026-6-17 08:50 编辑一、背景需求
之前搭建了Zabbix系统,我们可是实时对网络设备进行监控了,但是不可能有人24小时呆在电脑前,我们还需要让设备告警和恢复的通知可以及时通知到手机,这样才能时刻掌握网络状态。
Zabbix一般可以通过E-Mail、短息和Webhook模式,进行网络告警通知。这里邮件通知不够明显,手机短息通知,一般也不好操作,最方便的方法就是可以借助企业微信的机器人功能,进行群内通知,及时掌握网络波动情况。
二、环境配置
(1)操作系统:Ubuntu26+1Panel+Mysql8+Zabbix 7.4
(2)机器人:企业微信或者钉钉,这里以企业微信为例,钉钉有时间再补进来,其实大同小异。
三、准备工作
(1)提前申请好企业微信,然后拉一个小群,之后添加一个机器人进来。
然后在群里,新增一个机器人,它这里叫 【信息推送】
机器人会生成一个唯一的Webhook地址,千万不要泄露出去,以免被恶意盗刷信息。
四、开始配置
现在我们开始着手在Zabbix里配置各种参数,以便实现推送到企业微信中。
(1)添加“媒介”:告警---->媒介---->创建媒介类型
1.1然后在对话框中,开始配置参数。
在这里系统默认会有URL和Proxy,可以删除也可以不用管,我这里为了看着简洁干净就全删除了。
这里的名称列严格区分大小写,必须严格注意。之前就被坑过。
名称 值
Key {ALERT.SENDTO}
Subject {ALERT.SUBJECT}
Message {ALERT.MESSAGE}
1.2点开脚本对话框,粘贴下面的代码。
var Qiyeweixin = {
key: null,
message: null,
msgtype: "markdown",
proxy: null,
sendMessage: function () {
var params = {
msgtype: Qiyeweixin.msgtype,
markdown: {
content: Qiyeweixin.message,
},
},
data,
response,
request = new HttpRequest(),
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" + Qiyeweixin.key;
if (Qiyeweixin.proxy) {
request.setProxy(Qiyeweixin.proxy);
}
request.addHeader("Content-Type: application/json");
data = JSON.stringify(params);
Zabbix.log(4, " URL: " + url);
Zabbix.log(4, " params: " + data);
response = request.post(url, data);// ← Post 改为小写 post
Zabbix.log(4, " HTTP code: " + request.getStatus());1.3继续打开【消息模板】标签,开始配置问题 (Problem) 和 恢复 (Recovery) 的模板数据。
问题模板代码如下:
# <font color="warning">🔴告警通知</font>**主机**:{HOST.NAME}
**IP**:{HOST.IP}
**时间**:{EVENT.DATE} {EVENT.TIME}
**等级**:{TRIGGER.SEVERITY}
**状态**:{TRIGGER.STATUS}
**信息**:{TRIGGER.NAME}
**当前值**:{ITEM.NAME} = {ITEM.VALUE}
恢复问题模板代码如下:
# <font color="info">✅恢复通知</font>**主机**:{HOST.NAME}
**IP**:{HOST.IP}
**恢复时间**:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
**持续时间**:{EVENT.AGE}
**状态**:{TRIGGER.STATUS}
**信息**:{TRIGGER.NAME}
**当前值**:{ITEM.NAME} = {ITEM.VALUE}因为企业微信,支持markdown,所谓我们这里需要遵循markdown的语法,可以实现一些格式化的信息推送。
之后点击添加按钮。
(2)配置用户和告警媒介
2.1 一次点开用户 -> 用户 -> 选择你的管理员用户(如 Admin)
2.2开始给用户配置报警媒介数据
2.3创建收件人媒介
这里的收件人填写企业微信机器人申请的Webhook的Key值,如果你的链接是ttps://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1234-5678-abcd,那么这里的发送人就填写1234-5678-abcd
然后点击添加,创建完毕。
然后点击更新按钮,才算添加完毕,不要直接关闭该窗口。
(3)配置动作
3.1下一步开始为告警通知配置触发动作,依次打开告警---->动作---->触发器动作---->创建动作 按钮
3.2开始配置动作数据
起一个好记的名字
然后在点击操作标签,进行数据配置
之后点击添加添加或更新按钮,恢复操作,按如上参数,一样配置。
之后点击添加按钮,提交刚才的操作。
五、验证过程
主要配置基本完成,下面开始进行告警测试环节。
(1)开始我们,可以关闭Zabbix监控的某台设备,或者拔掉设备的某一个网口,来进行测试
这里我们拔掉路由器下挂的一台NAS服务器,尝试一下。
马上我们可以在Zabbix的后台,收到了一条端口link down的消息
同时我们的企业微信,也收到了同样的告警群消息
(2)我们把网线接回去,一般设备会自动恢复,之后收到系统发来的告警恢复的微信通知。
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)
页:
[1]