在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。使用专属集成
如果您只需将告警发往一个协作空间,选择此方式,配置更简单。查看专属集成的配置步骤
查看专属集成的配置步骤
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增集成
- 选择 Elastic,点击 保存
- 打开生成的集成卡片,复制 推送地址
使用共享集成
如果您需要根据告警事件的 Payload 将告警路由到不同协作空间,选择此方式。查看共享集成的配置步骤
查看共享集成的配置步骤
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 Elastic,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
前提条件
- 订阅级别:Kibana 的 Webhook 和 PagerDuty 连接器属于 Elastic Gold 及以上订阅(Basic 不包含),30 天试用许可证也可以使用。详见 Elastic 订阅对比。
- 网络:Kibana 需要能访问 Flashduty 推送地址。如果自建 Kibana 在
kibana.yml中配置了xpack.actions.allowedHosts,请把推送地址的主机名(如api.flashcat.cloud)加入该列表,否则连接器会拒绝发送。 - 权限:需要有创建连接器和编辑规则的 Kibana 权限,详见 Alerting 权限说明。
在 Kibana 中配置
1
创建 Webhook 连接器
操作路径:Kibana › Stack Management › Connectors › Create connector › Webhook(8.x 部分版本位于 Stack Management › Alerts and Insights › Connectors)
点击 Save。
2
为规则添加告警动作
操作路径:Kibana › 编辑或创建规则 › Actions › 选择
Flashduty 连接器3
为 Recovered 再添加一个动作
操作路径:Kibana › 编辑或创建规则 › Actions › Add action
如果规则有多个告警动作组(例如 Metric threshold 规则的
Alert 和 Warning,SLO burn rate 规则的 Critical、High、Medium、Low),请为每个动作组各添加一个动作,并在模板中填写对应的 severity。4
验证生命周期
操作路径:Kibana › Stack Management › Connectors让规则真正命中条件,确认 Flashduty 收到活跃告警;再让数据恢复正常,确认原告警恢复。几秒后回到 Flashduty,集成显示 最新事件时间,说明配置成功。连接器的 Test 页面发送的是您手工填写的 Body,不会渲染规则和告警变量,只能用来验证推送地址可达。如果在 Test 中粘贴了下方模板,Flashduty 会收到原样的
{{rule.id}}、{{alert.id}},并创建一条标题为 {{rule.name}} 的活跃告警;把 Body 中的 action_group 改为 recovered 再点一次 Run,即可恢复这条测试告警。动作模板
把下面的 JSON 粘贴到每个动作的 Body:
Kibana 会对 Body 中的变量做 JSON 转义,规则名称或描述中的引号和换行不会破坏 JSON。
自定义标签
如需把规则上下文中的字段作为 Flashduty 标签(用于路由或降噪),在模板中增加custom_labels 对象,例如:
Alert Key
Flashduty 使用rule_id 和 alert_id 共同生成 Alert Key。
rule.id是规则的唯一标识。alert.id是规则产生的单个告警的 ID。对于按字段分组的规则,它是分组值(如某台主机名);未分组的规则通常是固定值(如*)。同一告警从活跃到 Recovered 期间alert.id不变。- Kibana 自带的 PagerDuty 连接器也以
<rule ID>:<alert ID>作为默认 dedup key,关联同一告警的触发与恢复,与本集成一致。
alert.uuid 在告警活跃期间保持不变,同一个 alert.id 恢复后再次触发时会生成新的 UUID。Flashduty 只把它保存为 alert_uuid 标签,便于在 Kibana 中定位某一次告警。Flashduty 的告警恢复后,同一 Alert Key 的下一次触发会创建新告警,因此使用 alert.id 同样是”每次触发对应一条告警”。
规则名称、标签、等级、描述、动作组的变化都不会改变 Alert Key。例如 Metric threshold 规则的同一分组从 Warning 变为 Alert 时,两次通知的 Alert Key 相同。
状态和告警等级
severity 不区分大小写。填写其他值时 Flashduty 会拒绝请求,避免拼写错误导致告警等级错误。
Security 检测规则不会发送 Recovered 通知,每条检测告警都会在 Flashduty 中生成一条独立告警,需要在 Flashduty 中手动关闭或配置自动关闭。
使用 PagerDuty 连接器(可选)
如果已有规则在使用 Kibana 的 PagerDuty 连接器,也可以把它指向 Flashduty 的 PagerDuty 兼容集成,无需改写动作内容。此方式接入的是 Flashduty 的 PagerDuty 兼容集成,不是本页的 Elastic 集成。- 在 Flashduty 中添加一个 PagerDuty 兼容 集成,复制推送地址
- 在 Kibana 中创建 PagerDuty 连接器:API URL 填写该推送地址(即
{integration_url}),Integration Key 填写推送地址中的集成密钥 - 规则动作选择 For each alert,为告警动作组添加 Event action 为
Trigger的动作,为 Recovered 添加 Event action 为Resolve的动作(Recovered 动作默认就是Resolve) - 两个动作的 DedupKey 都保留 Kibana 预填的
{{rule.id}}:{{alert.id}},不要清空,这样恢复事件会关闭对应的告警。Trigger 动作的 DedupKey 为空时,Kibana 不发送dedup_key,Flashduty 会为每次触发生成随机的 Alert Key,恢复事件将无法关闭它
排查问题
- Kibana 报
target url "..." is not added to the Kibana config xpack.actions.allowedHosts:将 Flashduty 推送地址的主机名加入xpack.actions.allowedHosts - Flashduty 返回以
alert_id is required开头的错误:动作的 Action frequency 选择了 Summary of alerts,请改为 For each alert - Flashduty 返回
rule_id is required:Body 不是本页模板,或rule_id被修改 - 告警没有恢复:确认为 Recovered 添加了动作,且 Body 中保留了
"action_group": "{{alert.actionGroup}}" - 不同主机的告警合并成一条:确认规则设置了分组(Group by),且 Body 中保留了
{{alert.id}} - Flashduty 返回
severity ... is not supported:severity只能是 Critical、Warning、Info,或 Security 规则的 critical、high、medium、low