99 Ngày Spring — Ngày 70: Observability: metrics, tracing và log
Một API trả lời chậm cần hơn một dòng log. Observability kết hợp metrics để thấy xu hướng, traces để đi theo request qua các service, và logs để xem chi tiết sự kiện. Spring Boot 3.x tích hợp Actuator, Micrometer Observation và Micrometer Tracing; muốn xuất dữ liệu ra ngoài vẫn cần registry/exporter phù hợp.

1. Metrics: đo điều quan trọng
Actuator cung cấp nhiều metric JVM/HTTP mặc định; MeterRegistry giúp thêm Counter, Timer, Gauge theo nhu cầu. Đo request rate, lỗi và latency phân vị; đừng gắn userId/orderId làm tag vì cardinality cao làm nổ số chuỗi thời gian. Chỉ expose endpoint Actuator cần thiết theo chính sách truy cập.
Counter.builder("orders.failed")
.tag("reason", "partner_timeout")
.register(registry)
.increment();2. Trace: theo hành trình request
Micrometer Tracing tạo trace/span context khi có bridge và exporter thích hợp. Trace ID nối các span thuộc một hành trình, span ID phân biệt một thao tác. Khi gọi dịch vụ ngoài, truyền context qua HTTP instrumentation; khi sang executor tùy chỉnh, kiểm tra context propagation thay vì giả định ThreadLocal tự đi theo.
Observation.createNotStarted("partner.lookup", registry)
.observe(() -> partnerClient.lookup(id));3. Structured log và correlation
Log JSON giúp tìm theo field thay vì phân tích chuỗi tự do. Spring Boot 3.4+ hỗ trợ cấu hình structured logging trực tiếp; với 3.0–3.3 cần cấu hình encoder tương ứng, không dùng nhầm property của phiên bản mới. Gắn traceId/spanId hoặc correlationId vào log, nhưng che token, email và payload nhạy cảm.
# Spring Boot 3.4+ only
logging.structured.format.console=logstash
# Pair with a tracing bridge for trace/span IDs.4. Từ tín hiệu đến hành động
Dashboard nên trả lời: lỗi tăng ở đâu, độ trễ tăng từ khi nào, đối tác nào chậm. Cảnh báo dựa vào tỷ lệ lỗi và độ trễ có ngưỡng, không chỉ số request tuyệt đối. Khi nhận cảnh báo, bắt đầu từ metric, mở trace mẫu, rồi tìm log theo ID. Lấy mẫu trace phù hợp tải và yêu cầu riêng tư.
Kiểm tra metric có xuất hiện trước khi dựa vào alert.
Thử một request lỗi và theo ID qua log, trace, response.
Metrics chỉ ra xu hướng, traces chỉ đường đi, logs cho chi tiết. Dùng chung ID và giới hạn cardinality để ba nguồn kết nối được. Ngày 71 chuyển sang tổng quan microservices và các đánh đổi.
Tài liệu đối chiếu
https://docs.spring.io/spring-boot/3.5/reference/actuator/metrics.html
https://docs.spring.io/spring-boot/3.5/reference/actuator/tracing.html
https://docs.spring.io/spring-boot/3.5/reference/features/logging.html
Site Admin
Engineer and writer. Building things with TypeScript and distributed systems.
Bình luận (0)
Bạn cần đăng nhập bằng Google để bình luận.
Hãy là người bình luận đầu tiên.


