# 集成 Webhook 告警

EMQX Broker 支持基于 Webhook 的告警集成，可将告警事件转发至第三方事件管理平台，或发送到您自定义的服务。

您可以使用**测试**功能发送一条示例告警，用于验证 Webhook 是否配置正确。

目前，EMQX 支持以下 Webhook 集成类型：

- 企业微信
- 钉钉
- 飞书
- Slack
- Zenduty
- FlashDuty
- 通用 Webhook（自定义服务）

## 发送告警到企业微信

1. 在企业微信群中创建机器人(需要是群主身份才能创建), 选择 `添加群机器人` -> `新创建一个机器人` -> `添加机器人`。详细请参考[群机器人配置说明](https://developer.work.weixin.qq.com/document/path/91770)。
     <img src="./_assets/alert_hook_01.png" alt="add-wechat-robot" style="zoom:50%;" />

1. 完成微信机器人的创建，复制链接。
     <img src="./_assets/alert_hook_02.png" alt="wechat-robot-webhook" style="zoom:50%;" />

1. 登录 EMQX 控制台，进入目标部署，从左侧菜单中点击**监控** -> **告警** -> **告警集成**，在 **Webhook 集成**区域点击 **+ 新建**。

1. 在 **添加 Webhook 集成** 对话框中，选择`企业微信`，并填入告警名称和 Webhook 请求地址，点击**确认**完成配置。

     <img src="./_assets/alert_hook_03.png" alt="add-wechat-alert" style="zoom:50%;" />

1. 验证配置。可以通过测试功能，选择配置好的 Webhook 告警，即可发送默认消息检测是否配置成功。
     <img src="./_assets/alert_hook_05.png" alt="verify-alert" style="zoom:50%;" />

## 发送告警到钉钉

1. 在钉钉中创建 Webhook 机器人，请参考[官方文档](https://open.dingtalk.com/document/robots/custom-robot-access)创建。

2. 复制机器人的 Webhook 地址。

3. 登录 EMQX 控制台，进入目标部署，从左侧菜单中点击**监控** -> **告警** -> **告警集成**，在 **Webhook 集成**区域点击 **+ 新建**。

4. 在**添加 Webhook 集成**对话框中，选择`钉钉`，并填入告警名称和 Webhook 请求地址，点击**确认**完成配置。

  <img src="./_assets/alert_hook_04.png" alt="add-ding-talk-alert" style="zoom:50%;" />

5. 钉钉需要安全设置中定义`自定义关键词` ，建议将关键词设置为： `EMQ` 或者`告警`。

6. 验证配置。可以通过测试功能，选择配置好的 Webhook 告警，即可发送默认消息检测是否配置成功。

## 发送告警到飞书

1. 在飞书中创建 Webhook 机器人指令，请参考[官方文档](https://www.feishu.cn/hc/zh-CN/articles/807992406756-webhook-%E8%A7%A6%E5%8F%91%E5%99%A8)创建。

   - 添加 Webhook 触发器，参数填写如下：

     ```json
      {
        "subject": "",
        "message": ""
      }
     ```

     <img src="./_assets/feishu-alert1.png" alt="config feishu webhook" style="zoom:50%;" />

   - 添加**通过官方机器人发消息**的操作，**消息标题**选择 `Webhook 触发 - subject`，**消息内容**选择 `Webhook 触发 - message`。

     <img src="./_assets/feishu-alert2.png" alt="config feishu message" style="zoom:50%;" />

2. 复制指令中的 Webhook 地址。

3. 登录 EMQX 控制台，进入目标部署，从左侧菜单中点击**监控** -> **告警** -> **告警集成**，在 **Webhook 集成**区域点击 **+ 新建**。

4. 在**添加 Webhook 集成** 对话框中，选择`飞书`，并填入告警名称和 Webhook 请求地址，点击**确认**完成配置。

5. 验证配置。可以通过测试功能，选择配置好的 Webhook 告警，即可发送默认消息检测是否配置成功。

   <img src="./_assets/feishu-alert3.png" alt="verify feishu alert" style="zoom:50%;" />

## 发送告警到 Slack

1. 在 Slack 创建 Webhook，获取 Webhook URL 地址。更多信息，请参见 [Sending messages using Incoming Webhooks](https://api.slack.com/messaging/webhooks?spm=a2c4g.11186623.0.0.2fa63db5J0PRQp)。

2. 复制 Webhook API 地址。

3. 登录 EMQX 控制台，进入目标部署，从左侧菜单中点击**监控** -> **告警** -> **告警集成**，在 **Webhook 集成**区域点击 **+ 新建**。

4. 在**添加 Webhook 集成**对话框中，选择`Slack`，并填入告警名称和 Webhook 请求地址，点击**确认**完成配置。

   <img src="./_assets/alert_hook_08.png" alt="add slack alert" style="zoom:50%;" />

5. 验证配置。可以通过测试功能，选择配置好的 Webhook 告警，即可发送默认消息检测是否配置成功。

## 发送告警到 Zenduty

Zenduty 是一款事件管理和轮值（On-call）平台。EMQX 支持通过专用的 Zenduty Webhook 类型，将告警直接发送至 Zenduty。

1. 在 Zenduty 中创建一个服务并获取 Webhook URL。

   在 Zenduty 中，告警始终与服务关联。登录 Zenduty 控制台，为 EMQX 创建一个新的服务，并为该服务启用 Webhook 集成以生成 Webhook URL。

   更多信息请参见：[在 Zenduty 中添加新服务](https://zenduty.com/docs/services/)。

2. 登录 EMQX 控制台，进入目标部署，从左侧菜单中点击**监控** -> **告警** -> **告警集成**，在 **Webhook 集成**区域点击 **+ 新建**。

3. 在**添加 Webhook 集成**对话框中，选择`Zenduty`，并填入告警名称和 Webhook 请求地址，点击**确认**完成配置。

4. 点击**测试**按钮发送一条测试告警，验证 Zenduty 中是否成功创建对应的事件。

## 发送告警到 FlashDuty

FlashDuty 是一款事件响应和 On-call 管理平台。EMQX 提供了内置的 FlashDuty Webhook 类型，便于快速集成。

1. 在 **FlashDuty** 中创建告警集成，并复制生成的 **Webhook URL**。
    详细说明请参见：[FlashDuty On-call 快速入门](https://docs.flashcat.cloud/en/on-call/quickstart/quickstart)。
2. 登录 EMQX 控制台，进入目标部署，从左侧菜单中点击**监控** -> **告警** -> **告警集成**，在 **Webhook 集成**区域点击 **+ 新建**。
3. 在**添加 Webhook 集成**对话框中，选择`FlashDuty`，并填入告警名称和 Webhook 请求地址，点击**确认**完成配置。
4. 点击**测试**发送一条示例告警，确认 FlashDuty 能够正确接收并处理该告警。

FlashDuty 收到告警后，将在告警详情的**标签**部分展示以下 4 条信息：

| 标签 | 说明 |
| --- | --- |
| `deployment_id` | 触发告警的 EMQX 部署 ID |
| `level` | EMQX 部署的告警等级 |
| `message` | 告警消息内容 |
| `region` | 部署所在区域 |

FlashDuty 告警等级将依据 EMQX 部署告警等级自动映射：

| EMQX 告警等级 | FlashDuty 告警等级 |
| --- | --- |
| Critical | Critical |
| Error / Warning | Warning |
| Info | Info |

<img src="./_assets/flashduty_warning.png" alt="flashduty_warning" style="zoom:67%;" />

## 发送告警到自定义服务

除了向通讯软件中的机器人发送告警消息，我们还可以向自己的服务通过 Webhook 发送消息。

1. 首先需要搭建好服务能接收和处理请求。

2. 登录 EMQX 控制台，进入目标部署，从左侧菜单中点击**监控** -> **告警** -> **告警集成**，在 **Webhook 集成**区域点击 **+ 新建**。

3. 在**添加 Webhook 集成**对话框中，选择`通用 Webhook`，并填入告警名称和 Webhook 服务的请求地址，同时也可以额外添加请求头的键和值。

4. 点击**确认**完成配置。

   <img src="./_assets/alert_hook_06.png" alt="add webhook alert" style="zoom:50%;" />

5. 验证配置。可以通过测试功能，选择配置好的 Webhook 告警，即可发送默认消息检测是否配置成功。
