Bài 2: Khám Phá PNG Stack - Prometheus và Các Exporter *Bài này mình sẽ đi từ kiến thức nền tảng để các bạn nắm được cách hoạt động và Lab để cả những bạn mới cũng có thể dễ dàng hiểu và tự tin với các bài thực tế tiếp theo. 1. Giới thiệu qua về PNG Stack Trong lĩnh vực giám sát hệ thống, PNG Stack là một bộ công cụ phổ biến trong lĩnh vực giám sát hệ thống, bao gồm Prometheus, Node exporter và Grafana. PNG Stack được tích hợp và cấu hình để cung cấp giải pháp giám sát toàn diện và hiệu quả cho các hệ thống phức tạp. Đó là lý do nó được sử dụng rộng rãi trong các tổ chức và doanh nghiệp trong thực tế. Prometheus: Prometheus là một trong những công cụ giám sát phổ biến nhất hiện nay, được phát triển bởi Google và có một cộng đồng người dùng lớn. Nó được thiết kế để thu thập và lưu trữ dữ liệu giám sát từ các hệ thống và ứng dụng phân tán lớn. Prometheus sử dụng mô hình pull (kéo) để thu thập dữ liệu, cho phép nó linh hoạt và mở rộng tốt trên các hệ thống có quy mô khác nhau. Trong lĩnh vực giám sát có hai mô hình là pull và push, hiểu đơn giản liên quan đến luồng dữ liệu từ agent đến server và ngược lại.Node Exporter: Đây là một trong những exporter phổ biến nhất trong cộng đồng Prometheus, chuyên thu thập các số liệu liên quan đến hệ điều hành Linux, bao gồm CPU, bộ nhớ, lưu trữ, và mạng. Còn rất nhiều Exporter khác, mình sẽ làm rõ hơn từng loại ở phần thực hành.Grafana: Công cụ này hỗ trợ trực quan hóa dữ liệu mạnh mẽ, cho phép người dùng tạo các bảng dashboard tùy chỉnh để hiển thị dữ liệu một cách dễ dàng và hiệu quả. Grafana có thể phân tích được nhiều nguồn dữ liệu khác nhau không chỉ Prometheus.Luồng hoạt động cơ bản sẽ như sau: 2. Sự khác niệt của PNG Stack so với các Công cụ giám sát kháck So với các công cụ giám sát truyền thống như Nagios hay Zabbix, PNG Stack mang lại nhiều ưu điểm vượt trội:Khả Năng Mở Rộng Linh Hoạt: Prometheus sử dụng mô hình pull, cho phép mở rộng hệ thống một cách linh hoạt và dễ dàng. Điều này đặc biệt hữu ích trong các hệ thống có quy mô lớn và phân tán.Trực Quan Hóa Dữ Liệu Tốt Hơn: Grafana cung cấp khả năng tạo dashboard tùy chỉnh với nhiều loại biểu đồ và bố cục, giúp người dùng dễ dàng theo dõi và phân tích dữ liệu hơn.Đa Dạng Các Exporter: PNG Stack hỗ trợ nhiều exporter khác nhau, cho phép thu thập dữ liệu từ nhiều nguồn như hệ điều hành, dịch vụ mạng, và các hệ thống ảo hóa. Điều này làm cho PNG Stack trở thành một giải pháp giám sát toàn diện. 3. Tích Hợp Các Thành Phần Trong PNG Stack Quá trình tích hợp các thành phần trong PNG Stack có thể được tóm gọn qua các bước sau:Cài Đặt PrometheusCài Đặt và Cấu Hình Node ExporterCài Đặt Grafana và liên kết DatasourceTích Hợp Với Các Exporter KhácSau đây mình sẽ hướng dẫn cài đặt nhanh các thành phần này, mình sẽ đi theo một form chung và kết quả sẽ có một service tương ứng để chạy dịch vụ để đảm bảo an toàn ứng dụng và sát với thực tế nhất. 3.1. Cài đặt Prometheus Cài đặt Prometheus: https://prometheus.io/download/# wget https://github.com/prometheus/prometheus/releases/download/v2.39.0/prometheus-2.39.0.linux-amd64.tar.gz # tar -xzf prometheus-2.39.0.linux-amd64.tar.gz # cd prometheus-2.39.0.linux-amd64 # sudo mv prometheus promtool /usr/local/bin/ # sudo mv consoles/ console_libraries/ /etc/prometheus # prometheus --version Tạo dịch vụ cho prometheus chạy nền:# sudo groupadd --system prometheus # sudo useradd -s /sbin/nologin --system -g prometheus prometheus # sudo chown -R prometheus:prometheus /etc/prometheus/ /var/lib/prometheus/ # sudo chmod -R 775 /etc/prometheus/ /var/lib/prometheus/ # sudo tee /etc/systemd/system/prometheus.service << EOF [Unit] Description=Prometheus Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Restart=always Type=simple ExecStart=/usr/local/bin/prometheus config.file=/etc/prometheus/prometheus.yml storage.tsdb.path=/var/lib/prometheus/ web.console.templates=/etc/prometheus/consoles web.console.libraries=/etc/prometheus/console_libraries [Install] WantedBy=multi-user.target EOFChạy dịch vụ:# sudo systemctl daemon-reload # sudo systemctl start prometheus # sudo systemctl enable prometheus # sudo systemctl status prometheus Prometheus hoạt động ở port 9090, bạn có thể sử dụng:# curl localhost:9090/metrics 3.2. Cài Đặt và Cấu Hình Node Exporter Cài đặt Node Exporter: https://github.com/prometheus/node_exporter/releases# wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz # tar -xzf node_exporter-1.7.0.linux-amd64.tar.gz # cd node_exporter-1.7.0.linux-amd64 # sudo mv node_exporter /usr/local/bin/ # node_exporter --versionTạo dịch vụ chạy node_exporter dưới nền:# sudo tee /etc/systemd/system/node_exporter.service << EOF [Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=root Type=simple Restart=always ExecStart=/usr/local/bin/node_exporter [Install] WantedBy=multi-user.target EOFChạy dịch vụ:# sudo systemctl daemon-reload # sudo systemctl start node_exporter # sudo systemctl enable node_exporter # sudo systemctl status node_exporter Node Exporter hoạt động ở port 9100, bạn có thể sử dụng:# curl localhost:9100/metrics 3.3. Thêm Node Exporter vào Prometheus Mở file cấu hình Prometheus và thêm thông tin node cần thu thập dữ liệuvi /etc/prometheus/prometheus.yml Các bạn thêm một job nữa ở cuối file tên là “node-exporter”, được config tới targets là IP của node cần giám sát, port tương ứng của exporter. - job_name: "node-exporter" # Tên job giám sát static_configs: - targets: [":9100"] # IP của Node Exporter*Lưu ý: mỗi lùi đầu dòng trong cú pháp Yaml tương ứng hai space.Sau đó khởi động lại dịch vụ Prometheus# systemctl restart prometheus.serviceTruy cập Prometheus, vào Status/Targets và đảm bảo các mục tiêu cần giám sát đang “UP". Về căn bản, dữ liệu đã được thu thập về Prometheus và có thể truy vấn trực tiếp. Các dữ liệu này bạn có thể tham khảo trên từng loại Exporter sẽ có giá trị khác nhau, mình sẽ đề cập chi tiết ở những bài sau. 4. Dữ Liệu Thu Thập Từ Prometheus Dữ liệu trong Prometheus được thu thập và lưu trữ dưới dạng time-series. Các dữ liệu này được gọi là metrics, bao gồm các thông tin thống kê về hoạt động của hệ thống.Metrics: Là các chỉ số mô tả các thuộc tính và hoạt động của hệ thống. Các metrics được Prometheus thu thập từ các exporter khác nhau và lưu trữ trong cơ sở dữ liệu time-series.Time-Series Database: Prometheus lưu trữ các metrics theo thời gian, cho phép người dùng theo dõi và phân tích sự thay đổi của hệ thống qua các biểu đồ theo chuỗi thời gian.Để truy vấn và phân tích các metrics, Prometheus sử dụng ngôn ngữ truy vấn PromQL (Prometheus Query Language), cho phép người dùng thực hiện các phép tính trên dữ liệu time-series và tạo ra các kết quả chính xác. 5. Kết Luận Với sự kết hợp của Node Exporter giúp Prometheus trở thành một giải pháp giám sát nhanh chóng cho các hệ thống IT hiện đại. Sự linh hoạt, khả năng mở rộng, và trực quan hóa dữ liệu của nó làm cho PNG Stack trở thành lựa chọn lý tưởng cho việc giám sát các hệ thống phức tạp và quy mô lớn.Việc tích hợp các thành phần trong PNG Stack không chỉ giúp thu thập dữ liệu một cách hiệu quả mà còn cung cấp cái nhìn sâu sắc và toàn diện về tình trạng hoạt động của hệ thống, giúp người quản trị hệ thống đưa ra các quyết định đúng đắn và kịp thời.