事件关联:把告警、变更与拓扑串成故障时间线

用统一时间、实体标识和因果约束关联多源事件,降低告警风暴中的人工筛选成本。

文章目录 · 4 节

时间接近不等于因果相关。有效的事件关联需要回答:事件属于哪个实体、实体之间如何依赖、变化是否先于影响、证据强度有多高。

先统一事件模型

{
  "occurred_at": "2025-12-03T02:14:21Z",
  "source": "deployment",
  "entity": "service/checkout",
  "region": "cn-east-1",
  "change_id": "chg-2048"
}

所有来源使用 UTC 事件时间,同时保留采集时间。实体 ID 应能关联服务目录、集群对象和云资源,不能只依赖易变的主机名。

逐级建立关联

  • 同一实体在短窗口内的重复告警先去重
  • 父子依赖同时异常时压缩为影响链
  • 发布、配置和权限变更作为高价值上下文
  • 跨地域同时发生时考虑共同上游而非局部节点

相关性规则要输出依据,例如“变更后 4 分钟错误率上升”,而不是只给一个不可解释的分数。

防止错误归因

保留未匹配事件,允许值班人员拆分或合并事件簇。自动关联只能辅助排序,不能未经验证直接执行回滚。

收尾清单

用历史事故回测召回率和误关联率。每次复盘标注真实根因与关键前兆,持续更新拓扑和规则,而不是只增加模型复杂度。