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

# ElastAlert2 告警集成指引

> 通过 ElastAlert2 的 Provider 将告警事件推送到 Flashduty On-call，实现告警事件自动化降噪处理。

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

  您可通过以下2种方式，获取一个集成秘钥，任选其一即可。

  #### 使用专属集成

  当您不需要将告警事件路由到不同的协作空间，优先选择此方式，更简单。

  <AccordionGroup>
    <Accordion title="展开">
      1. 进入 Flashduty 控制台，选择 **协作空间**，进入某个空间的详情页面
      2. 选择 **集成数据** tab，点击 **添加一个集成**，进入添加集成页面
      3. 选择 **ElastAlert 2** 集成，点击 **保存**，生成卡片。
      4. 点击生成的卡片，可以查看到 **集成秘钥**，复制备用，完成。
    </Accordion>
  </AccordionGroup>

  #### 使用共享集成

  当您需要根据告警事件的 Payload 信息，将告警路由到不同的协作空间，优先选择此方式。

  <AccordionGroup>
    <Accordion title="展开">
      1. 进入 Flashduty 控制台，选择 **集成中心=>告警事件**，进入集成选择页面。
      2. 选择 **ElastAlert 2** 集成：
         * **集成名称**：为当前集成定义一个名称。
      3. 配置默认路由，并选择对应的协作空间（集成创建后可以前往 `路由` 进行更多路由规则的配置）。
      4. 点击 **保存** 后，复制当前页面的新生成的 **集成秘钥** 备用。
      5. 完成。
    </Accordion>
  </AccordionGroup>
</div>

## 在 ElastAlert 2

***

### 配置 ElastAlert 2 告警

遵循 [ElastAlert Flashduty](https://elastalert2.readthedocs.io/en/latest/alerts.html#flashduty) 推送配置文档

1. 创建或编辑告警规则文件，例如 `rules/elastalert2_alert.yaml`。
2. 在 `alert` 字段中填写 `flashduty` 告警类型。
3. 在 `flashduty_integration_key` 字段中填写集成的 `集成秘钥`。
4. 其中 `flashduty_title` 和 `flashduty_event_status` 是必填字段，其他字段可以按需填写，字段释义请参考下表：

|       字段      |  必含 |   类型   | 释义                                                                                                                  |
| :-----------: | :-: | :----: | :------------------------------------------------------------------------------------------------------------------ |
|     title     |  是  | string | 告警标题，不超过`512`个字符，超出后将自动截断。                                                                                          |
| event\_status |  是  | string | 告警状态。<br /><br />枚举值（`首字母大写`）：*Critical*：严重，*Warning*：警告，*Info*：提醒，*Ok*：恢复。<br /><br />当指定为Ok时，意味着对告警进行自动恢复。        |
|   alert\_key  |  否  | string | 告警标识，用于对已经存在的告警进行更新或自动恢复。<br /><br />您可以自定义此值，但不可超过`255`个字符。您也可以依赖系统自动生成，该值会在响应中返回。<br /><br />如果您上报的是恢复事件，则此值必须存在。 |
|  description  |  否  | string | 告警描述                                                                                                                |
|     check     |  否  | string | 告警检查项                                                                                                               |
|    resource   |  否  | string | 告警资源                                                                                                                |
|    service    |  否  | string | 告警服务名                                                                                                               |
|     metric    |  否  | string | 告警指标名                                                                                                               |
|     group     |  否  | string | 告警发生的组                                                                                                              |
|    cluster    |  否  | string | 告警发生的集群                                                                                                             |
|      app      |  否  | string | 告警发生的应用                                                                                                             |
|      env      |  否  | string | 告警发生的环境                                                                                                             |

**示例：**

```yaml theme={null}

name: "elastalert2 告警"
type: "frequency"
index: "pgy_audit*"
is_enabled: true
num_events: 1
realert:
  minutes: 1
terms_size: 50
scan_entire_timeframe: true
timeframe:
  minutes: 60
timestamp_field: "created_at"
timestamp_type: "unix_ms"
use_strftime_index: false
alert_subject: "Test {0} 123 aa☃ {1}"
alert_subject_args:
  - "account_id"
  - "operation"
alert_text: "Test {0}  123 bb☃ {1}"
alert_text_args:
  - "request_id"
  - "operation_name"
filter:
  - query:
      query_string:
        query: "created_at:*"

# ------- Flashduty ----------------
alert: flashduty
flashduty_integration_key: "xxxx"
flashduty_title: "elastalert2 告警"
flashduty_event_status: "Warning"
flashduty_alert_key: "abc"
flashduty_description: "log error"
flashduty_check: "log error"
flashduty_resource: "10.1.1.1"
flashduty_service: "service1"
flashduty_metric: "error"
flashduty_group: "group1"
flashduty_cluster: "bj"
flashduty_app: "app1  "
flashduty_env: "dev"
# ------- Flashduty ----------------
```

5.重启 ElastAlert，等待告警触发。
