跳到主要内容
返回博客
服务工程#可观测性#SRE#OpenTelemetry#Kubernetes

从请求到告警:可观测服务的最小闭环

用日志、指标与追踪串起一次请求,并从用户影响出发设计可行动的告警。

2026年7月11日 2 分钟阅读

可观测性不是多装几个采集器,而是让一次用户请求能被定位、解释和复盘。最小闭环应回答三个问题:发生了什么、影响了谁、下一步做什么。

flowchart LR A[客户端请求] --> B[网关] B --> C[应用服务] C --> D[(数据库)] B -. trace_id .-> E[追踪] C -. 结构化事件 .-> F[日志] C -. RED 指标 .-> G[指标] E --> H[故障定位] F --> H G --> I[告警] I --> H

三类信号各司其职

信号 最适合回答 最低要求
指标 问题是否正在扩大 请求量、错误率、延迟分位数
日志 某次失败经历了什么 时间、级别、服务名、trace_id
追踪 时间消耗在哪个依赖 跨服务上下文、关键 span 属性

服务可用率可以写成:

A=NsuccessfulNtotal×100%A = \frac{N_{successful}}{N_{total}} \times 100\%

但单个平均值会掩盖尾部问题。告警应同时考虑错误预算消耗速度和持续时间,避免每次瞬时抖动都唤醒值班人员。

让告警可以行动

每条告警都应包含受影响的服务与环境、观察窗口、当前值与阈值、仪表盘链接,以及第一步排查命令。没有明确处置动作的告警更适合作为仪表盘信号。

kubectl -n sweetwater get pods -l app=payments
kubectl -n sweetwater logs deploy/payments --since=15m --prefix

上线后用一次受控失败验证整条链路:制造可识别错误,确认指标上升、日志携带相同 trace_id、追踪标记错误,并检查告警能否指向正确的运行手册。