1.1 三信号概念总览:日志、链路、指标的定义与关系
在可观测性工程中,日志(Log)、链路(Trace)、指标(Metric) 被称为“三信号”(Three Pillars)。它们各自从不同维度描述系统状态,只有将三者联动分析,才能实现真正的智能运维。
1.1.1 三信号定义与核心特征
| 信号类型 | 英文 | 核心定义 | 数据形态 | 典型用途 |
|---|---|---|---|---|
| 日志 | Log | 离散的、带时间戳的事件记录,描述“发生了什么” | 非结构化/半结构化文本(JSON、纯文本) | 错误排查、审计、详细上下文分析 |
| 链路 | Trace | 一次请求在分布式系统中的完整调用路径,描述“请求经历了什么” | Span 树结构(Trace ID + Span ID) | 性能瓶颈定位、依赖关系分析、请求追踪 |
| 指标 | Metric | 可聚合的、时序化的数值测量,描述“系统状态如何” | 时序数据(时间戳 + 数值 + 标签) | 告警、趋势分析、容量规划、SLO 监控 |
关键认知:三信号不是孤立的“三个工具”,而是同一系统行为在不同抽象层次上的投影。日志提供细节,链路提供路径,指标提供趋势。
1.1.2 三信号关系模型
三信号之间通过元数据关联形成闭环:
- 指标 → 链路:当指标(如 P99 延迟突增)触发告警时,可下钻到对应时间窗口内的链路数据,找到慢请求的调用链。
- 链路 → 日志:从链路中的 Span 携带的 Trace ID,可关联到该请求产生的所有日志,获取详细的错误堆栈或业务上下文。
- 日志 → 指标:对日志中的关键字段(如错误码、响应时间)进行聚合计算,可生成新的指标(如错误率、平均延迟)。
1.1.3 三信号联动修复的价值
传统运维中,三信号通常被割裂使用:指标告警后手动查日志,日志查完再手动追踪链路。这种“串行排查”模式在微服务架构下效率极低。三信号联动修复的核心价值体现在:
| 价值维度 | 传统割裂模式 | 三信号联动模式 | 效率提升 |
|---|---|---|---|
| 故障定位速度 | 人工切换工具,平均 MTTD 15~30 分钟 | 自动关联下钻,MTTD 缩短至 1~3 分钟 | 10x |
| 根因分析准确率 | 依赖个人经验,误判率 > 40% | 数据驱动关联,误判率 < 10% | 4x |
| 告警噪音过滤 | 大量重复告警,Signal/Noise 比低 | 通过链路上下文过滤无效告警 | 显著提升 |
| 自动化修复能力 | 仅支持简单阈值自愈 | 支持基于链路上下文的精准自愈 | 新能力 |
实战案例:某电商平台大促期间,支付接口 P99 延迟从 200ms 飙升至 5s。联动修复流程:指标告警 → 自动关联链路发现“支付网关”Span 耗时异常 → 下钻日志发现数据库连接池耗尽 → 自动触发连接池扩容。全程 90 秒,避免了一次大规模故障。
1.1.4 三信号联动修复的典型流程
一个标准的三信号联动修复闭环包含以下步骤:
- 指标检测:通过预定义的 SLO/SLI 指标(如错误率、延迟、吞吐量)触发告警。
- 链路下钻:从告警时间窗口内,自动提取异常指标对应的链路样本,识别异常 Span 和故障服务。
- 日志关联:从异常 Span 中提取 Trace ID,关联该请求产生的所有日志,定位具体错误原因(如 SQL 慢查询、OOM、网络超时)。
- 根因判定:综合三信号数据,通过规则引擎或 AI 模型判定根因。
- 自动修复:执行预定义的修复动作(如重启、扩容、降级、限流)。
- 反馈闭环:修复后指标恢复,链路恢复正常,日志错误消失,闭环确认。
常见误区:不要试图在所有场景下都做全链路联动。对于低频、非关键路径的告警,联动成本可能高于收益。建议先对核心服务(如支付、登录、下单)建立联动修复机制,逐步扩展。
1.1.5 三信号联动修复的技术栈概览
实现三信号联动需要统一的数据采集、存储和分析平台。以下是业界主流技术栈:
| 信号 | 采集层 | 存储层 | 分析层 | 联动关键 |
|---|---|---|---|---|
| 日志 | Fluentd / Logstash / Filebeat | Elasticsearch / Loki | Kibana / Grafana | 日志中携带 Trace ID |
| 链路 | OpenTelemetry SDK / Jaeger Agent | Jaeger / Tempo / Zipkin | Jaeger UI / Grafana | Span 携带 Service Name 和 Timestamp |
| 指标 | Prometheus Exporter / Telegraf | Prometheus / VictoriaMetrics / Thanos | Grafana / Alertmanager | 指标标签包含 Service Name |