Skip to content

📈 可观测性:监控、日志与追踪

构建生产级系统,必须要有一套完整的监控运维体系(Observability)。

👁️ Spring Boot Actuator

Actuator 是 Spring Boot 提供的生产级特性,暴露应用内部运行指标。

开启端点

注意安全:生产环境尽量避免暴露所有端点,且必须配合 Spring Security 进行权限控制。

yaml
management:
  endpoints:
    web:
      exposure:
        include: "health,info,metrics,prometheus" # 仅暴露必要端点
  endpoint:
    health:
      show-details: always # 显示详细健康信息 (磁盘、DB链接)
  metrics:
    tags:
      application: ${spring.application.name} # 为所有指标打上应用名标签

📊 Prometheus + Grafana

对接 prometheus

MycroMeter 会自动将指标适配为 Prometheus 格式。

  1. 引入依赖:
    xml
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
  2. 访问 /actuator/prometheus 查看抓取数据。
  3. 配置 Prometheus scraper 定时拉取此接口。

监控大盘 (Dashboard)

推荐 Grafana 面板 ID:

  • JVM (Micrometer): ID 4701
  • Spring Boot 2.1 System Monitor: ID 11378

📝 日志管理 (ELK/EFK)

推荐使用 Logback 异步记录日志,并输出 JSON 格式以便 Logstash/Filebeat 收集。

Logback 异步配置

xml
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
    <discardingThreshold>0</discardingThreshold>
    <queueSize>512</queueSize>
    <appender-ref ref="FILE"/>
</appender>

MDC 链路追踪

在日志中加入 TraceId,便于串联请求链路。

java
MDC.put("traceId", UUID.randomUUID().toString());
try {
    // 业务逻辑
} finally {
    MDC.clear();
}

提示:Spring Cloud Sleuth / Micrometer Tracing 可以自动完成此工作。

🔗 分布式链路追踪

对于微服务架构,集成 ZipkinSkyWalking

  • Trace: 一次完整的用户请求链路。
  • Span: 链路中的基本工作单元(如一次 RPC 调用)。

最后更新于: