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

# Fleet 告警集成

> 通过 Fleet 的自动化 Webhook，将策略检查失败和新发现的漏洞（CVE）同步到 Flashduty On-call。

Fleet 是开源的端点管理和 osquery 平台。通过 Fleet 的自动化 Webhook，可以把两类事件同步到 Flashduty On-call，每台主机对应一条告警：

* **策略失败**：某条策略在主机上从通过（或无结果）变为失败时，Fleet 推送一次。
* **新漏洞**：Fleet 在主机上发现新的 CVE 时推送，默认每小时检查一次。

Fleet 的这两类 Webhook 只在事件发生时推送一次，不会发送恢复通知，因此 Flashduty 中的告警不会自动恢复，需要配置 **超时自动关闭**（见下文）。

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

  ***

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

  ### 使用专属集成

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

  ### 使用共享集成

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

## 在 Fleet 中配置

***

Fleet 的 Webhook 在管理后台的 **Manage automations** 中启用，也可以通过 GitOps / 配置文件设置，下面以配置文件为例。两种 Webhook 的 `destination_url` 都填 Flashduty 集成的完整推送地址，地址中需包含 `integration_key`。

<Steps>
  <Step title="策略失败 Webhook">
    ```yaml theme={null}
    org_settings:
      webhook_settings:
        failing_policies_webhook:
          enable_failing_policies_webhook: true
          destination_url: <Flashduty 推送地址>
          host_batch_size: 100
          policy_ids:
            - 42
    ```

    * `policy_ids`：触发 Webhook 的策略编号列表
    * `host_batch_size`：一次请求最多包含的主机数。默认值 `0` 表示把所有失败主机放进同一个请求，建议设为不超过 200 的数值（Flashduty 每次推送最多处理 200 台主机）
  </Step>

  <Step title="漏洞 Webhook">
    ```yaml theme={null}
    org_settings:
      webhook_settings:
        vulnerabilities_webhook:
          enable_vulnerabilities_webhook: true
          destination_url: <Flashduty 推送地址>
          host_batch_size: 100
    ```
  </Step>

  <Step title="不要启用主机状态和活动 Webhook">
    Fleet 的主机状态（host status）和活动（activity）Webhook 没有对应到单个对象的编号，Flashduty 收到后返回参数错误，请不要把它们指向这个推送地址。
  </Step>

  <Step title="验证">
    Fleet 文档没有描述 Webhook 的测试推送按钮。请让一台主机上的某条已选策略由通过变为失败，Fleet 默认每天检查一次策略 Webhook（可通过 `webhook_settings.interval` 调整），之后在 Flashduty 中确认告警出现。

    主机按 `FLEET_OSQUERY_POLICY_UPDATE_INTERVAL` 设置的间隔（默认 1 小时）执行策略，因此第一条告警可能要等这么久才出现。
  </Step>
</Steps>

## 事件和恢复

***

| Fleet 推送 | 在 Flashduty 中的效果 |
| :- | :- |
| 策略失败（`policy` + `hosts`） | 每台主机触发一条告警 |
| 新漏洞（`vulnerability` + `hosts_affected`） | 每台受影响主机触发一条告警 |
| 主机状态、活动等其他 Webhook | 拒绝，返回参数错误 |

一次推送可能包含多台主机，Flashduty 按主机编号排序后逐台处理，每次推送最多处理 200 台，超出部分忽略，请用 `host_batch_size` 控制批量大小。

主机修复后 Fleet 不会通知 Flashduty。请在接收这些告警的协作空间中开启 [超时自动关闭](/zh/on-call/channel/create-edit)，建议窗口为 24 小时到 7 天，具体取决于你们处理策略失败的周期。同一主机上的同一条策略再次失败（例如 Fleet 中重置了该策略）时，会合并到同一条告警。

## Alert Key

***

* 策略失败：由策略编号（`policy.id`）和主机编号（`hosts[].id`）共同计算
* 漏洞：由 CVE 编号和主机编号共同计算

两者都是 Fleet 数据库中的编号，在同一个 Fleet 实例内保持不变。策略名称、主机名、失败主机计数等变化不会改变 Alert Key。缺少策略编号、CVE 编号或主机编号的推送会被拒绝，并在错误信息中指出字段名。

## 告警等级

***

| 来源 | 条件 | Flashduty 等级 |
| :- | :- | :- |
| 策略 | `policy.critical` 为 `true` | Critical |
| 策略 | 其他 | Warning |
| 漏洞 | `cvss_score` 7.0 及以上 | Critical |
| 漏洞 | `cvss_score` 4.0 至 6.9 | Warning |
| 漏洞 | `cvss_score` 低于 4.0 | Info |
| 漏洞 | 无评分（该字段仅 Fleet Premium 提供） | Warning |

策略的 `critical` 选项需要 Fleet Premium 许可证，免费版 Fleet 设置时会返回 `option critical requires a premium license`。因此在免费版 Fleet 上，所有策略告警都是 Warning。

## 标签

***

| 标签 | 来源 |
| :- | :- |
| `source` | 固定为 `fleet` |
| `check` | 策略名称或 CVE 编号 |
| `resource` | 主机显示名，没有时使用主机名 |
| `host_id` / `hostname` / `host_url` | 主机编号、主机名和 Fleet 中的主机链接 |
| `policy_id` / `policy_name` / `critical` / `platform` / `team_id` | 策略相关字段 |
| `cve` / `details_link` / `cvss_score` / `epss_probability` / `cisa_known_exploit` | 漏洞相关字段 |

推送中的策略查询语句、作者信息和软件安装路径不会保存到标签中。

## 排查问题

***

* **Flashduty 返回参数错误**：错误信息会指出缺少的字段；如果提示只支持策略失败和漏洞 Webhook，请检查是否把主机状态或活动 Webhook 指向了此地址
* **没有收到告警**：策略 Webhook 只在策略由通过变为失败时触发，一直处于失败的主机不会再次推送；主机按 `FLEET_OSQUERY_POLICY_UPDATE_INTERVAL`（默认 1 小时）执行策略，结果变化后才会推送
* **告警一直不关闭**：Fleet 不发送恢复通知，请开启 **超时自动关闭**

更多字段含义请参阅 [Fleet 自动化](https://fleetdm.com/guides/automations)。
