1. 15:08 07/08/2026
Khi một web/app chạy bình thường, rất ít người để ý đến khả năng quan sát hệ thống. Nhưng đến lúc người dùng than chậm, đơn hàng “mất tích” hoặc API thỉnh thoảng trả lỗi khó hiểu, bạn mới thấy việc ghi log, đo chỉ số và theo dõi luồng xử lý quan trọng đến mức nào.
Một hệ thống tốt không chỉ cần chạy được, mà còn phải trả lời được ba câu hỏi: chuyện gì đang xảy ra, xảy ra ở đâu, và vì sao xảy ra. Đó là lý do logging, metrics và tracing nên được thiết kế từ sớm.
1. Logging: ghi lại sự kiện có ngữ cảnh
Log không phải là chỗ để in mọi thứ ra màn hình. Hãy ghi những thông tin có ích cho việc điều tra:
- Thời điểm xảy ra
- Mã request hoặc correlation id
- User id hoặc tenant id nếu phù hợp
- Hành động chính: tạo đơn, đăng nhập, thanh toán, gửi email
- Kết quả: thành công hay lỗi, lỗi gì
Ví dụ thực tế: khi một đơn hàng bị chậm, nếu log có request id xuyên suốt từ API gateway đến service thanh toán và service email, bạn sẽ lần theo được đường đi của request nhanh hơn rất nhiều.
2. Metrics: nhìn hệ thống bằng con số
Metrics giúp bạn thấy xu hướng, không chỉ sự cố lẻ tẻ. Một vài chỉ số nên theo dõi:
- Tỉ lệ lỗi của từng API
- Thời gian phản hồi trung bình và theo phân vị
- Số lượng request đang xử lý
- Tỉ lệ job nền thất bại
- Hàng đợi có bị dồn hay không
Ví dụ: nếu chức năng tìm kiếm vẫn trả kết quả đúng nhưng thời gian phản hồi tăng dần theo ngày, metrics sẽ cho bạn tín hiệu sớm trước khi người dùng bắt đầu phàn nàn.
3. Tracing: lần theo một request đi qua nhiều lớp
Trong kiến trúc có nhiều service, lỗi hiếm khi nằm ở một chỗ duy nhất. Tracing giúp bạn thấy request đi qua những đâu, mất thời gian ở bước nào. Điều này đặc biệt hữu ích với:
- Thanh toán nhiều bước
- Đặt hàng có gọi sang nhiều dịch vụ
- Ứng dụng có API backend, cache, queue và service bên thứ ba
4. Làm sao để triển khai thực tế?
- Dùng định dạng log nhất quán, ưu tiên log có cấu trúc thay vì chuỗi văn bản tự do
- Gắn request id từ đầu vào đến cuối luồng xử lý
- Không ghi dữ liệu nhạy cảm như mật khẩu, token, số thẻ
- Tách mức độ log: info, warning, error
- Chọn vài chỉ số thật sự có ý nghĩa thay vì thu thập quá nhiều rồi không ai xem
- Với tracing, chỉ cần bắt đầu từ những luồng quan trọng nhất
5. Sai lầm phổ biến cần tránh
- Log quá nhiều đến mức không tìm nổi thông tin cần thiết
- Chỉ log lỗi mà không có ngữ cảnh
- Đợi hệ thống gặp sự cố mới nghĩ đến observability
- Lưu trữ dữ liệu giám sát nhưng không đặt cảnh báo hữu ích
Một hệ thống dễ quan sát sẽ giúp team debug nhanh hơn, giảm thời gian “đoán mò”, và xử lý sự cố có phương pháp hơn. Nếu bạn đang xây web/app, hãy coi logging, metrics và tracing là một phần của tính năng, không phải việc làm thêm sau cùng.