1. Giới thiệu Prometheus
- Prometheus là một hệ thống giám sát và cảnh báo mã nguồn mở, được thiết kế để thu thập dữ liệu dạng time-series (chuỗi thời gian) từ các hệ thống, dịch vụ thông qua cơ chế pull dữ liệu.
- Đặc điểm chính:
- Mã nguồn mở, thuộc dự án CNCF (Cloud Native Computing Foundation)
- Lưu trữ dữ liệu time-series cục bộ
- Hỗ trợ ngôn ngữ truy vấn PromQL
- Tích hợp tốt với các hệ thống container-based như Docker, Kubernetes
2. Kiến trúc tổng quan
Hệ thống Prometheus gồm các thành phần chính:
- Prometheus Server: thu thập và lưu trữ dữ liệu metrics
- Exporter: dịch vụ hoặc agent xuất dữ liệu metrics (ví dụ: Node Exporter, Blackbox Exporter,..)
- Alertmanager: quản lý và phân phối cảnh báo đến email, Slack, Telegram,...
- Grafana: công cụ hiển thị dashboard từ dữ liệu Prometheus
Minh họa kiến trúc:
3. Quy trình thu thập dữ liệu
- Các Exporter mở endpoint /metrics để Prometheus truy cập.
- Prometheus Server định kỳ gửi HTTP request (GET) đến các endpoint này để pull dữ liệu. Dữ liệu được lưu trữ nội bộ trong Prometheus.
- Có thể truy vấn dữ liệu bằng PromQL.
- Cảnh báo được cấu hình theo rule và gửi qua Alertmanager.
4. Ưu điểm nổi bật
- Mã nguồn mở, cộng đồng lớn
- Dễ triển khai, dễ cấu hình
- Tích hợp chặt chẽ với Kubernetes và hệ sinh thái cloud-native
- PromQL mạnh mẽ, phù hợp cho phân tích số liệu
- Nhiều Exporter có sẵn: OS (Node Exporter), HTTP, DB (MySQL, PostgreSQL), API,...
5. Một số lưu ý khi sử dụng
- Không lưu log Prometheus không thay thế ELK hoặc Loki
- Không có cơ chế xác thực mặc định Nên cấu hình reverse proxy (Nginx) kết hợp auth (OAuth2, Basic Auth)
- Dữ liệu lâu ngày có thể chiếm nhiều dung lượng Xem xét tích hợp Thanos, Cortex nếu cần lưu trữ lâu dài
6. Ứng dụng thực tế
- Giám sát Linux server (CPU, RAM, disk, network)
- Theo dõi trạng thái container, pod trong Kubernetes
- Cảnh báo khi service chậm, response > threshold
- Dashboard hệ thống vận hành thực tế qua Grafana