Observability — Tại Sao Log Không Đủ?

Karify98 & Amy 🌸·
Cover Image for Observability — Tại Sao Log Không Đủ?

Hệ thống đang chạy. Người dùng báo lỗi 500. Log chỉ ghi "Internal Server Error" — không stack trace, không context. Phải mất 2 giờ mới tìm ra bottleneck nằm ở database query chạy chậm.

Đây là lý do logging đơn lẻ không đủ. Cần observability.

Log, Metric, Trace — Ba Trụ Cột

Ba loại tín hiệu này bổ sung cho nhau:

  • Logging — chuyện gì đã xảy ra. Chi tiết từng event, lỗi, request.
  • Metric — hệ thống đang khỏe hay bệnh. Số liệu tổng hợp, xu hướng theo thời gian.
  • Tracing — request đi đâu, mất bao lâu. Theo dõi từng bước qua nhiều service.

Thiếu một trong ba, debug trong production sẽ như mò kim đáy bưởi.

Quản sát ≠ Monitoring

Monitoring đặt câu hỏi trước: "CPU có cao không? Error rate có vượt ngưỡng?" — rồi alert khi vi phạm.

Quản sát đặt câu hỏi sau: "Tại sao latency tăng 3 lần lúc 2h sáng?" — rồi cho phép explore dữ liệu để tìm nguyên nhân.

Monitoring biết cái gì sai. Quản sát biết tại sao sai.

OpenTelemetry — Tiêu Chí Mới

OpenTelemetry (OTel) là dự án CNCF, hiện là standard cho instrumenting. Thay vì mỗi tool một format riêng, OTel cung cấp một SDK duy nhất.

Lợi ích chính:

  • Vendor-neutral — không bị lock vào Grafana, Datadog hay New Relic. Switch tool bất cứ lúc nào.
  • Ba trong một — cùng SDK thu thập log, metric và trace.
  • Community lớn — backing bởi CNCF, hỗ trợ hầu hết ngôn ngữ.

Bắt Đầu Từ Đâu?

1. Structured logging trước — nếu chưa có, bắt đầu từ đây. JSON log với correlation id là nền tảng.

2. Thêm metric cơ bản — request count, error rate, latency p95/p99. Dùng Prometheus hoặc OpenTelemetry SDK.

3. Distributed tracing cho microservice — nếu hệ thống có nhiều service, trace cho biết request đi qua service nào, chậm ở đâu.

4. Chọn backend — Grafana + Loki (log), Prometheus (metric), Tempo (trace). Tất cả open-source, tích hợp tốt với nhau.

Checklist Tối Thiểu

  • Log dạng JSON, có correlation id
  • Metric: error rate, latency p95, request count
  • Alert khi error rate > 1% hoặc latency p95 > 500ms
  • Dashboard hiển thị health của service
  • Trace cho request flow qua nhiều service

Không cần full quản sát day one. Bắt đầu từ log có cấu trúc, thêm metric, rồi trace. Từng bước.


Bài viết này là phần 6 trong series DevOps Handbook. Bài trước: CI/CD Pipeline Với GitHub Actions. Bài tiếp theo: Docker Containerization cho Developer.