Blog chia sẻ về công nghệ ...
Published on

[Google-SRE-bản dịch tiếng việt]-Practical Alerting from Time-Series Data

Authors

📑 Mục Lục

  1. Giới thiệu
  2. Borgmon và hệ thống giám sát tại Google
  3. Biến và Nhãn trong Time-Series
  4. Rule Evaluation và Alerting
  5. Kiến trúc phân mảnh trong giám sát
  6. Black-box monitoring
  7. Cấu hình và thư viện template
  8. Kết luận

🧭 Giới thiệu

Chương này nói về cách thiết kế hệ thống alerting hiệu quả trong môi trường sản xuất lớn sử dụng dữ liệu chuỗi thời gian (time-series). Trọng tâm là công cụ Borgmon tại Google, đồng thời cung cấp góc nhìn có thể áp dụng với các công cụ như Prometheus.

🛠️ Borgmon và hệ thống giám sát tại Google

Borgmon là hệ thống giám sát phát triển cùng thời với Borg (khoảng 2003). Khác với kiểu script kiểm tra đơn lẻ, Borgmon sử dụng mô hình thu thập time-series và đánh giá quy tắc tập trung.

Hệ thống hỗ trợ phân tầng Borgmon: ở datacenter, toàn cục, và có thể shard thêm nếu cần.

Dữ liệu được xuất từ các ứng dụng dưới dạng /varz, có thể là plain-text hoặc map (có nhãn). Borgmon xử lý dữ liệu này và sinh ra các time-series lưu trong RAM (và checkpoint xuống disk), sau đó có thể lưu lâu dài trong TSDB.

🏷️ Biến và Nhãn trong Time-Series

Time-series có dạng nhãn key=value. Các nhãn quan trọng:

  • var: tên biến
  • job: loại service
  • instance: host:port cụ thể
  • service: nhóm dịch vụ
  • zone: vùng vật lý

Truy vấn dữ liệu dựa vào biểu thức nhãn (labelset). Có thể thu thập các chiều thời gian [10m], truy vấn vector...

📏 Rule Evaluation và Alerting

Borgmon sử dụng ngôn ngữ quy tắc để tạo biểu thức cảnh báo. Các bước thường thấy:

  1. Sử dụng hàm rate() để tính tốc độ tăng biến đếm (counter)
  2. Sử dụng sum without ... để gom dữ liệu (aggregation)
  3. Tính tỉ lệ lỗi trên request
  4. Viết quy tắc alert với điều kiện và thời gian giữ (e.g. for 2m)

Ví dụ: cảnh báo nếu tỷ lệ lỗi HTTP > 1% và tốc độ lỗi > 1 req/s.

Khi điều kiện thỏa mãn và duy trì, alert được gửi qua Alertmanager đến team phù hợp.

🌐 Kiến trúc phân mảnh trong giám sát

Hệ thống Borgmon được phân tầng:

  • Lớp scraper thu dữ liệu (shard)
  • Lớp DC thực hiện aggregation
  • Lớp global thực hiện dashboard, tổng hợp toàn hệ thống

Các Borgmon cấp cao chỉ lọc dữ liệu cần thiết để tiết kiệm RAM.

🕵️ Black-box monitoring

Borgmon là white-box (giám sát nội bộ). Google sử dụng thêm Prober để làm black-box, gửi yêu cầu HTTP hoặc RPC kiểm tra hành vi người dùng.

Prober có thể thu thập varz, xuất biểu đồ, cảnh báo lỗi mạng, DNS, load balancer...

⚙️ Cấu hình và thư viện template

Cấu hình Borgmon tách riêng rule và target. Hỗ trợ macro, test CI/CD cấu hình trước khi đưa lên production.

Hai nhóm template:

  1. Template theo thư viện biến (HTTP, RPC, Memory)
  2. Template theo cấu trúc dịch vụ (task → shard → zone → global)

Sử dụng nhãn để nhóm dữ liệu logic theo topology của dịch vụ.

🔚 Kết luận

Tư tưởng lớn nhất: tách biệt thu thập & rule evaluation giúp hệ thống scale hiệu quả, rule dễ tái sử dụng. Dữ liệu time-series không chỉ để hiển thị mà là đầu vào chính xác cho alerting chất lượng cao.

Công cụ như Prometheus, Alertmanager hiện nay đều lấy cảm hứng từ mô hình Borgmon của Google.