Prometheus là một hệ thống giám sát mã nguồn mở được phát triển ban đầu tại SoundCloud và hiện là một dự án độc lập dưới sự bảo trợ của Quỹ Cloud Native Computing Foundation (CNCF). Prometheus được thiết kế để thu thập và lưu trữ dữ liệu từ các ứng dụng, dịch vụ và hệ thống hạ tầng với mục tiêu chính là giám sát và cảnh báo. Trong series này chúng ta sẽ tìm hiểu về cách giám sát hệ thống qua công cụ Prometheus
Series này sẽ hướng dẫn các bạn:
- Cài đặt Prometheus từ cơ bản đến nâng cao.
- Cung cấp metrics cho Prometheus trên các máy ảo và container.
- Thiết kế hệ thống Alertmanager để quản lý cảnh báo.
- Cấu hình mở rộng Prometheus để đáp ứng nhu cầu giám sát quy mô lớn.
- Và nhiều chủ đề khác liên quan đến việc giám sát hệ thống với Prometheus.
Hy vọng với nội dung này, bạn sẽ dễ dàng tiếp cận và áp dụng Prometheus vào hệ thống của mình.
Monitoring là gì?
Monitoring là cách chúng ta sử dụng các công cụ để giám sát hệ thống và ứng dụng của mình. Monitoring cung cấp thông tin về hiệu suất và tình trạng của hệ thống, giúp phát hiện nhanh chóng các vấn đề có thể xảy ra.
Tuy nhiên, monitoring không chỉ dừng lại ở việc theo dõi các giá trị kỹ thuật như CPU hay bộ nhớ. Nó còn bao gồm các chỉ số có ý nghĩa kinh doanh, chẳng hạn như số lượng khách truy cập trang web, thời gian họ ở lại trang, và số lần nhấp vào các sản phẩm.
Nên đối với monitoring ta sẽ có hai đối tượng là:
- Hệ thống (the system).
- Kinh doanh (the business).
System Monitoring
Đối với một hệ thống, chúng ta cần giám sát các thành phần sau:
- Infrastructure monitoring (Giám sát hạ tầng): Đây là bước đầu tiên và quan trọng, vì hạ tầng là nơi triển khai ứng dụng. Chúng ta cần theo dõi các giá trị như dung lượng CPU và bộ nhớ còn lại, không gian ổ đĩa, và tình trạng của các quá trình (process) trên hạ tầng (còn đang chạy hay đã dừng).
- Application monitoring (Giám sát ứng dụng): Tiếp theo, chúng ta cần giám sát các thông số của ứng dụng, bao gồm thời gian phản hồi, tình trạng của ứng dụng (chạy hay đã ngừng), CPU và bộ nhớ sử dụng bởi ứng dụng, và số lượng yêu cầu (request) vào ứng dụng mỗi giây.
- Network monitoring (Giám sát mạng): Cuối cùng, ở tầng mạng, chúng ta cần quan tâm đến các chỉ số như lượng byte vào và ra, tình trạng của firewall, và các yếu tố bảo mật khác.
Business
Như đã đề cập ở trên, các giá trị liên quan đến kinh doanh thường là dữ liệu về tương tác của người dùng. Phân tích được các tương tác này mang lại giá trị lớn cho hoạt động kinh doanh của công ty.
Để giám sát các tương tác của người dùng, chúng ta cần thu thập dữ liệu ở tầng front-end hoặc back-end. Ví dụ, ở tầng front-end, Google Analytics có thể được dùng để theo dõi hành vi người dùng.
Trong series này, chúng ta sẽ tập trung vào monitoring ở tầng hệ thống.
Các kỹ thuật Monitoring
Monitoring thường có hai cách tiếp cận chính: Probing và Introspection.
- Probing Monitoring: Đây là cách giám sát hệ thống từ bên ngoài, bằng cách gửi yêu cầu đến hệ thống và kiểm tra phản hồi. Ví dụ, chúng ta có thể gửi yêu cầu đến một API và kiểm tra xem mã phản hồi (HTTP code) có phải là 200 hay không.
- Introspection Monitoring: Đây là cách giám sát hệ thống từ bên trong, bằng cách sử dụng các công cụ để thu thập dữ liệu về hiệu suất và tình trạng hệ thống.
Trong các bài tiếp theo, chúng ta sẽ tìm hiểu về introspection monitoring trước, sau đó mới đến probing monitoring.
Các công cụ Monitoring thu thập dữ liệu thế nào?
Thông thường, công cụ monitoring thu thập dữ liệu từ hệ thống bằng hai phương pháp: pull-based và push-based.
- Pull-based: Ở phương pháp này, hệ thống cung cấp một endpoint để công cụ monitoring gọi đến và thu thập dữ liệu. Ví dụ, ứng dụng có thể cung cấp một endpoint
/metrics
, và công cụ monitoring gọi vào đây để lấy dữ liệu. - Push-based: Ở phương pháp này, ứng dụng đẩy dữ liệu của nó đến endpoint do công cụ monitoring cung cấp.
Prometheus hỗ trợ cả hai cách pull-based và push-based.
Prometheus
Prometheus là một công cụ giám sát hệ thống phổ biến, có khả năng thu thập và lưu trữ các dữ liệu giám sát dưới dạng time series (chuỗi thời gian). Đây cũng có thể được coi là một time series database.
Các tính năng chính của Prometheus:
Lưu trữ dữ liệu dưới dạng time series.
- Có thể truy vấn dữ liệu bằng ngôn ngữ PromQL.
- Hỗ trợ cả pull-based và push-based.
- Tự động khám phá các đối tượng cần giám sát (service discovery).
- Kết hợp với các công cụ như Grafana để biểu diễn dữ liệu bằng biểu đồ.
Bài đầu tiên sẽ kết thúc tại đây !!!