Prometheus & Grafana: Monitoring và Visualization cho DevOps

Prometheus & Grafana: Monitoring và Visualization cho DevOps

PrometheusGrafana 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 đó.

Ví dụ dashboard Grafana hiển thị time series metrics và biểu đồ giám sát hệ thống
Ví dụ dashboard Grafana hiển thị time series metrics và biểu đồ giám sát hệ thống

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.

Kiến trúc monitoring stack: Prometheus scrape targets, Grafana visualization, Alertmanager
Kiến trúc monitoring stack: Prometheus scrape targets, Grafana visualization, Alertmanager

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.

Kiến trúc tổng thể Prometheus và Grafana monitoring stack
Kiến trúc tổng thể Prometheus và Grafana monitoring stack

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

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Cloudflare Workers: Edge Computing không cần server

Cloudflare Workers là nền tảng edge computing serverless cho phép bạn chạy JavaScript, TypeScript, Python và WebAssembly ngay tại edge — gần người dùng cuối nhất, không phải ở một…

Xem thêm

FPGA cho developer: Lập trình phần cứng tái cấu hình

FPGA cho developer: Lập trình phần cứng tái cấu hình FPGA (Field-Programmable Gate Array) đang trở thành công cụ mạnh mẽ cho developer muốn tối ưu hiệu năng phần cứng…

Xem thêm

ClickHouse: OLAP database siêu nhanh cho analytics và logs

ClickHouse là gì? ClickHouse là OLAP database mã nguồn mở được thiết kế cho truy vấn phân tích (analytical queries) tốc độ cực cao trên dữ liệu cột (column-oriented). Khác…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất