Giám sát trong Spring Boot

Một ứng dụng production không chỉ đơn thuần là phải chạy được. Nó phải có khả năng quan sát (observable) và dễ dàng khắc phục khi gặp lỗi. Bạn cần các bước kiểm tra sức khỏe (health checks), các chỉ số (metrics), nhật ký (logs) và các quy trình rõ ràng để xử lý sự cố.

Spring Boot sử dụng Actuator để cung cấp các tính năng này. Actuator cung cấp cho bạn các endpoint như health, metrics và info. Bạn có thể công khai (expose) các endpoint này thông qua HTTP hoặc JMX.

Các lĩnh vực chính cần giám sát:

• Khả dụng (Availability): Kiểm tra uptime, readiness và liveness. • Hiệu năng (Performance): Theo dõi thời gian phản hồi (response times), độ trễ (latency) và thông lượng (throughput). • Lỗi (Errors): Theo dõi các lỗi HTTP 4xx/5xx và các tin nhắn bị lỗi. • JVM: Giám sát heap, bộ nhớ, CPU và các luồng (threads). • Cơ sở dữ liệu (Database): Theo dõi các connection pools và các truy vấn chậm (slow queries). • Kafka: Giám sát consumer lag và tỷ lệ thử lại (retry rates).

Thu thập chỉ số (Metrics Collection)

Spring Boot sử dụng Micrometer để thu thập các chỉ số. Bạn có thể sử dụng Prometheus registry để công khai các chỉ số này. Một thiết lập phổ biến bao gồm:

Spring Boot App → Prometheus → Grafana

Điều này cho phép bạn trực quan hóa dữ liệu ứng dụng trên các dashboard.

Các thực hành tốt nhất về Logging (Logging Best Practices)

Logs giúp bạn hiểu điều gì đã xảy ra trong quá trình xảy ra lỗi. Hãy sử dụng structured JSON logging trong môi trường production để giúp máy tính có thể đọc được logs.

Nên làm:

Không nên làm:

Sự ổn định vận hành (Operational Stability)

Hỗ trợ vận hành có nghĩa là giữ cho dịch vụ ổn định sau khi bạn triển khai. Bạn nên tập trung vào:

Một dịch vụ Spring Boot mạnh mẽ là dịch vụ dễ giám sát, dễ debug và dễ phục hồi.

Source: https://dev.to/antonio_casado_1fe39cd90e/monitoring-in-spring-boot-1220