Mục lục
I.Giới thiệu về Prometheus
II.Kiến trúc của Prometheus
1.Prometheus server
2.Exporter
3.Cơ chế Pull của Prometheus và Pushgateway
4.Prometheus Alertmanager
5.Visualization tools
III.Tổng kết
- Prometheus là một công cụ mã nguồn mở cho phép quản lý, thu thập dữ liệu và cảnh báo về hệ thống được xây dựng bởi SoundCloud.
- Prometheus được viết bằng Go, Java, Python, Ruby.
- Prometheus mang đến khả năng quan sát chi tiết các thông số quan trọng như tài nguyên CPU, RAM, ROM và Network, giúp người quản trị dễ dàng phát hiện và xử lý kịp thời mọi vấn đề.
- Với các tính năng nổi bật như giám sát thời gian thực, cảnh báo thông minh và lưu trữ lịch sử giám sát, phần mềm này cung cấp một cái nhìn toàn diện về trạng thái hệ thống. Điều này không chỉ hỗ trợ người quản trị đưa ra các quyết định chính xác và nhanh chóng mà còn đảm bảo rằng hệ thống hoạt động ổn định và hiệu quả.
- Ngoài ra, Prometheus còn được sử dụng bởi các công nghệ lớn khác như Docker, Grafana Labs, DigitalOcean,vv...
- Prometheus là một hệ thống giám sát mã nguồn mở được sử dụng để thu thập và lưu trữ dữ liệu theo dạng metric (số liệu đo lường) từ các ứng dụng, hệ thống và dịch vụ.
- Hệ thống Prometheus được cấu thành từ nhiều thành phần khác nhau, bạn không cần sử dụng tất cả các thành phần nếu không dùng đến các tính năng của chúng.
- Hai thành phần cơ bản nhất của bất kỳ hệ thống Prometheus nào là Prometheus server và exporter.
- Prometheus server là một máy chủ trung tâm, thu thập các metric từ các exporter để lưu trữ và sử dụng.
- Sử dụng cơ chế pull (kéo) để thu thập dữ liệu từ các exporter khác nhau.
- Như đã nói thì đây cũng là nơi lưu trữ dữ liệu thu thập được trên ổ cứng của node(HDD/SSD).
- Là các agent thu thập dữ liệu về hệ thống và ứng dụng, cung cấp dữ liệu cho Prometheus server.
- Các exporter này có thể được cấu hình khác nhau tùy thuộc vào mục đích sử dụng riêng của mỗi ứng dụng.
- Ví dụ: Một exporter có thể được tích hợp vào một ứng dụng Java để cung cấp dữ liệu về hiệu suất của ứng dụng đó.
- Đường link các Exporter này sẽ cung cấp cho các bạn một vài exporter được Prometheus cung cấp cho các ứng dụng và các loại ngôn ngữ khác nhau.
- Prometheus thu thập dữ liệu bằng cơ chế pull.
- Đồng nghĩa là Prometheus server kéo dữ liệu về từ các exporter các agent không push dữ liệu lên Prometheus server.
Nhưng nếu người dùng "quá lì" vẫn muốn push dữ liệu lên cho Prometheus server cho bằng được thì sao ?
- Câu trả lời: Tuy không hỗ trợ cơ chế push, nhưng prometheus có hỗ trợ cơ chế push "ảo". Pushgateway được sử dụng trong trường hợp cần thiết sử dụng cơ chế push, ví dụ như với các tác vụ batch ngắn hạn không chạy liên tục. Pushgateway đảm nhận việc lắng nghe các push và lưu trữ lại, đợi cho tới khi Prometheus server tới và pull metric về.
- Là thành phần đảm nhiệm tính năng xử lý thông báo hoặc cảnh báo về các ứng dụng phổ biến như Mail, Telegram, Slack,vv...
- Bên cạnh đó Alertmanager cũng cung cấp một vài tính năng:
- Đây là công cụ dùng để trực quan hóa các metric lên các biểu đồ theo thời gian. Có nghĩa là khi Prometheus server thu thập metric trong đó có ghi lại thời gian thu thập, có thể sử dụng các công cụ trực quan hóa các dữ liệu để làm ra các biểu đồ, hình ảnh đẹp và đầy màu sắc theo thời gian thực.
- Như bún đậu phải có mắm tôm hai tắc bốn đường, cơm sườn phải có nước mắm chua ngọt. Thì Prometheus cũng sẽ có một công cụ luôn đi kèm với nó là Grafana (Đến nỗi trong helm chart của RKE2 còn có bộ công cụ tên là Monitoring dùng để đặt cho sự kết hợp của Prometheus và Grafana).
- Đây là công cụ trực quan hóa dữ liệu theo mình thấy là được sử dụng rộng rãi nhất.
- Ngoài tính năng tạo ra các biểu đồ đẹp mắt Grafana còn cùng cấp các tính năng Alert chỉ cấu hình thông qua giao diện, khác Prometheus phải sử dụng nhiều thành phần khác nhau hoặc qua cấu hình file hệ thống.
- Mọi người có thể sử dụng các loại công cụ trực quan hóa khác nhưng mình nghĩ nên sử dụng Grafana, do hai công cụ này có hỗ trợ nhau trong phần mềm.
Mình đã đi qua sơ lược về kiến trúc các thành phần trong Prometheus như Prometheus server, Exporter, Pushgateway, Alertmanager, Visualization tools. Cách hoạt động của Prometheus dễ hiểu nhất đó là Prometheus server sử dụng cơ chế pull, pull metric từ các Exporter, để đặt ra những cảnh báo thì sẽ sử dụng Alertmanager và nếu muốn nhìn các số liệu đẹp hơn và rõ hơn thì có thể sử dụng Virtualization tools.
Các kiến thức trên được mình góp nhặt và nghiên cứu từ nhiều nguồn nếu như có sai sót hoặc thông tin gì sai với kiến thức chung, mọi người xin vui lòng góp ý bên dưới comment.
Dự kiến các chap tiếp theo: PrometheusQueryLanguage,Install and Configuration, Alert to your phone(Mail, Telegram, Slack), Monintoring Cluster(K8s) with Prometheus Grafana.
I.Giới thiệu về Prometheus
II.Kiến trúc của Prometheus
1.Prometheus server
2.Exporter
3.Cơ chế Pull của Prometheus và Pushgateway
4.Prometheus Alertmanager
5.Visualization tools
III.Tổng kết
I.Giới thiệu về Prometheus
- Prometheus là một công cụ mã nguồn mở cho phép quản lý, thu thập dữ liệu và cảnh báo về hệ thống được xây dựng bởi SoundCloud.
- Prometheus được viết bằng Go, Java, Python, Ruby.
- Prometheus mang đến khả năng quan sát chi tiết các thông số quan trọng như tài nguyên CPU, RAM, ROM và Network, giúp người quản trị dễ dàng phát hiện và xử lý kịp thời mọi vấn đề.
- Với các tính năng nổi bật như giám sát thời gian thực, cảnh báo thông minh và lưu trữ lịch sử giám sát, phần mềm này cung cấp một cái nhìn toàn diện về trạng thái hệ thống. Điều này không chỉ hỗ trợ người quản trị đưa ra các quyết định chính xác và nhanh chóng mà còn đảm bảo rằng hệ thống hoạt động ổn định và hiệu quả.
- Ngoài ra, Prometheus còn được sử dụng bởi các công nghệ lớn khác như Docker, Grafana Labs, DigitalOcean,vv...
II.Kiến trúc của Prometheus
- Prometheus là một hệ thống giám sát mã nguồn mở được sử dụng để thu thập và lưu trữ dữ liệu theo dạng metric (số liệu đo lường) từ các ứng dụng, hệ thống và dịch vụ.
- Hệ thống Prometheus được cấu thành từ nhiều thành phần khác nhau, bạn không cần sử dụng tất cả các thành phần nếu không dùng đến các tính năng của chúng.
- Hai thành phần cơ bản nhất của bất kỳ hệ thống Prometheus nào là Prometheus server và exporter.
1.Prometheus server
- Prometheus server là một máy chủ trung tâm, thu thập các metric từ các exporter để lưu trữ và sử dụng.
- Sử dụng cơ chế pull (kéo) để thu thập dữ liệu từ các exporter khác nhau.
- Như đã nói thì đây cũng là nơi lưu trữ dữ liệu thu thập được trên ổ cứng của node(HDD/SSD).
2.Exporter
- Là các agent thu thập dữ liệu về hệ thống và ứng dụng, cung cấp dữ liệu cho Prometheus server.
- Các exporter này có thể được cấu hình khác nhau tùy thuộc vào mục đích sử dụng riêng của mỗi ứng dụng.
- Ví dụ: Một exporter có thể được tích hợp vào một ứng dụng Java để cung cấp dữ liệu về hiệu suất của ứng dụng đó.
- Đường link các Exporter này sẽ cung cấp cho các bạn một vài exporter được Prometheus cung cấp cho các ứng dụng và các loại ngôn ngữ khác nhau.
3.Cơ chế Pull của Prometheus và Pushgateway
- Prometheus thu thập dữ liệu bằng cơ chế pull.
- Đồng nghĩa là Prometheus server kéo dữ liệu về từ các exporter các agent không push dữ liệu lên Prometheus server.
Nhưng nếu người dùng "quá lì" vẫn muốn push dữ liệu lên cho Prometheus server cho bằng được thì sao ?
- Câu trả lời: Tuy không hỗ trợ cơ chế push, nhưng prometheus có hỗ trợ cơ chế push "ảo". Pushgateway được sử dụng trong trường hợp cần thiết sử dụng cơ chế push, ví dụ như với các tác vụ batch ngắn hạn không chạy liên tục. Pushgateway đảm nhận việc lắng nghe các push và lưu trữ lại, đợi cho tới khi Prometheus server tới và pull metric về.
4.Prometheus Alertmanager
- Là thành phần đảm nhiệm tính năng xử lý thông báo hoặc cảnh báo về các ứng dụng phổ biến như Mail, Telegram, Slack,vv...
- Bên cạnh đó Alertmanager cũng cung cấp một vài tính năng:
+ Grouping: Gom các cảnh báo tương tự thành một thông báo duy nhất, giúp giảm số lượng cảnh báo nhận được, đặc biệt trong các sự cố lớn.
+ Inhibition(Google dịch dịch là ức chế): Ngăn chặn thông báo cho các cảnh báo nếu có một cảnh báo cụ thể đã được kích hoạt, tránh thông báo không cần thiết.
+ Silences: Tắt cảnh báo trong một khoảng thời gian nhất định dựa trên các bộ lọc, không gửi thông báo cho các cảnh báo khớp với điều kiện im lặng.
+ Client behavior: Yêu cầu đặc biệt cho các trường hợp sử dụng nâng cao khi không sử dụng Prometheus để gửi cảnh báo.
+ High Availability: Alertmanager hỗ trợ cấu hình để tạo cluster(Cụm) cho khả năng sẵn sàng cao. Có thể cấu hình bằng flags --cluster-*, đảm bảo Prometheus trỏ vào danh sách tất cả các Alertmanager mà không phân phối lưu lượng traffic giữa Alertmanager và Prometheus.
5.Visualization tools
- Đây là công cụ dùng để trực quan hóa các metric lên các biểu đồ theo thời gian. Có nghĩa là khi Prometheus server thu thập metric trong đó có ghi lại thời gian thu thập, có thể sử dụng các công cụ trực quan hóa các dữ liệu để làm ra các biểu đồ, hình ảnh đẹp và đầy màu sắc theo thời gian thực.
- Như bún đậu phải có mắm tôm hai tắc bốn đường, cơm sườn phải có nước mắm chua ngọt. Thì Prometheus cũng sẽ có một công cụ luôn đi kèm với nó là Grafana (Đến nỗi trong helm chart của RKE2 còn có bộ công cụ tên là Monitoring dùng để đặt cho sự kết hợp của Prometheus và Grafana).
- Đây là công cụ trực quan hóa dữ liệu theo mình thấy là được sử dụng rộng rãi nhất.
- Ngoài tính năng tạo ra các biểu đồ đẹp mắt Grafana còn cùng cấp các tính năng Alert chỉ cấu hình thông qua giao diện, khác Prometheus phải sử dụng nhiều thành phần khác nhau hoặc qua cấu hình file hệ thống.
- Mọi người có thể sử dụng các loại công cụ trực quan hóa khác nhưng mình nghĩ nên sử dụng Grafana, do hai công cụ này có hỗ trợ nhau trong phần mềm.
III.Tổng kết
Mình đã đi qua sơ lược về kiến trúc các thành phần trong Prometheus như Prometheus server, Exporter, Pushgateway, Alertmanager, Visualization tools. Cách hoạt động của Prometheus dễ hiểu nhất đó là Prometheus server sử dụng cơ chế pull, pull metric từ các Exporter, để đặt ra những cảnh báo thì sẽ sử dụng Alertmanager và nếu muốn nhìn các số liệu đẹp hơn và rõ hơn thì có thể sử dụng Virtualization tools.
Các kiến thức trên được mình góp nhặt và nghiên cứu từ nhiều nguồn nếu như có sai sót hoặc thông tin gì sai với kiến thức chung, mọi người xin vui lòng góp ý bên dưới comment.
Dự kiến các chap tiếp theo: PrometheusQueryLanguage,Install and Configuration, Alert to your phone(Mail, Telegram, Slack), Monintoring Cluster(K8s) with Prometheus Grafana.
Last edited: