Zabbix 飞书机器人告警配置主要使用 Zabbix 原生的 Webhook 媒介类型,通过 JavaScript 脚本调用飞书机器人 API 发送告警消息。
📋 前置条件
- Zabbix 版本 4.4.4 或更高(Webhook 功能从该版本开始支持)
- 已创建飞书群组并添加自定义机器人
🔧 步骤一:创建飞书机器人并获取 Webhook 地址
-
在飞书群组中,点击 群设置 → 群机器人 → 添加机器人 → 自定义机器人
-
设置机器人名称和头像,完成安全设置(可选用自定义关键词或 IP 白名单)
-
复制生成的 Webhook 地址 ,格式类似:
https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxx -
建议在安全设置中添加关键词如 "Zabbix" 或 "告警",或配置服务器 IP 白名单
🔧 步骤二:Zabbix 配置 Webhook 媒介类型
- 登录 Zabbix Web 界面,进入 管理 → 报警媒介类型
- 点击右上角 创建媒介类型,按以下内容配置:
| 配置项 | 填写内容 |
|---|---|
| 名称 | Feishu (或自定义名称) |
| 类型 | Webhook |
| 参数 | 添加三个参数: • Message → {ALERT.MESSAGE} • Subject → {ALERT.SUBJECT} • To → {ALERT.SENDTO} (注意:参数名称必须与脚本中使用的 params.Message、params.Subject、params.To 对应) |
| 脚本 | 见下方 JavaScript 代码 |
| 超时时间 | 30s |
📝 Webhook 脚本内容(飞书专用)
javascript
try {
// 获取传入的参数
var params = JSON.parse(value),
req = new HttpRequest(),
// 飞书消息格式(文本消息)
msg = {
msg_type: "text",
content: {
text: params.Subject + "\n" + params.Message
}
},
resp;
// 设置 HTTP 请求头
req.addHeader("Content-Type: application/json");
// 发送 POST 请求到飞书机器人 Webhook 地址
resp = req.post(params.To, JSON.stringify(msg));
// 检查响应状态码
if (req.getStatus() != 200) {
throw "Response code: " + req.getStatus();
}
// 返回响应结果
resp = JSON.parse(resp);
return JSON.stringify(resp);
} catch (error) {
throw "Failed with error: " + error;
}
注意 :Zabbix 5.4 以下版本中,
HttpRequest对象名可能为CurlHttpRequest,请根据版本调整。
🔧 步骤三:配置消息模板(可选)
-
在媒介类型编辑页面,点击 消息模板 标签
-
添加 消息类型(如"问题"、"问题恢复")
-
自定义主题和内容,支持宏变量,例如:
-
主题 :
故障告警: {TRIGGER.NAME} -
内容 :
主机: {HOST.NAME} 状态: {TRIGGER.STATUS} 严重性: {TRIGGER.SEVERITY} 时间: {EVENT.DATE} {EVENT.TIME} 详情: {TRIGGER.DESCRIPTION} 当前值: {ITEM.LASTVALUE}
-
-
若不自定义,系统将使用默认的
{ALERT.SUBJECT}和{ALERT.MESSAGE}
🔧 步骤四:配置用户接收告警
- 进入 管理 → 用户,选择需要接收告警的用户(如 Admin)
- 在 报警媒介 标签页,点击 添加
- 选择类型为刚创建的 Feishu
- 收件人 填写步骤一中复制的 飞书机器人 Webhook 地址
- 设置告警级别、启用时间等
🔧 步骤五:配置动作(Action)触发告警
- 进入 配置 → 动作 → Trigger actions ,点击 创建动作
- 名称:填写如"发送飞书告警"
- 条件:根据需要设置触发条件(如主机组、触发器级别等)
- 操作 标签页:
- 点击 新增
- 操作类型:发送消息
- 发送到用户:选择配置了飞书媒介的用户
- 仅送到:选择 Feishu 媒介
- 恢复操作 标签页同样配置,用于发送恢复通知
✅ 步骤六:测试告警
- 在媒介类型列表中找到刚创建的 Feishu,点击右侧 测试
- 在弹出的窗口中:
- Subject 填写测试主题
- Message 填写测试内容
- To 填写飞书机器人 Webhook 地址
- 点击 测试,飞书群应收到测试消息
🧪 验证与排错
查看发送日志
- 管理 → 报警媒介类型 选择媒介后点击 测试 可查看详细响应
- 报表 → 动作日志 可查看告警发送历史
常见错误解决
| 错误 | 原因 | 解决方案 |
|---|---|---|
cannot read property 'subject' of undefined |
未正确配置参数或参数名不匹配 | 检查媒介类型的 参数 配置,确保参数名为 Subject、Message、To,并与脚本中的 params.Subject 对应 |
Response code: 400/403 |
Webhook 地址无效或安全设置问题 | 检查飞书机器人地址是否正确,确认安全设置(关键词/IP白名单)已配置 |
| 无响应 | 网络不通或超时 | 检查 Zabbix Server 能否访问飞书 API,可配置 HTTP 代理 |