Spring Boot 监控
生产环境中的应用程序不仅仅要能运行。它还必须具备可观测性,并且在发生故障时易于修复。你需要健康检查、指标、日志以及处理突发事件的清晰流程。
Spring Boot 使用 Actuator 来提供这些功能。Actuator 为你提供诸如 health、metrics 和 info 之类的端点。你可以通过 HTTP 或 JMX 暴露这些端点。
关键监控领域:
• 可用性:检查运行时间 (uptime)、就绪状态 (readiness) 和存活状态 (liveness)。 • 性能:跟踪响应时间、延迟和吞吐量。 • 错误:监控 HTTP 4xx/5xx 错误和失败的消息。 • JVM:监控堆、内存、CPU 和线程。 • 数据库:跟踪连接池和慢查询。 • Kafka:监控消费者滞后 (consumer lag) 和重试率。
指标收集
Spring Boot 使用 Micrometer 来收集指标。你可以使用 Prometheus 注册表来暴露这些指标。常见的配置包括:
Spring Boot App → Prometheus → Grafana
这让你能够在仪表板上实现应用程序数据的可视化。
日志最佳实践
日志有助于你了解故障发生时的情况。在生产环境中使用结构化 JSON 日志,使日志具备机器可读性。
应该做:
- 记录业务 ID,例如
orderId或customerId。 - 使用关联 ID (correlation IDs) 来关联来自单个请求的日志。
- 在异常中包含堆栈跟踪 (stack traces)。
- 使用结构化日志。
不应该做:
- 记录密码、令牌或个人数据。
- 在循环内部记录过多数据。
- 使用
System.out.println。 - 使用空的
catch块来隐藏错误。
运维稳定性
运维支持意味着在部署后保持服务的稳定性。你应该关注:
- 用于调查问题的事件支持。
- 用于尽早发现问题的仪表板和告警。
- 用于指导恢复步骤的运维手册 (Runbooks)。
- 针对发布失败的回滚策略。
一个强大的 Spring Boot 服务应该是易于监控、易于调试且易于恢复的。
出处:https://dev.to/antonio_casado_1fe39cd90e/monitoring-in-spring-boot-1220