Thứ Ba, 09/06/2026, 17:00 (GMT+0)

Prometheus là gì? Tổng quan về hệ thống giám sát và cảnh báo mã nguồn mở

Quay lại Trang chủ Blog
Trên trang này

Trong quá trình vận hành hệ thống, việc giám sát máy chủ, ứng dụng và dịch vụ là yêu cầu không thể thiếu để đảm bảo hệ thống hoạt động ổn định. Khi hạ tầng ngày càng mở rộng, đặc biệt trong các môi trường Cloud Native và Kubernetes, việc theo dõi thủ công trở nên không còn hiệu quả. Prometheus ra đời nhằm giải quyết bài toán này bằng cách tự động thu thập metrics, giám sát tài nguyên và hỗ trợ cảnh báo khi phát hiện sự cố.

Trong bài viết này, chúng ta sẽ cùng tìm hiểu Prometheus là gì, các chức năng, thành phần chính, kiến trúc hoạt động và những trường hợp nên hoặc không nên sử dụng Prometheus.

Prometheus là gì?

Prometheus là một hệ thống Monitoring và Alerting mã nguồn mở, được phát triển bởi SoundCloud vào năm 2012 và hiện là dự án của Cloud Native Computing Foundation (CNCF).

Prometheus được thiết kế để thu thập và lưu trữ dữ liệu dạng Time Series, trong đó mỗi metrics được định danh bởi Metric Name và các Label (key-value). Hệ thống hoạt động theo mô hình Pull-based, chủ động scrape metrics từ các Exporter thông qua HTTP, hỗ trợ truy vấn bằng PromQL và tích hợp với Alertmanager để gửi cảnh báo.

Nhờ khả năng tích hợp tốt với Kubernetes cùng hệ sinh thái Exporter phong phú, Prometheus hiện là một trong những giải pháp monitoring phổ biến nhất cho hạ tầng và các hệ thống Cloud Native.

Prometheus.jpg

Các chức năng chính của Prometheus

  • Mô hình dữ liệu đa chiều với Time Series Data định danh bởi metrics name và cặp key-value
  • Sử dụng ngôn ngữ truy vấn PromQL
  • Không phụ thuộc vào distributed storage, mỗi service hoạt động độc lập
  • Thu thập metrics thông qua HTTP - đơn giản và dễ tích hợp
  • Hỗ trợ push metrics qua một gateway trung gian cho các tác vụ ngắn hạn (Short-lived jobs)
  • Tự động phát hiện target (auto-discovery) thông qua tích hợp với kubernetes
  • Tích hợp sẵn với nhiều công cụ hiển thị đồ thị (Graphing) như Grafana

Các thành phần của Prometheus

Hệ sinh thái của Prometheus bao gồm nhiều thành phần, trong đó có một vài thành phần là tùy chọn, có thể có hoặc không:

  • Prometheus Server: Thành phần chính để scrape (pull) và lưu trữ dữ liệu
  • Client libraries: Hỗ trợ các ngôn ngữ lập trình khác tương tác với Prometheus
  • Push gateway: Là một gateway trung gian hỗ trợ short-lived jobs
  • Exporters: Thực hiện giám sát, thu thập các metrics của các service như HAProxy, StatsD, Graphite,... chuyển đổi metrics từ các ứng dụng bên thứ 3 sang định dạng mà prometheus có thể hiểu được
  • Alertmanager: Trung tâm xử lý cảnh báo, chịu trách nhiệm gửi thông báo qua Email, Slack, Telegram,... và giúp tránh cảnh báo trùng lặp
  • PromUI/Grafana: Giao diện hiển thị dữ liệu, sử dụng PromQL để truy vấn

Kiến trúc và cách hoạt động của Prometheus

Prometheus.jpg

Prometheus hoạt động theo mô hình Pull-based, nghĩa là Prometheus Server sẽ chủ động gửi HTTP Request đến các target để thu thập (scrape) metrics theo chu kỳ, thay vì các target tự động gửi (push) dữ liệu về Prometheus 

