Chi phí log tỉ lệ với khối lượng nhân thời gian lưu. Cắt theo thứ tự tác động, không cắt bừa:
1. Bỏ log không ai đọc. Phần lớn dung lượng đến từ INFO/DEBUG lặp lại trong vòng lặp nóng và access log trùng với metric đã có. Nếu một dòng log không bao giờ xuất hiện trong truy vấn điều tra, nó chỉ là chi phí.
2. Chuyển thứ đếm được sang metric. "Đã xử lý xong item" ghi mỗi lần là log; đếm số item là counter — rẻ hơn nhiều bậc và vẫn vẽ được đồ thị.
3. Sampling có chọn lọc, không sample đều. Giữ 100% lỗi và request chậm, chỉ lấy mẫu phần thành công:
// keep every failure, sample only the boring successes
const keep = res.statusCode >= 400 || durationMs > 1000 || Math.random() < 0.05
if (keep) logger.info(entry)Với trace, cơ chế tương ứng là tail sampling ở collector: quyết định giữ hay bỏ sau khi trace hoàn tất, nhờ vậy giữ được đúng những trace có lỗi hoặc chậm.
4. Phân tầng thời gian lưu. Log chi tiết giữ 7 ngày (đủ cho điều tra), bản tổng hợp hoặc log kiểm toán đẩy sang lưu trữ lạnh giữ dài hạn.
Điều cần tránh: giảm mù quáng bằng cách tắt log ở service quan trọng hoặc hạ mọi thứ xuống ERROR — lúc sự cố sẽ không còn ngữ cảnh để dựng lại chuyện gì đã xảy ra.