Observability for Distributed Systems

Mental model

Một event runtime có thể được nhìn qua ba projection:

  • log: một sự kiện cụ thể với context chi tiết;
  • metric: tổng hợp nhiều event thành time series;
  • trace: nối các span của một request qua nhiều service.

Observability tốt không phải có thật nhiều dữ liệu, mà là có dữ liệu đúng dạng để hỏi câu hỏi mới khi hệ thống có hành vi lạ.

Thiết kế dữ liệu

Câu hỏiDùng gì trướcLý do
Error rate đang tăng không?MetricsTổng hợp nhanh, alert được
Request cụ thể lỗi vì sao?Structured LoggingContext chi tiết của event
Latency nằm ở service nào?Distributed TracingThấy timeline qua service
Có nên đánh thức người trực không?Service Level Objective + AlertingBám vào user impact

Những lỗi hay gặp

  • Gắn user_id hoặc request_id vào metric label làm nổ Metric Cardinality.
  • Alert theo CPU/memory thay vì symptom user cảm nhận.
  • Dashboard giữ mọi chart từng dùng trong incident cũ.
  • Log thiếu correlation ID nên không nối được câu chuyện.
  • Trace sampling quá thô làm mất đúng request cần điều tra.

Liên kết