Prometheus hoạt động theo quy trình sau:

  • Trên các máy chủ hoặc dịch vụ cần giám sát sẽ cài đặt các Exporter (Node Exporter, MySQL Exporter, OpenStack Exporter,...) để thu thập metrics và expose thông qua endpoint /metrics.
  • Prometheus sẽ tự động phát hiện các target thông qua Service Discovery (Kubernetes, Consul,...) hoặc được khai báo thủ công trong file prometheus.yml, sau đó định kỳ pull metrics từ các Exporter bằng giao thức HTTP.
  • Đối với các short-lived jobs (Cronjob, Batch Job, Script...), ứng dụng sẽ push metrics đến Pushgateway. Sau đó, Prometheus sẽ scrape dữ liệu từ Pushgateway giống như một target thông thường.
  • Các metrics sau khi thu thập sẽ được lưu trữ trong Time Series Database (TSDB) tích hợp sẵn của Prometheus.
  • Prometheus liên tục đánh giá các Alert Rules. Khi một điều kiện cảnh báo được thỏa mãn, alert sẽ được gửi đến Alertmanager.
  • Alertmanager sẽ xử lý việc gom nhóm, chống gửi trùng và gửi thông báo qua các kênh như Telegram, Slack, Gmail, Webhook,...
  • Người dùng có thể truy vấn metrics bằng Prometheus Web UI với ngôn ngữ PromQL, hoặc sử dụng Grafana làm Data Source để xây dựng các dashboard trực quan.

Khi nào nên và không nên sử dụng Prometheus?

Khi nào nên sử dụng Prometheus?

  • Giám sát hệ thống microservices và container.
  • Hệ thống yêu cầu độ tin cậy cao, ít phụ thuộc hạ tầng bên ngoài: Prometheus server hoạt động độc lập, không cần network storage hay dịch vụ remote, vẫn hoạt động tốt khi gặp sự cố
  • Giám sát các chỉ số dạng số (numeric metrics) theo thời gian thực: Tối ưu cho CPU, RAM, Số lượng request, latency,... với ngôn ngữ truy vấn PromQL linh hoạt
  • Hệ thống cần tích hợp nhanh với nhiều dịch vụ: Cộng đồng cung cấp sẵn hàng trăm exporter cho các dịch vụ phổ biến (Node, MySQL, HAProxy, Nginx,...)
  • Cần thiết lập cảnh báo (Alerting) kịp thời: Kết hợp với ALertmanager để gửi thông báo qua Telegram, Slack, Email khi vượt ngưỡng

Khi nào không nên sử dụng Prometheus?

Prometheus không phù hợp trong các trường hợp:

  • Hệ thống yêu cầu lưu trữ log chi tiết của từng request.
  • Các bài toán cần độ chính xác tuyệt đối (100%) như tính cước theo từng giao dịch (Billing).
  • Phân tích dữ liệu lịch sử trong thời gian rất dài (nhiều năm) nếu chỉ sử dụng TSDB (Time Series Database) mặc định.
  • Lưu trữ dữ liệu sự kiện (Event) thay vì dữ liệu dạng số (Metrics)

Trong các trường hợp trên, Prometheus thường được kết hợp với các hệ thống khác như ELK/OpenSearch hoặc các nền tảng Billing chuyên dụng.

Kết luận: Prometheus là giải pháp giám sát và cảnh báo mã nguồn mở phù hợp với hệ thống Cloud Native, Kubernetes, container và microservices. Nhờ khả năng tự động thu thập metrics, truy vấn bằng PromQL và tích hợp Alertmanager, Prometheus giúp doanh nghiệp theo dõi hiệu suất, phát hiện sớm sự cố và nâng cao tính ổn định của hệ thống.

Tuy nhiên, Prometheus chủ yếu được thiết kế để xử lý dữ liệu metrics, không phù hợp với nhu cầu lưu trữ log chi tiết, dữ liệu sự kiện hoặc các bài toán yêu cầu độ chính xác tuyệt đối. Vì vậy, doanh nghiệp cần xác định rõ nhu cầu giám sát và kết hợp Prometheus với các công cụ phù hợp để xây dựng hệ thống monitoring toàn diện.

#CloudWave Radar
#CloudWave Radar
Sovereign Cloud không chỉ là đặt máy chủ trong nước. Với bối cảnh pháp lý dữ liệu mới tại Việt Nam, đây đang trở thành bài toán hạ tầng quan trọng cho doanh nghiệp Việt và doanh nghiệp nước ngoài hoạt động tại Việt Nam
Sovereign Cloud - Đám mây chủ quyền là gì? Và vì sao doanh nghiệp hoạt động tại Việt Nam nên quan tâm từ bây giờ?
Tiếp tục đọc