Alertmanager需通过Webhook将标准化、结构化、带上下文的JSON告警数据(含labels/annotations/时间戳)可靠推送至SOAR,配置send_resolved:true、认证鉴权、fingerprint去重及group_by聚合以支撑安全闭环。

Alertmanager本身不直接对接安全应急响应中心(SOAR),它需要通过Webhook作为中间桥梁。关键不是“让Alertmanager支持SOAR”,而是让它把标准化告警数据,可靠、结构化、带上下文、可追溯地推送到你的SOAR平台接收接口。
确保Alertmanager能稳定推送原始告警数据
这是所有后续集成的基础。Alertmanager的Webhook接收器只负责HTTP POST转发,不改写内容,因此你必须保证它发出的数据格式是SOAR能解析的。
- 在
alertmanager.yml的receivers中定义一个纯Webhook接收器,不要用企业微信/钉钉等第三方插件——那些插件会把告警转成IM消息格式,丢失原始标签和注解 - URL指向你SOAR平台提供的告警接入地址,例如:
http://soar-api.internal:8080/alerts/prometheus - 务必开启
send_resolved: true,这样告警恢复事件也能同步过去,便于SOAR闭环处理 - 配置
timeout: 10s和http_config中的TLS/Basic Auth参数,适配SOAR要求的安全认证方式
让SOAR接收端能正确识别并提取关键字段
Alertmanager发送的是标准JSON payload,根对象含alerts数组,每个alert含labels和annotations。SOAR的接收接口必须按此结构解析,而非当成普通表单或字符串处理。
-
labels里通常有alertname、severity、service、instance等运维维度信息,是SOAR做资产关联和分级的依据 -
annotations里应填充业务语义,比如summary、description、runbook_url、impacted_service——这些字段要由Prometheus告警规则里显式定义,不能依赖Alertmanager自动生成 - 时间字段如
startsAt、endsAt是ISO8601格式带时区(Z结尾),SOAR需用UTC解析,避免本地时区误判
增强告警可信度与可审计性
安全场景下,告警来源必须可验证,不能被伪造或重放。
- 在Alertmanager的
http_config中配置authorization,使用Bearer Token或API Key,该密钥由SOAR平台统一分发并轮换 - SOAR接收端应校验HTTP请求头中的
X-Alertmanager-Cluster或自定义签名头(如HMAC-SHA256),签名密钥仅Alertmanager与SOAR共享 - 建议在告警
labels中注入唯一追踪ID,例如trace_id: "prom-{{ rand_hex 16 }}"(需Alertmanager v0.26+支持模板函数),便于全链路日志对齐
处理告警风暴与状态同步
真实环境中,一次基础设施故障可能触发数十个关联告警。SOAR需区分“新事件”和“重复更新”,避免创建冗余工单。
- Alertmanager的
group_by应至少包含alertname和service,让同类告警聚合后再推送,减少SOAR压力 - SOAR接收逻辑需以
fingerprint(Alertmanager自动生成的哈希值)为唯一键去重,而不是靠alertname简单判断 - 当Alertmanager因网络问题重试时,SOAR应识别
status: "firing"或"resolved"并更新已有事件状态,而非新建

















