> ## 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.

# Dash0 告警集成

> 通过 Webhook 通知渠道将 Dash0 Check Rule 的触发和恢复事件同步到 Flashduty On-call。

通过 Dash0 的 Webhook 通知渠道将 Check Rule 告警同步到 Flashduty On-call。每个 Dash0 Issue 标识（Check Rule 与资源的组合）对应一条 Flashduty 告警；同一标识下的触发和恢复会持续更新这条告警。

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

  ***

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

  ### 使用专属集成

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

  ### 使用共享集成

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

## 在 Dash0 中配置

***

<Steps>
  <Step title="创建 Webhook 通知渠道">
    1. 在 Dash0 中进入通知渠道（Notification channels）配置，新建渠道，类型选择 **Webhook**
    2. 名称可填写 `Flashduty`
    3. 将 Flashduty 集成的完整推送地址粘贴到 **URL**
    4. Dash0 不需要额外的请求头，无需填写 **Additional HTTP Headers**
  </Step>

  <Step title="让 Check Rule 使用该渠道">
    按 Dash0 的告警路由设置，让需要同步的 Check Rule 通知到刚创建的 `Flashduty` 渠道。需要只在严重时通知，可使用 Dash0 按严重程度路由的选项。
  </Step>

  <Step title="验证生命周期">
    让 Check Rule 真正命中阈值，确认 Flashduty 收到活动告警；再让指标恢复正常，确认原告警恢复。Dash0 发送的是固定格式的 JSON，无需自定义 Payload。
  </Step>
</Steps>

## Alert Key

***

Flashduty 直接使用 `data.issue.issueIdentifier` 作为 Alert Key。Dash0 官方将其定义为“Check Rule 与资源的组合的标识，在不同的 Issue 实例之间保持稳定”，因此触发、更新和恢复携带同一个值。

`data.issue.id` 是单个 Issue 实例的 ID，`data.issue.checkrules[].id` 是 Check Rule 的 ID，二者都只作为标签，不参与 Alert Key。标题、状态、描述、开始时间和 Check Rule 版本的变化都不会改变 Alert Key。缺少 `issueIdentifier` 的告警类型请求会被拒绝，因为无法可靠关联后续恢复。

## 事件类型和告警等级

***

| Dash0 `type` | Flashduty 处理 |
| :- | :- |
| `alert.ongoing` | 触发或更新告警，等级见下表 |
| `alert.resolved` | 恢复 |
| `alert.closed` | 恢复 |
| `alert.superseded` | 忽略，不新建也不关闭告警 |
| 其他值 | 忽略，返回成功 |

| Dash0 `data.issue.status` | Flashduty 等级 |
| :- | :- |
| `critical` | Critical |
| `degraded` | Warning |
| 空值或其他值 | Warning |

Dash0 未公开说明 `alert.closed` 和 `alert.superseded` 的具体语义。Flashduty 按保守方式处理：`closed` 视为 Issue 已结束，`superseded` 认为同一标识随后会有新的 `alert.ongoing`，因此不改变告警状态。

## 排查问题

***

* **Dash0 返回非 2xx**：确认推送地址完整且包含 `integration_key`
* **Flashduty 返回参数错误**：确认请求体是有效 JSON，且 `data.issue.issueIdentifier` 非空
* **告警没有恢复**：确认渠道接收恢复通知（`alert.resolved` / `alert.closed`），并检查 Check Rule 的路由是否只在严重时通知
* **收到请求但没有告警**：`alert.superseded` 和未知类型会被忽略

更多字段含义请参阅 [Dash0 Webhook 集成](https://www.dash0.com/hub/integrations/int_alerting_webhook/overview) 和 [Send Alert Check Notifications](https://www.dash0.com/docs/dash0/monitoring/alerting/send-alert-check-notifications)。
