Họ đang đo gì
Bạn có từng điều tra sự cố bằng những thứ này chưa, hay chỉ biết tên công cụ.
Trả lời ngắn~30 giây
Metric trả lời “có gì bất thường không” — số liệu tổng hợp, rẻ, giữ được lâu, dùng để cảnh báo. Trace trả lời “thời gian đi đâu trong MỘT request” — có ngữ cảnh, thường lấy mẫu, dùng để tìm nút thắt trong hệ phân tán. Log trả lời “chính xác chuyện gì đã xảy ra ở bước này” — chi tiết nhất, đắt nhất để lưu và tìm kiếm. Quy trình điều tra tự nhiên là metric báo động, trace khoanh vùng, log xác nhận nguyên nhân.
Giải thích sâu
Sai lầm tốn kém nhất là dùng log để làm việc của metric: ghi một dòng log cho mỗi request rồi đếm bằng truy vấn tìm kiếm. Nó chạy được ở quy mô nhỏ và trở nên vô lý ở quy mô lớn — bạn trả tiền lưu trữ theo gigabyte để có một con số mà một counter làm được với chi phí gần bằng không. Ngược lại, dùng metric để tìm nguyên nhân cũng bế tắc, vì metric đã mất hết ngữ cảnh của từng request.
Điều làm cả ba trở nên hữu ích gấp bội là tương quan: trace id đi cùng mỗi log dòng, và metric có exemplar trỏ tới một trace mẫu. Khi đó từ một điểm nhọn trên biểu đồ bạn nhảy thẳng tới đúng request gây ra nó rồi tới log của nó, thay vì đoán theo mốc thời gian. Đây là lợi ích lớn nhất của việc dùng OpenTelemetry thay vì ba công cụ rời rạc.
Về log có cấu trúc: ghi JSON với các trường cố định thay vì chuỗi tự do. Nghe hình thức nhưng nó là khác biệt giữa việc lọc theo user_id=123 trong một giây và việc viết regex lúc đang có sự cố. Và nhớ giới hạn: log mọi thứ ở mức debug trên production là cách nhanh nhất để hoá đơn quan sát vượt hoá đơn máy chủ.
Câu hỏi tiếp theo họ sẽ hỏi
?Cảnh báo dựa trên cái gì?
Triệu chứng mà người dùng cảm nhận được, không phải nguyên nhân. Cảnh báo “tỷ lệ lỗi vượt SLO” hữu ích; cảnh báo “CPU trên 80%” thì gọi bạn dậy lúc 3 giờ sáng cho một thứ có thể hoàn toàn bình thường. Bốn tín hiệu vàng — độ trễ, lưu lượng, lỗi, mức bão hoà — là điểm khởi đầu tốt.
?Lấy mẫu trace bao nhiêu là hợp lý?
Lấy mẫu theo đuôi (tail sampling) nếu hạ tầng cho phép: giữ tất cả trace có lỗi hoặc chậm, và giữ vài phần trăm trace bình thường. Lấy mẫu đầu cố định 1% sẽ bỏ sót đúng những request bạn cần xem nhất.
Trả lời thế này là mất điểm
- Ghi log dữ liệu cá nhân hoặc token. Log thường được giữ lâu và được nhiều người xem hơn database.