> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashduty.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Domotz 告警集成

> 通过 Webhook 联系渠道，将 Domotz Alert Rule 的设备与采集器状态、TCP 服务、延迟等通知同步到 Flashduty On-call。

通过 Domotz 的 Webhook 联系渠道和 Alert Rule，将采集器（Collector）和设备的告警同步到 Flashduty On-call。每条 Alert Rule 通知都带有 Problem 或 Resolved 状态和 `alert_id`，Flashduty 用同一个 Alert Key 关联：异常时创建告警，恢复时自动关闭。

通过 Domotz Public API 绑定的 alert profile 会推送带事件名称的通知（设备上线/下线、TCP 服务、RTD、心跳丢失、SNMP 等），详见 [Public API alert profile 事件](#public-api-alert-profile-事件)。

<div className="hide">
  ## 在 Flashduty On-call

  ***

  您可通过以下两种方式获取集成推送地址，任选其一即可。

  ### 使用专属集成

  1. 进入 Flashduty 控制台，选择 **协作空间**，打开一个协作空间
  2. 选择 **配置** → **集成数据** → **专属集成**，点击 **新增一个集成**
  3. 选择 **Domotz**，点击 **保存**
  4. 打开生成的集成卡片，复制 **推送地址**

  ### 使用共享集成

  1. 进入 Flashduty 控制台，选择 **集成中心 → 告警事件**
  2. 选择 **Domotz**，填写集成名称
  3. 配置默认路由并选择协作空间；创建后可在 **路由** 中增加更多规则
  4. 点击 **保存**，复制生成的 **推送地址**
</div>

## 在 Domotz 中配置

***

需要在 Domotz 门户中有创建联系渠道和 Alert Rule 的权限。

<Steps>
  <Step title="创建 Webhook 联系渠道">
    1. 在 Domotz 门户左侧菜单进入 **Alerts**，选择 **Contact Channels & Ticketing Systems** 标签页
    2. 滚动到 **Webhooks** 区域，点击 **Add Webhook**
    3. 填写 **Name**，将 Flashduty 集成的完整推送地址粘贴到 **Add webhook address**，点击 **Add**。地址中需包含 `integration_key`
  </Step>

  <Step title="创建使用该渠道的 Alert Rule">
    1. 打开 **Alert Rules** 标签页，点击 **Add Alert Rule**
    2. 填写 **Alert Name**，选择 **Entity**（Collector 或 Device）和要监控的 **Datapoint**，例如 Connectivity → Device Status
    3. 选择 **Condition** 和 **Severity**（Critical、High、Warning、Info 或 No Severity）
    4. 在 **Notification Channels** 下点击 **Add Channels**，勾选上一步的 Webhook，点击 **Set 1 Channels**
    5. 点击 **Save**
  </Step>

  <Step title="应用规则">
    新建的规则尚未应用到任何对象（**Applied To** 显示 `-`）。打开一台设备，选择 **Alerts**，展开对应的 Datapoint，勾选该规则。之后 **Applied To** 会显示已关联的设备数量。
  </Step>
</Steps>

<Note>
  在 **Alert Rules** 列表中，点击规则旁的 **Send Test** 会打开 **Send Test Notification** 对话框，勾选 Webhook 后点击 **Send Test Alert**。每次测试 Flashduty 都会新建一条标题为 `Domotz test notification` 的 Info 告警。该告警不会自动恢复，请手动关闭。
</Note>

<Warning>
  来自 Public API alert profile 的心跳丢失、SNMP、IP 变化、配置变化、安全问题和 WAN/LAN 变化这几类事件没有恢复通知，请在 Flashduty 集成或协作空间中开启 **超时自动关闭**，建议设置为 24 小时。
</Warning>

## Alert Key

***

Alert Rule 通知（`monitoring_profile_state_changed`）的 Alert Key 由事件名称和 `alert_id` 组成。同一次异常的 Problem 通知和 Resolved 通知携带相同的 `alert_id`，状态变为 Resolved 时告警关闭；下一次异常会有新的 `alert_id`，创建新告警。缺少 `alert_id`，或状态不是 Problem / Resolved 的通知会被拒绝。

## 状态和告警等级

***

| Alert Rule 的 Severity | Flashduty 告警等级 |
| :- | :- |
| Critical、High | Critical |
| Warning | Warning |
| Info、No Severity | Info |

由 `data.state.current` 决定状态：`Problem` 触发告警，`Resolved` 恢复告警。

## Public API alert profile 事件

***

通过 Domotz Public API 的 alert-profile 绑定接口生成的通知使用下面的事件。Flashduty 用事件名称、`agent_id`（采集器 ID）和 `device_id`（设备 ID）组合出 Alert Key，TCP 服务再加上端口，字段之间以不可见分隔符连接后取 MD5。这些标识来自 Domotz Public API 定义中各 Webhook 事件的结构。设备名称、状态值、时间等变化不会改变 Alert Key。

* 有恢复状态的事件（`agent_status`、`device_status`、`device_tcp`、`device_rtd`、`agent_speed_test`）的异常和恢复通知使用同一个 Alert Key
* 无恢复状态的事件在 Alert Key 中加入事件时间戳，每次通知单独成为一条告警
* 缺少 `agent_id`，或设备事件缺少 `device_id` 的通知会被拒绝

### 各事件的状态和告警等级

| Domotz 事件 | 异常时的等级 | 恢复条件 |
| :- | :- | :- |
| `agent_status` | Critical | `value` 为 `UP` |
| `device_status` | Critical | `value` 为 `UP` |
| `device_tcp` | Critical | 对应端口的 `status` 为 `UP` |
| `device_rtd` | Warning | `status` 为 `RTD_ISSUE_RESOLVED` |
| `agent_speed_test` | Warning | `status` 为 `SPEED_TEST_ISSUE_RESOLVED` |
| `device_heartbeat_lost`、`device_snmp`、`device_configuration_misalignment`、`agent_security_issue` | Warning | 无恢复 |
| `device_ip_change`、`device_configuration_change`、`agent_wan_change`、`agent_lan_change` | Info | 无恢复 |

一次 `device_tcp` 通知可以包含多个端口，Flashduty 按端口升序为每个端口生成一条事件，最多处理 50 个。设备发现、功能发现、MIB 发现会被接收但不创建告警。状态值不在上表中时返回参数错误。

## 标签

***

| 标签 | 来源 |
| :- | :- |
| `check` | 事件名称 `name`；Alert Rule 为监控项（`metric`，例如 `device_status`） |
| `rule` | Alert Rule 名称 |
| `alert_id` | Alert Rule 通知 ID |
| `resource` | 设备名称；采集器级事件为采集器名称 |
| `agent_id` / `agent_name` | 采集器 ID 和名称 |
| `device_id` / `device_name` | 设备 ID 和名称 |
| `value` | 状态值（`UP`、`DOWN` 或延迟状态）；Alert Rule 为 `data.value.current` |
| `port` | TCP 服务端口 |
| `trigger_name` | SNMP 触发器名称 |

## 排查问题

***

* **没有收到告警**：确认 Alert Rule 已应用到设备或采集器（**Applied To** 不是 `-`），并在 **Notification Channels** 中选择了这个 Webhook 渠道
* **告警没有恢复**：只有上表中有恢复条件的事件会自动恢复；其他事件请依赖超时自动关闭
* **Flashduty 返回参数错误**：Alert Rule 通知缺少 `alert_id` 或状态不受支持，或 Public API alert profile 事件缺少 `agent_id` / `device_id`
* **Webhook 渠道收不到任何请求**：确认推送地址完整且使用 HTTPS

更多字段含义请参阅 [Domotz Public API](https://portal.domotz.com/developers/) 和 [Shared Alerts, Webhooks and Ticketing Systems](https://help.domotz.com/admin-global-features/shared-alerts-webhooks-ticketing-systems/)。
