Spring Boot应用的可观测性:从日志到全链路追踪
Observability for Spring Boot Applications: From Logging to Distributed Tracing
| iDev Tech | 2026-08-26T09:09:08
构建生产级Spring Boot应用的可观测性体系,涵盖结构化日志、指标采集、分布式追踪和告警配置的完整实践。
Building a production-grade observability system for Spring Boot applications, covering structured logging, metrics collection, distributed tracing, and alerting configuration.
可观测性三支柱 可观测性(Observability)由三个支柱组成:日志(Logs)、指标(Metrics)、追踪(Traces)。在微服务架构中,单独依靠任何一个都不够,需要将三者结合才能快速定位和解决问题。 1. 结构化日志 告别非结构化的文本日志,使用JSON格式的结构化日志: // logback-spring.xml <appender name="JSON" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="net.logstash.logback.encoder.LogstashEncoder"> <includeMdcKeyName>traceId</includeMdcKeyName> <includeMdcKeyName>spanId</includeMdcKeyName> <includeMdcKeyName>userId</includeMdcKeyName> </encoder> </appender> 2. Micrometer指标 Spring Boot Actuator + Micrometer提供了开箱即用的指标采集: @Bean MeterRegistryCustomizer<MeterRegistry> metricsConfig() { return registry -> registry.config() .commonTags("app", "order-service", "env", "prod"); } // 自定义业务指标 @Timed(value = "order.processing", description = "Order processing time") public Order processOrder(OrderRequest request) { ... } 3. 分布式追踪 使用Micrometer Tracing + OpenTelemetry实现全链路追踪: # application.yml management: tracing: sampling: probability: 1.0 otlp: tracing: endpoint: http://jaeger:4318/v1/traces 4. 告警配置 基于Prometheus的告警规则示例: groups: - name: spring-boot-alerts rules: - alert: HighErrorRate expr: rate(http_server_requests_seconds_count{status=~"5.."}[5m]) > 0.1 for: 5m labels: severity: critical 推荐技术栈 日志:Logback + ELK / Loki 指标:Micrometer + Prometheus + Grafana 追踪:Micrometer Tracing + Jaeger / Tempo
Three Pillars of Observability Observability consists of Logs, Metrics, and Traces. In microservice architectures, combining all three is essential for rapid problem identification and resolution. Recommended Stack Logging: Logback + ELK / Loki Metrics: Micrometer + Prometheus + Grafana Tracing: Micrometer Tracing + Jaeger / Tempo