
Prometheus & Grafana: Monitoring và Visualization cho DevOps
Prometheus và Grafana là hai dự án mã nguồn mở thuộc Cloud Native Computing Foundation (CNCF) tạo thành bộ đôi monitoring được sử dụng phổ biến nhất hiện nay. Prometheus phụ trách việc thu thập và lưu trữ dữ liệu metrics theo thời gian, trong khi Grafana chịu trách nhiệm trực quan hoá, hiển thị dashboard, và cảnh báo từ dữ liệu đó.

Prometheus hoạt động như thế nào?
Prometheus sử dụng mô hình pull-based metrics (kéo dữ liệu thay vì đẩy). Thay vì các ứng dụng phải đẩy dữ liệu lên trung tâm, Prometheus tự động HTTP request đến các endpoint /metrics trên mục tiêu được cấu hình. Điều này mang lại nhiều ưu điểm quan trọng:
- Đơn giản hoá triển khai: Application chỉ cần expose một HTTP endpoint, không cần push gateway phức tạp.
- Khám phá mục tiêu mới: Service discovery (Kubernetes, Consul, DNS) tự động tìm và theo dõi service mới.
- Kiểm tra sức khỏe mục tiêu: Nếu mục tiêu không phản hồi
/metrics, Prometheus báo cáo ngay lập tức. - Không có single point of failure: Mỗi Prometheus instance thu thập độc lập.
PromQL: Ngôn ngữ truy vấn mạnh mẽ
PromQL cho phép truy vấn tức thời và theo khoảng thời gian để lọc và tổng hợp dữ liệu metrics. Ví dụ:
rate(http_requests_total[5m])
Tính tốc độ request trung bình trong 5 phút — hữu ích để theo dõi traffic.
Lưu trữ dữ liệu: TSDB hiệu năng cao
Prometheus sử dụng Time Series Database (TSDB) nội bộ tối ưu đặc biệt cho metrics. Dữ liệu chia thành block 2-hour, mỗi block chứa chunks, metadata, và index. WAL bảo vệ block in-memory. Compression tự động giảm dung lượng xuống khoảng 1-2 byte per sample.

Grafana: Biến dữ liệu thành thông tin
Grafana là nền tảng visualization mã nguồn mở hỗ trợ nhiều data source — Prometheus, Elasticsearch, Loki, CloudWatch, MySQL. Bạn có thể kết hợp nhiều data source trong cùng một dashboard: metrics từ Prometheus, logs từ Loki, traces từ Jaeger.
Dashboard và Visualization
Grafana cung cấp các panel đa dạng: graph, time series, heatmap, stat panel. Việc full-stack visibility rất hữu ích khi cần giám sát toàn hệ thống trong một giao diện duy nhất.
Alerting tích hợp
Hệ thống alerting tích hợp cho phép tạo rule dựa trên PromQL expression. Kích hoạt → gửi Slack, email, PagerDuty, Teams, hoặc webhook tùy chỉnh.
Kết hợp Prometheus và Grafana: Docker Compose mẫu
Stack 3 service chuẩn:
version: "3.8"
services:
prometheus:
image: prom/prometheus:latest
ports: ["9090:9090"]
grafana:
image: grafana/grafana-oss:latest
ports: ["3000:3000"]
node-exporter:
image: prom/node-exporter:latest
ports: ["9100:9100"]
Truy cập Grafana tại http://localhost:3000, thêm Prometheus data source tại http://prometheus:9090, và bắt đầu tạo dashboard.

Alertmanager: Quản lý cảnh báo thông minh
- Silencing: Tạm thời tắt cảnh báo không quan trọng trong khoảng thời gian nhất định.
- Inhibition: Tự động suppress cảnh báo liên quan khi đã có cảnh báo nghiêm trọng hơn.
- Grouping: Gộp cảnh báo tương tự để tránh spam.
- HA Mode: Chạy nhiều instances Alertmanager để đảm bảo không bị mất cảnh báo.
So sánh với ELK Stack và Datadog
ELK Stack tập trung vào logs. Elasticsearch là công cụ full-text search; Kibana là visualization layer. Prometheus + Grafana tập trung vào metrics time series. Nhiều doanh nghiệp chạy cả hai: ELK cho logs, Prometheus/Grafana cho metrics.
Datadog là nền tảng SaaS toàn diện với push-based agent, bao gồm metrics/logs/traces/Synthetics tích hợp. Prometheus + Grafana là open-source, self-hosted, modular và linh hoạt về chi phí khi quy mô lớn.
Tài liệu tham khảo
- Prometheus Overview – Tổng quan kiến trúc pull-based
- Prometheus Storage – TSDB, WAL, compression
- PromQL Basics – Truy vấn tức thời và range query
- Grafana Documentation – Dashboard, alerting, data source
- Alertmanager Overview – Silencing, inhibition, grouping
