MỤC LỤC
Prometheus là một bộ công cụ monitoring và alerting open-source systems ban đầu đưuọc xây dựng bởi SoundCloud. Kể từ khi thành lập vào năm 2012, nhiều công ty và tổ chức đã sử dụng Prometheus, và project bắt đầu có nhiều các developer hoạt động và cộng đồng người sử dụng của mình. Cho tới bây giờ, Prometheus là một project open source độc lập và được duy trì độc lập với bất kỳ một công ty nào. Để nhấn mạnh và làm rõ cấu trúc của project, Prometheus tham gia vào Cloud Native Computing Foundation năm 2016, là hosted project thứ 2 sau Kubernetes.
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 metric 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
- Thu thâp metric thông qua HTTP
- Đẩy metric đã được hỗ trợ bởi một gateway trung gian
- Targets được tự động discovery thông qua service discovery trong Prometheus.
- Được hỗ trợ bởi nhiều graphing và dashboarding
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:
- Thành phần chính là Prometheus server để scrapes 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 metric của các service như HAProxy, StatsD, Graphite,...
- Alertmanager phục vụ cho việc cảnh báo
- Ngoài ra còn một số các tool hỗ trợ khác...
Sơ đồ dưới đây mình họa cho kiến trúc của Prometheus và một số các thành phần trong hệ sinh thái của nó:
- Prometheus scrapes metrics từ các instrumented jobs, trực tiếp hoặc qua các push gateway trung gian cho các short-lived jobs.
- Prometheus sẽ tự discovery ra target của các jobs hoặc trong file cấu hình thủ công để pull metrics về
- Sau đó prom server sẽ xử lý và lưu trữ xuống database của mình
- Cùng lúc đó AlertManager sẽ tiến hành kiểm tra điều kiện nếu match với các rules đã được người quản trị định nghĩa thì sẽ gửi cảnh báo thông qua các kênh mail, slack, ...
- Nó lưu trữ tất cả các samples locally scraped được và chạy các rule ứng với các data này để aggregate hoặc record new time series từ các dữ liệu đã tồn tại hoặc sinh ra cảnh báo.
- Prom UI là nơi hiển thị graph của các metrics đẩy về hệ thống. Ngoài ra, Grafana hoặc các API comsumer khác cũng có thể được sử dụng để visualize các data thu thập được.
Prom được viết bằng ngôn ngữ Go và được thiết kế theo kiến trúc microservices. Các thầnh phần của nó giao tiếp với nhau thông qua api
Prometheus phù hợp khi nào?
-
Prometheus làm việc tốt để ghi bất kỳ time series nào hoàn toàn là dạng số. Nó phù hợp với việc giám sát tập trung vào các machine tốt như việc monitoring kiển trúc highly dynamic service-oriented. Trong thế giới của microservices như hiện nay, nó hỗ trợ việc thu thập dữ liệu đa chiều và quering là một thế mạnh của Prom.
-
Prometheus được thiết kế để đảm bảo độ tin cậy, hệ thống có thể được sử dụng trong thời gian ngừng hoạt động, cho phép bạn chuẩn đoán nhanh các sự cố. Mỗi Prometheus server độc lập, không phụ thuộc vào network storage hoặc các service remote khác. Bạn có thể rely trên nó khi các thành phần khác trong infrastructure của bạn bị hỏng, và bạn sẽ không cần thiết lập một infrastructure lớn để sử dụng nó.
Prometheus không phù hợp khi nào?
- Các giá trị của Prometheus là đáng tin cậy. Bạn có thể luôn luôn xem các thông kê về hệ thống của bạn ngay cả khi nó bị lỗi. Nếu bạn cần độ chính xác là 100% như per-request billing, thì Prometheus không phải một sự lựa chọn tốt như việc thu thập các dât sẽ không được chi tiết và đầy đủ. Trong trường hợp như vậy, tốt nhất bạn nên sử dụng một hệ thống khac để thu thập và phân tích dữ liệu billing, còn lại bạn có thể sử dụng Prometheus.