Java 可观测性

指标、日志、追踪三位一体:如何让服务在生产中可提问、可定位。

#type / concept #status / growing #tech / dev #resource / java

[!info] 关联笔记

Java 可观测性

这个概念为什么出现

服务变慢或出错时,需要回答:哪条路径、哪个依赖、多少错误、哪个实例。可观测性把日志、指标、追踪连成可查询证据。

[!abstract] 一句话理解 指标描述整体健康,日志提供事件细节,追踪连接一次请求的跨服务因果;用 correlation id 把三者串起来。

最小可运行示例

场景:为请求生成 correlation id 并打日志

import java.util.UUID;
import java.util.logging.Logger;

public class CorrelationDemo {
    private static final Logger log = Logger.getLogger(CorrelationDemo.class.getName());
    static void handle() {
        String cid = UUID.randomUUID().toString();
        log.info(() -> "cid=" + cid + " event=start");
        log.info(() -> "cid=" + cid + " event=done");
    }
    public static void main(String[] args) { handle(); }
}
javac CorrelationDemo.java && java CorrelationDemo

期望:两行日志含同一 cid。

结合场景再看三个关注点

  1. cid 沿 HTTP 头传播
  2. RED/USE 指标思维。
  3. 采样追踪控成本。

核心概念与准确模型

1. 三大支柱

2. OpenTelemetry / Micrometer 生态

3. SLO 与告警

边界情况与反直觉行为

  1. 高基数标签炸掉时序库。
  2. 日志含 PII。
  3. 只加工具不加黄金指标。

常见误区

[!warning] 常见误区:有仪表盘=可观测 还要能按请求钻取因果。

工程实践

  1. 统一 cid/traceId。
  2. 错误率/延迟分位/饱和度。
  3. 依赖分类隔离。
  4. 演练“无日志也能定位吗”。

本节总结

  • 日志+指标+追踪
  • 关联是关键
  • 服务可靠性底座

自测题

  1. 高基数标签为何危险?
  2. 追踪采样的权衡?
参考答案
  1. 时间序列爆炸、成本与查询变差。
  2. 成本 vs 罕见问题可见性。

延伸阅读与资料来源

资料类型支撑内容
OpenTelemetry标准/项目可观测
MicrometerJava 指标
创建于 2026/7/15 更新于 2026/7/15