Khi tôi đi audit và phát hiện hệ thống… không có log

Log đâu?

– Dạ, em chỉ console.log thôi ạ.

Lần đầu tiên tôi audit một hệ thống startup giai đoạn pre-seed. Nhìn sơ code backend thì cũng gọn, có CI/CD, nhìn tưởng ổn. Nhưng khi hỏi: “Giả sử production crash, em tra log ở đâu?” — thì cả team nhìn nhau như thể tôi hỏi… mật khẩu Wi-Fi.

Không có centralized logging, không có log rotation, không trace ID, không phân cấp severity — tóm lại là hệ thống log “tự nhiên như hơi thở”, nhưng không ai biết thở ra chỗ nào.

Từ đó tôi rút ra vài bài học:

  • Đừng để logging trở thành suy nghĩ sau cùng: Logging không phải là "tính năng" bạn thêm vào khi có thời gian rảnh. Nó là nền tảng sống còn của bất kỳ hệ thống nào, từ ngày đầu tiên. Thiếu nó, bạn chỉ có thể… cầu nguyện.
  • Không có log = không debug = không bảo trì = sự nghiệp DevOps chóng tàn: Nghe có vẻ bi quan nhưng đó là sự thật trần trụi. Một kỹ sư DevOps hay SRE mà không có log trong tay thì khác gì người lính ra trận không có súng? Mù tịt thông tin, làm sao bạn có thể tìm ra nguyên nhân, khắc phục sự cố, hay thậm chí là hiểu hành vi của hệ thống? Sự nghiệp có thể "chóng tàn" thật đấy!
  • Dù làm microservice hay monolith, hãy tối thiểu dùng:
    • Grafana + Loki (hoặc ELK Stack) nếu bạn tự quản lý hoặc CloudWatch Logs nếu AWS, Stackdriver Logging (Google Cloud), Azure Monitor Logs (Azure) nếu bạn thích dùng dịch vụ Managed. Đừng bao giờ dừng lại ở console.log!
    • Gắn Trace ID cho mọi request: Cứ nghĩ đến một chuỗi sự kiện dài dằng dặc đi qua bao nhiêu service mà không có Trace ID xem? Đó là cơn ác mộng thật sự! Trace ID giúp bạn xâu chuỗi toàn bộ hành trình của một yêu cầu, từ đầu đến cuối.
    • Chia log theo severity: info, warning, error, fatal. Hãy phân cấp rõ ràng! Đừng để mọi thứ đều là info trong khi hệ thống đang "cháy nhà". Biết được mức độ nghiêm trọng giúp bạn ưu tiên xử lý và tạo cảnh báo hiệu quả.
    • Log có cấu trúc, chứ đừng chỉ print_r($data) hoặc in ra một dòng text vô tri. Hãy dùng JSON hoặc các định dạng có cấu trúc khác. Khi log có cấu trúc, bạn mới có thể dễ dàng tìm kiếm, lọc, và phân tích tự động bằng các công cụ phân tích log.

Log không phải là thứ để đọc, mà là thứ để sống sót. Production không cảnh báo trước. Stack trace là món quà muộn màng.

Post a Comment

Mới hơn Cũ hơn