实现zabbix 企业微信机器人webhook告警脚本的配置
时间:2025-2-28 16:47 作者:Anglei 分类: 自动化运维
企业微信作为企业内部沟通的重要工具,其群聊机器人功能为信息的自动化推送提供了可能。通过配置Zabbix与企业微信机器人的Webhook告警脚本,企业可以实现当监控系统检测到异常或故障时,自动将告警信息发送到指定的企业微信群聊中,从而极大地提高了故障响应的速度和效率。
获取Webhook地址
创建报警媒介
并设置参数
Subject {ALERT.SUBJECT}
Message {ALERT.MESSAGE}
To {ALERT.SENDTO} (机器人webhook,此处使用变量)
设置消息模板
消息类型:问题
主题:
<font color="warning">**{EVENT.NAME}**</font>
消息:
**主机**:{HOST.NAME}
**IP**:{HOST.IP}
**状态**:<font color="warning">🥹告警</font>
**告警值**:{EVENT.OPDATA}
**告警等级**:{EVENT.SEVERITY}
**问题描述**:{TRIGGER.DESCRIPTION}
**持续时间**:{EVENT.DURATION}
**告警时间**:{EVENT.DATE} {EVENT.TIME}
消息类型:问题恢复
主题:
<font color="info">{EVENT.NAME}</font>
消息:
**主机**:{HOST.NAME}
**IP**:{HOST.IP}
**状态**:<font color="info">😀 恢复</font>
**告警值**:{EVENT.OPDATA}
**告警等级**:{EVENT.SEVERITY}
**问题描述**:{TRIGGER.DESCRIPTION}
**持续时间**:{EVENT.DURATION}
**告警时间**:{EVENT.DATE} {EVENT.TIME}
**恢复时间**:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
添加webhook脚本
try {
// 实例化参数
var params = JSON.parse(value), // 从 Zabbix 获取传递的参数
req = new HttpRequest(), // 创建一个 HTTP 请求实例
msg = {
"msgtype": "markdown",
"markdown": {
"content": generateMessage(params.Subject, params.Message)
}
};
// 判断是否需要配置 HTTP 代理
if (params.HTTPProxy) {
req.setProxy(params.HTTPProxy);
}
// 添加 header 头变量
req.addHeader('Content-Type: application/json');
// 发送 HTTP POST 请求,格式:req.post(url, data)
var resp = req.post(params.To, JSON.stringify(msg));
// 判断 HTTP 请求返回的状态码,非 200 则抛出异常
if (req.getStatus() != 200) {
Zabbix.log(Zabbix.LOG_LEVEL_ERROR, 'Response code: ' + req.getStatus());
throw 'Response code: ' + req.getStatus();
}
// 返回响应结果
resp = JSON.parse(resp);
return JSON.stringify(resp);
} catch (error) {
Zabbix.log(Zabbix.LOG_LEVEL_ERROR, 'Failed with error: ' + error);
throw 'Failed with error: ' + error;
}
// 用于生成告警消息的函数
function generateMessage(Subject, Message) {
// 当前时间,调整为北京时间
var currentDate = new Date();
var currentTimeInUTC = currentDate.getTime();
var currentTimeInBeijing = new Date(currentTimeInUTC + 8 * 60 * 60 * 1000); // 加 8 小时 (毫秒)
var formattedCurrentTime = currentTimeInBeijing
.toISOString()
.replace('T', ' ')
.replace('Z', '')
.slice(0, -4)
.replace(/-/g, '.');
var message = Subject + "\n" + Message + "\n**当前时间**:" + formattedCurrentTime;
var message = message.replace('Not classified', '未分类').replace('Information', '信息').replace('Warning', '警告').replace('Average', '一般严重').replace('High', '严重').replace('Disaster', '灾难')
return message;
}
为用户关联报警媒介
创建测试触发器
告警效果
写在最后
至此我们就完成了zabbix 企业微信机器人webhook的告警设置。
除了企业微信外,我们可以通过webhook快速添加其他告警通道,比如飞书、钉钉。我们将在后续的文章中继续展开。

推荐阅读:
![]() 路过(0) |
![]() 雷人(0) |
![]() 握手(1) |
![]() 鲜花(0) |
![]() 鸡蛋(0) |