跳转到主要内容
Flashduty 实现了 PagerDuty Events API,输入和响应完全兼容。因此您可以通过 PagerDuty 协议推送告警事件到 Flashduty On-call,实现告警事件自动化降噪处理。 同样的,对于已经支持推送事件到 PagerDuty 的告警系统(如 ElastAlert),你仅需要修改目的推送地址,即可利用 PagerDuty 协议推送事件到 Flashduty 。

在 Flashduty On-call


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

使用专属集成

当您不需要将告警事件路由到不同的协作空间,优先选择此方式,更简单。
  1. 进入 Flashduty 控制台,选择 协作空间,进入某个空间的详情页面
  2. 选择 集成数据 tab,点击 添加一个集成,进入添加集成页面
  3. 选择 PagerDuty 集成,点击 保存,生成卡片。
  4. 点击生成的卡片,可以查看到 推送地址,复制备用,完成。

使用共享集成

当您需要根据告警事件的 Payload 信息,将告警路由到不同的协作空间,优先选择此方式。
  1. 进入 Flashduty 控制台,选择 集成中心=>告警事件,进入集成选择页面。
  2. 选择 PagerDuty 集成:
    • 集成名称:为当前集成定义一个名称。
  3. 配置默认路由,并选择对应的协作空间(集成创建后可以前往 路由 进行更多路由规则的配置)。
  4. 点击 保存 后,复制当前页面的新生成的 推送地址 备用。
  5. 完成。

在 PagerDuty


请求地址

{api_host}/event/push/alert/pagerduty
该地址同时支持 PagerDuty V1 和 V2 Events API。您必须修改 PagerDuty 地址为该地址。

Pagerduty V2 Events

参考文档:

PagerDuty V2 Events

鉴权方式:

两种方式任选其一:
  • 方式 1:在 QueryString 中包含参数 integration_key
  • 方式 2:将 integration_key 作为 routing_key 参数传入 Payload

Pagerduty V1 Events

参考文档:

PagerDuty V1 Events

鉴权方式:

两种方式任选其一:
  • 方式 1:在 QueryString 中包含参数 integration_key
  • 方式 2:将 integration_key 作为 service_key 参数传入 Payload

配置示例

ElastAlert2 为例:
  1. 步骤 1:获得推送地址
在当前页面填写集成名称并保存,重新打开集成详情,复制推送地址,如:
{api_host}/event/push/alert/pagerduty?integration_key=xxx
  1. 步骤 2:修改推送地址
修改已经部署好的 ElastAlert 实例对应源码,查看 diff drawing
  1. 步骤 3:上报告警事件
遵循 ElastAlert PagerDuty 推送配置文档 步骤,配置告警:
name: "b"
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: pagerduty
pagerduty_service_key: xxx
pagerduty_client_name: wahaha
pagerduty_api_version: v2
pagerduty_v2_payload_class: ping failure
pagerduty_v2_payload_component: mysql
pagerduty_v2_payload_group: app-stack
pagerduty_v2_payload_severity: error
pagerduty_v2_payload_source: mysql.host.name
# ------- Flashduty ----------------
  1. 步骤 4:重启 ElastAlert,等待告警触发