Zabbix + Server酱:触发告警时把主机名、问题、严重级别推送到微信

效果:Zabbix 触发告警后,自动通过 Server酱 将告警详情推送到微信

前置条件

  • 已有 Server酱 SendKey(30 秒获取教程
  • Zabbix 管理员权限(创建 Media type、配置 Action)

配置步骤

1. 创建 Webhook 告警媒介类型

进入 Alerts → Media types → Create media type,Type 选 Webhook,将以下 JavaScript 粘贴到 Script 编辑区:

try {
    Zabbix.Log(4, '[Server酱] start');

    var req = new HttpRequest();
    req.addHeader('Content-Type: application/json');

    var body = JSON.stringify({
        title: params.subject,
        desp: params.message
    });

    var resp = req.post(
        'https://sctapi.ftqq.com/' + params.sendkey + '.send',
        body
    );

    Zabbix.Log(4, '[Server酱] response=' + resp);
    var result = JSON.parse(resp);

    if (result.code !== 0) {
        throw 'Server酱返回错误: ' + resp;
    }

    return 'OK';
} catch (e) {
    Zabbix.Log(2, '[Server酱] error=' + e);
    throw e;
}

如果使用 Server酱³(SendKey 以 sctp 开头),将 URL 替换为 https://你的UID.push.ft07.com/send/你的SENDKEY.send,其中 UID 是 sctp 后的数字。

2. 配置参数

在 Parameters 区域添加以下三个参数:

  • sendkey:值填你的 SendKey,标记为 Secret
  • subject:值填 {ALERT.SUBJECT}
  • message:值填 {ALERT.MESSAGE}

{ALERT.SUBJECT} 和 {ALERT.MESSAGE} 是 Zabbix 告警宏,分别映射到 Server酱 的 title 和 desp 参数。

3. 绑定用户媒介

进入 Users → 选用户 → Media,添加一条记录,Type 选刚创建的 Webhook 媒介类型,保存。

4. 配置告警动作

在 Actions 里配置触发条件,将告警发送给上一步绑定的用户。确认媒介类型为刚创建的 Server酱 Webhook。

常见问题

每天能发多少条告警?

免费额度每天 5 条,订阅会员目前特价最低 3 元/月,一天最多可发 1000 条(价格详情)。

告警消息没收到怎么办?

先在 Zabbix 中确认告警动作已触发且媒介发送状态正常,再检查 Server酱 侧——常见原因排查见常见问题与排查

触发频率太高会被限制吗?

Server酱 每分钟最多 50 条请求。告警风暴场景建议在 Actions 中做适当聚合或延迟。

如何同时推送到钉钉或飞书群?

配置方式见通道说明

相关集成

懒人方案:把这段话复制给你的 AI 助手

把下面这段文字原样粘贴给 Claude Code、Cursor 或任何 AI 编程助手,它就会替你完成 Server酱 的接入:

请帮我把 Server酱 微信通知接入到我当前的项目/工具中:
1. API:POST https://sctapi.ftqq.com/{SendKey}.send,参数 title(必填,不能含换行)、desp(正文,支持 Markdown,可选);成功时返回 JSON 的 code 为 0。
2. 如果我的 SendKey 以 sctp 开头,则改用 https://{uid}.push.ft07.com/send/{SendKey}.send,uid 是 SendKey 中 sctp 与 t 之间的数字。
3. SendKey 从环境变量 SERVERCHAN_SENDKEY 读取;如果没有,提醒我到 https://sct.ftqq.com 免费获取(每天 5 条额度)。
4. 安全要求:不要把 SendKey 硬编码进代码、不要打印到日志、不要提交到 git。
5. 频率约定:任务结束发 1 条结果摘要即可,批量任务合并成一条,不要每步都推。
请根据我当前的项目和场景直接写好代码/配置并验证。