Prometheus High Availability and Fault Tolerance Strategy, Long Term Storage with VictoriaMetrics

Bài tóm tắt Miro 2020 2. Tăng trưởng Độ khó: Dễ

Miro · 2020 · 2. Tăng trưởng · Độ khó: Dễ — bài gốc

Bài mang tính hướng dẫn kiến trúc hơn là kể chuyện tiến hoá; không có số liệu quy mô. Lấy từ bản Wayback (Medium chặn crawler).

Bối cảnh

  • Theo Miro, Prometheus giỏi scrape và giữ metric ngắn hạn (phần lớn điều tra chỉ cần khoảng 10 ngày gần nhất), nhưng giữ lâu thì đắt vì cần đĩa nhanh, và HA không có sẵn kiểu cluster. Federation hợp để gom một phần metric, không phải để HA.

Thay đổi chính

  • HA cho Prometheus bằng dự phòng đơn giản: hai instance nhỏ cùng một prometheus.yml, scrape cùng nguồn, giám sát lẫn nhau; quản bằng IaC (Terraform) và config management (Ansible). Không nhân đôi một instance khổng lồ mà chia nhiều nhóm nhỏ, mỗi nhóm lo một phần hạ tầng (VPC, region, account, cloud).
  • Thành phần đi kèm: Alertmanager chạy cluster để khử trùng alert từ hai Prometheus; PushGateway nhân đôi sau DNS active/passive (một điểm nhận duy nhất cho batch job, lambda); Blackbox nhân đôi; exporter trên node không cần nhân.
  • Lưu dài hạn bằng VictoriaMetrics bản cluster: vminsert (stateless, sau load balancer, -replicationFactor=N), vmstorage (stateful, mỗi node độc lập, dùng đĩa cloud latency cao, IOPS thấp, rẻ, khử trùng metric do mỗi Prometheus có cặp), vmselect (stateless, sau load balancer, tương thích PromQL). Chọn VictoriaMetrics thay Cortex/Thanos/M3DB (bài không so sánh chi tiết).
  • Grafana HA: bỏ SQLite mặc định, dùng RDS Postgres Multi-AZ làm state, nhiều instance sau load balancer. Có thể snapshot vmstorage lên S3 để giữ lâu hơn nữa.

Bài học cho SWE

  • Tách ngắn hạn/nóng (Prometheus nhỏ, đĩa nhanh, nhân đôi) khỏi dài hạn/lạnh (kho riêng trên đĩa rẻ): mỗi tầng có yêu cầu chi phí và độ bền khác (Chi phí hạ tầng và build vs buy).
  • HA không nhất thiết cần đồng thuận: hai bản giống hệt + khử trùng ở phía sau là đủ cho metric (Observability và monitoring).
  • Nhiều nhóm nhỏ dễ sửa hơn một instance lớn; hỏng một nhóm chỉ mất một phần tầm nhìn.

Liên quan