---
title: "Zabbix 集成 - 基础设施告警"
sidebarTitle: Zabbix
description: 用 Webhook 媒介类型把 Zabbix 接入 Echobell，触发器触发时收到推送通知或电话提醒。
---

import { Step, Steps } from "fumadocs-ui/components/steps";

[Zabbix](https://www.zabbix.com/) 是面向网络、服务器和应用的开源监控平台。通过 Webhook 媒介类型，可以把它的告警送到 Echobell 频道。

<Steps>
<Step>
    ### 创建频道
    在 Echobell 中新建一个频道，复制它的 **Webhook URL**。
</Step>
<Step>
    ### 创建 Webhook 媒介类型
    在 Zabbix 中进入 **告警** → **媒介类型** → **创建媒介类型**，把 **类型** 设为 `Webhook`，命名为 "Echobell"。添加以下参数：

    | Name | Value |
    | --- | --- |
    | `url` | `{ALERT.SENDTO}` |
    | `title` | `{ALERT.SUBJECT}` |
    | `body` | `{ALERT.MESSAGE}` |
    | `host` | `{HOST.NAME}` |
    | `severity` | `{EVENT.SEVERITY}` |
    | `status` | `{EVENT.VALUE}` |
</Step>
<Step>
    ### 填入脚本
    把下面的内容粘贴到 **脚本** 字段：

    ```js
    var params = JSON.parse(value),
      req = new HttpRequest();

    req.addHeader('Content-Type: application/json');

    var response = req.post(params.url, JSON.stringify({
      title: params.title,
      body: params.body,
      host: params.host,
      severity: params.severity,
      status: params.status
    }));

    if (req.getStatus() !== 200) {
      throw 'Echobell returned HTTP ' + req.getStatus() + ': ' + response;
    }

    return 'OK';
    ```
</Step>
<Step>
    ### 把媒介分配给用户
    进入 **用户** → **用户**，打开需要接收告警的用户，在 **媒介** 标签页添加一条记录，**类型** 选 `Echobell`，**发送至** 填你的频道 Webhook URL。
</Step>
<Step>
    ### 创建触发器动作
    进入 **告警** → **动作** → **触发器动作**，添加一个动作，其操作为通过 `Echobell` 媒介类型向该用户发送消息。
</Step>
<Step>
    ### 只在故障时通知
    Zabbix 会同时发送故障和恢复事件。`{EVENT.VALUE}` 为 `1` 表示故障、`0` 表示恢复，所以给这个频道设置[条件](/docs/conditions)，让恢复事件保持安静：

    ```
    status == "1"
    ```

    如果你也想收到恢复通知，可以再建一个频道用 `status == "0"`，并把紧急级别调低。
</Step>
</Steps>
