← 返回文章列表
产品动态 4 分钟阅读 炬鲸团队

告警之后怎么走:日志、告警、链路串成一条定位路径

告警触发后,如何在同一个平台里从告警下钻到错误日志,再顺着 trace id 追到具体调用?本文拆解炬鲸 OBSERVE 的根因定位闭环,附三个实践建议。

告警之后的十分钟,决定故障影响

告警响了,运维打开监控面板,看到错误率曲线在飙。接下来呢?传统做法是切到日志系统查报错,再切到链路系统看调用链——三个系统、三套语法、三个时间窗,对不上是常态。等把根因定位出来,故障往往已经扩散。

炬鲸 OBSERVE 把告警、日志、链路做成一条可以点选的路径:告警详情页自带「下钻」入口,点击直达该时间窗内的错误日志;日志里的 trace id 是可点击链接,一跳就到这条请求的完整调用链,最终定位到具体服务、具体方法。

告警 → 日志:按标签和时间窗自动带过去

告警规则在触发时,会带上告警对象的标签:服务名、环境、实例、指标名。点进告警详情,系统已经按这些标签和时间窗把日志检索条件预填好,不用再手写查询:

SELECT * FROM logs
WHERE service = 'order-service'
  AND level IN ('ERROR', 'WARN')
  AND ts BETWEEN '2026-10-08 14:32:00' AND '2026-10-08 14:37:00'

打开详情页,看到的就是这个窗口内的报错,而不是满屏无关日志。这一步省掉的,是每次故障时手动对齐时间、猜服务名、翻检索语法的时间。

这里有个容易被忽略的细节:下钻质量取决于告警规则带的标签。如果规则只记了指标名、没写服务名和环境,点进去就是一个空过滤,还得手动补。花几分钟把每条规则的三个维度写全,下钻才可靠。

日志 → 链路:trace id 是那把钥匙

报错日志通常会带 trace id,前提是应用接入了 OpenTelemetry 并且做了日志关联。炬鲸 OBSERVE 会把日志里的 trace id 识别成可点击链接,一点就跳到这条请求的完整调用链:哪个下游超时、哪次数据库慢查询、哪次重试把请求放大,在瀑布图上一目了然。

反过来也成立:在链路上发现一个慢 span,也能下钻回该 span 所属服务的日志,看它当时的报错堆栈。

如果日志里没有 trace id,说明日志关联还没做。此时只能退回按服务、实例加时间窗手动查,但这只是临时办法——正确的修复是把 trace id 打进日志输出,在多数 OpenTelemetry 集成里就是一行配置的事。要在需要之前做好,别等到故障时再补。

三个实践建议

  1. 接入时就做关联。日志、指标、追踪统一走 OpenTelemetry,别各采各的;日志里不带 trace id,后面就串不起来,界面再好也没用。
  2. 告警规则带全标签。服务名、环境、实例三个维度写全,下钻才有落点;标签越粗,定位越慢,退回手动查询的次数越多。
  3. 把流程写进值班手册。固定成「告警 → 错误率曲线 → 错误日志 → trace → 根因」五步,新人照着走,不必每次现想。

可观测系统的价值,不在采集了多少数据,而在故障发生时能多快把数据变成结论。告警、日志、链路串成一条路径,就是把这个"多快"做到最短。