Giám sát và logging trong hệ thống Microservice

Service chết, nhưng log nằm rải rác 10 nơi, tìm kiểu gì đây anh?

Một app TMĐT Việt Nam tách 5 microservice, nhưng khi Order Service crash, team phải lật log trên CloudWatch, Prometheus, và cả file local. Không có tracing, debug như “tìm crush trong đám đông”.


Logging và tracing trong microservice

  • Centralized logging: Dùng ELK (Elasticsearch, Logstash, Kibana) hoặc Loki để gom log từ tất cả service.  
  • Distributed tracing: Dùng Jaeger/OpenTelemetry để theo dõi request qua nhiều service.  
  • Log với trace_id: Mỗi request có ID duy nhất để trace từ API Gateway đến DB.  
  • Alerting: Cấu hình alert cho error rate, timeout (Prometheus Alertmanager).

Ví dụ thực tế: App TMĐT dùng OpenTelemetry để trace request từ Order Service → Payment Service, log JSON vào Loki, alert qua Slack nếu timeout >2s.

Code mẫu: Log với trace_id (Node.js)

const { trace } = require('@opentelemetry/api');
const logger = require('winston');
logger.info('Processing order', { traceId: trace.getSpanContext().traceId });

Góc nhìn CTO

Microservice không có logging/tracing thì như “đi đêm không đèn”. Đầu tư ELK/Loki và Jaeger sớm, để debug không thành “trò chơi đoán lỗi”.

Checklist giám sát microservice:  
  • Gom log vào ELK/Loki, format JSON.  
  • Thêm trace_id, span_id cho mỗi request.  
  • Dùng Jaeger/OpenTelemetry để trace distributed.  
  • Cấu hình alert cho error rate, timeout.

🎯 Tóm lại: Microservice log rải rác là “ác mộng” debug. Dùng centralized logging, tracing, alert để tìm lỗi nhanh, không phải “đoán mò”!

Post a Comment

Mới hơn Cũ hơn