Cheatsheet: Observability cho người mới: log, metric và cảnh báo
Tra cứu nhanh cho on-call: log, metric, dashboard, alert, tracing, và cách nhờ AI thêm log.
Module 1: Log có cấu trúc và log level
1.1 Structured logging
Log truyền thống là chuỗi văn bản khó parse. Structured log là một object JSON với các field cố định.
So sánh:
| Kiểu | Ví dụ | Khi nào dùng |
|---|---|---|
| Unstructured | User 42 failed login from 1.2.3.4 |
Chỉ đọc bằng mắt, không filter được |
| Structured | {"level":"warn","event":"login_failed","user_id":42,"ip":"1.2.3.4"} |
Query, filter, alert, dashboard |
Các field tối thiểu nên có:
| Field | Ý nghĩa | Ví dụ |
|---|---|---|
timestamp |
Thời điểm (ISO 8601, có timezone) | 2024-05-01T03:12:45Z |
level |
Mức log | info, error |
event |
Tên sự kiện ngắn, cố định | order_created |
service |
Tên service phát sinh log | checkout-api |
request_id |
ID gắn cả request để nối các log | req_8f3a... |
user_id |
Ai gây ra (nếu có) | 42 |
duration_ms |
Thời gian xử lý (nếu đo được) | 128 |
error |
Thông tin lỗi (message, type) | "timeout" |
Quy tắc vàng:
eventlà tên cố định, không phải câu văn tự do. Dùngorder_created, không dùng"Đã tạo đơn hàng thành công".- Mọi field động (ID, giá trị) phải nằm trong field riêng, không nhét vào
event. - Luôn kèm
request_idđể nối log giữa các service.
{"timestamp":"2024-05-01T03:12:45Z","level":"error","event":"payment_failed","service":"checkout-api","request_id":"req_8f3a","user_id":42,"duration_ms":1280,"error":{"type":"timeout","message":"gateway timeout"}}
Tip: Nếu log của bạn bắt đầu bằng một câu tiếng Việt có dấu phẩy, đó chưa phải structured log.
1.2 Log level
This cheatsheet is premium content. Sign in and purchase the course to view the full content. Sign in