Cài đặt Prometheus trên Ubuntu 22.04

by toantv

Trước khi bắt đầu

Prometheus là một hệ thống giám sát mạnh mẽ mã nguồn mở, thu thập các số liệu thống kê từ các dịch vụ (services) lưu trữ chúng trong cơ sở dữ liệu time-series. Nó cung cấp mô hình dữ liệu đa chiều, ngôn ngữ truy vấn linh hoạt và khả năng hiển thị đa dạng thông qua các công cụ như Grafana.

Mặc định, Prometheus chỉ xuất các số liệu thống kê về chính nó (ví dụ: số lượng yêu cầu nhận được, lượng bộ nhớ tiêu thụ, v.v.). Tuy nhiên, bạn có thể giám sát nhiều dịch vụ trên Prometheus bằng cách cài đặt các bộ exporter.

Các bộ exporter chính thức do nhóm Prometheus duy trì và các bộ exporter do cộng đồng đóng góp cung cấp công cụ thu thập thông tin về cơ sở hạ tầng, cơ sở dữ liệu và máy chủ web cho đến hệ thống gửi tin nhắn, các API và nhiều hơn nữa.

Một số exporter phổ biến:

  • node_exporter – tạo ra các số liệu thống kê về cơ sở hạ tầng, bao gồm việc sử dụng CPU, bộ nhớ và đĩa hiện tại, cũng như thống kê I/O và mạng, chẳng hạn như số byte đọc từ đĩa hoặc tải trung bình của máy chủ.
  • blackbox_exporter – tạo ra các số liệu thống kê dựa trên việc thăm dò các giao thức như HTTP và HTTPS để xác định tính sẵn có của điểm cuối, thời gian phản hồi và nhiều hơn nữa.
  • mysqld_exporter – thu thập số liệu thống kê liên quan đến một máy chủ MySQL, như số lượng câu truy vấn được thực thi, thời gian phản hồi trung bình của câu truy vấn và trạng thái sao chép cụm.
  • rabbitmq_exporter – xuất ra các số liệu thống kê về hệ thống gửi tin nhắn RabbitMQ, bao gồm số lượng tin nhắn được xuất bản, số lượng tin nhắn sẵn sàng để gửi và kích thước của tất cả các tin nhắn trong hàng đợi.
  • nginx-vts-exporter – cung cấp các số liệu thống kê về một máy chủ web Nginx sử dụng mô-đun Nginx VTS, bao gồm số lượng kết nối mở, số lượng phản hồi đã gửi (nhóm theo mã phản hồi) và tổng kích thước các yêu cầu đã gửi hoặc nhận tính bằng byte.

Bạn có thể tìm thấy danh sách đầy đủ hơn về các exporter chính thức do cộng đồng đóng góp trên trang web của Prometheus’ website.

Trong hướng dẫn này, bạn sẽ cài đặt, cấu hình Prometheus và Node Exporter để tạo ra các số liệu thống kê giúp giám sát hiệu suất máy chủ của bạn dễ dàng hơn.

Đảm bảo rằng bạn có quyền truy cập sudo vào máy chủ Linux vì các lệnh được sử dụng trong hướng dẫn này yêu cầu đặc quyền root.

Quan trọng nhất, mở các quy tắc tường lửa để truy cập cổng Prometheus 9090 và Node exporter 9100 trên máy chủ.

Bước 1: Tạo người dùng dịch vụ

Vì mục đích bảo mật, chúng ta sẽ bắt đầu bằng việc tạo hai tài khoản người dùng mới, prometheus và node_exporter. Chúng ta sẽ sử dụng các tài khoản này trong suốt hướng dẫn để cô lập quyền sở hữu trên các tệp và thư mục chính của Prometheus.

Tạo hai người dùng này và sử dụng các tùy chọn –no-create-home và –shell /bin/false để ngăn người dùng này đăng nhập vào máy chủ.

sudo useradd --no-create-home --shell /bin/false prometheus
sudo useradd --no-create-home --shell /bin/false node_exporter

Trước khi tải xuống các tệp Prometheus, hãy tạo các thư mục cần thiết để lưu trữ các tệp và dữ liệu của Prometheus. Tuân theo quy chuẩn của Linux, chúng ta sẽ tạo một thư mục trong /etc để lưu trữ các tệp cấu hình của Prometheus và một thư mục trong /var/lib để lưu trữ dữ liệu của nó.

sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus

Đặt quyền sở hữu user và group cho các thư mục mới thành người dùng prometheus.

sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus

Bước 2: Tải xuống Prometheus

Tải xuống tệp và giải nén phiên bản mới nhất vào thư mục home. Bạn có thể tìm thấy phiên bản mới nhất tại trang web Prometheus download page.

cd ~
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.47.2/prometheus-2.47.2.linux-amd64.tar.gz

Giải nén tệp vừa tải về

tar xvf prometheus-2.47.2.linux-amd64.tar.gz

Sao chép hai tệp prometheus và promtool vào thư mục /usr/local/bin.

sudo cp prometheus-2.47.2.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.47.2.linux-amd64/promtool /usr/local/bin/

Đặt quyền sở hữu user và group cho các thư mục mới thành người dùng prometheus đã tạo ở Bước 1

sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool

Sao chép thư mục console và console_libraries vào /etc/prometheus.

sudo cp -r prometheus-2.47.2.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-2.47.2.linux-amd64/console_libraries /etc/prometheus

Đặt quyền sở hữu user và group trên các thư mục cho người dùng prometheus. Sử dụng -R sẽ đảm bảo rằng quyền sở hữu cũng được đặt trên các tệp trong thư mục.

sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries

Xóa các tệp còn sót lại khỏi thư mục chính của bạn vì chúng không còn cần thiết nữa.

rm -rf prometheus-2.47.2.linux-amd64.tar.gz prometheus-2.47.2.linux-amd64

Bước 3: Cấu hình Prometheus

Trong thư mục /etc/prometheus, sử dụng vi hoặc trình chỉnh sửa văn bản yêu thích của bạn để tạo tệp cấu hình có tên prometheus.yml. Hiện tại, tệp này sẽ chỉ chứa đủ thông tin để chạy Prometheus lần đầu tiên.

sudo vi /etc/prometheus/prometheus.yml

Trong phần cài đặt global, xác định khoảng thời gian mặc định cho việc thu thập số liệu thống kê. Lưu ý rằng Prometheus sẽ áp dụng các cài đặt này cho mọi bộ exporter trừ khi các cài đặt riêng của từng bộ exporter ghi đè lên các cài đặt global.

Tệp cấu hình Prometheus phần 1: /etc/prometheus/prometheus.yml

global:
  scrape_interval: 15s

Giá trị scrape_interval này cho biết Prometheus sẽ thu thập số liệu từ các bộ exporter của nó mỗi 15 giây, điều này đủ để phù hợp với hầu hết các exporter.

Bây giờ, thêm chính Prometheus vào danh sách các bộ exporter cần được thu thập số liệu bằng chỉ thị scrape_configs sau đây:

Tệp cấu hình Prometheus phần 2 /etc/prometheus/prometheus.yml

...
scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

Prometheus sử dụng job_name để gắn nhãn cho các exporter trong các truy vấn và trên đồ thị, vì vậy hãy mô tả nó để dễ dàng phân biệt.

Vì Prometheus xuất dữ liệu quan trọng về chính nó, chúng tôi đã ghi đè chỉ thị scrape_interval toàn cục từ 15 giây thành 5 giây để có cập nhật thường xuyên hơn.

Cuối cùng, Prometheus sử dụng chỉ thị static_configstargets để xác định nơi các bộ exporter đang chạy. Vì bộ exporter cụ thể này đang chạy trên cùng máy chủ với Prometheus, chúng ta có thể sử dụng localhost thay vì địa chỉ IP cùng với cổng mặc định là 9090.

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

Lưu lại và thoát

Đặt quyền sở hữu user và group trên tệp cấu hình thành người dùng prometheus đã tạo trong Bước 1.

sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml

Bước 4: Running Prometheus

Tạo một service systemd mới cho Prometheus.

sudo nano /etc/systemd/system/prometheus.service

Copy nội dung sau. Lưu lại và thoát

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
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

Để sử dụng service mới tạo, hãy tải lại systemd.

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl status prometheus
Output

● prometheus.service - Prometheus
   Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-07-21 11:40:40 UTC; 3s ago
 Main PID: 2104 (prometheus)
    Tasks: 7
   Memory: 13.8M
      CPU: 470ms
   CGroup: /system.slice/prometheus.service
...

Khởi chạy service on boot.

sudo systemctl enable prometheus

Bước 5: Tải xuống Node Exporter

Node exporter cung cấp thông tin chi tiết về hệ thống, bao gồm việc sử dụng CPU, đĩa và bộ nhớ.

Trước tiên, hãy tải xuống phiên bản mới nhất hiện tại của Node exporter vào thư mục home của bạn. Bạn có thể tìm thấy các tệp mới nhất trên trang tải xuống Prometheus.

cd ~
curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz

Giải nén tệp vừa tải xuống

tar xvf node_exporter-1.6.1.linux-amd64.tar.gz

Sao chép tệp vào thư mục /usr/local/bin và đặt quyền sở hữu user và group thành người dùng node_exporter mà bạn đã tạo trong Bước 1.

sudo cp node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

Xóa các tệp còn sót lại khỏi thư mục home của bạn vì chúng không còn cần thiết nữa.

rm -rf node_exporter-1.6.1.linux-amd64.tar.gz node_exporter-1.6.1.linux-amd64

Bước 6: Running Node Exporter

Các bước để chạy Node exporter tương tự như các bước chạy Prometheus. Bắt đầu bằng cách tạo tệp dịch vụ Systemd cho Node exporter.

sudo nano /etc/systemd/system/node_exporter.service

Copy nội dung sau. Lưu lại và thoát

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

Tải lại systemd để sử dụng service mới tạo.

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl status node_exporter
Output

● node_exporter.service - Node Exporter
   Loaded: loaded (/etc/systemd/system/node_exporter.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-07-21 11:44:46 UTC; 5s ago
 Main PID: 2161 (node_exporter)
    Tasks: 3
   Memory: 1.4M
      CPU: 11ms
   CGroup: /system.slice/node_exporter.service

Khởi chạy Node Exporter on boot.

sudo systemctl enable node_exporter

Bước 7: Cấu hình Prometheus để thu thập số liệu từ Node Exporter

Mở tệp cấu hình /etc/prometheus/prometheus.yml

sudo nano /etc/prometheus/prometheus.yml

Ở cuối khối scrape_configs, hãy thêm một mục mới có tên là node_exporter.

Tệp cấu hình Prometheus phần 1: – /etc/prometheus/prometheus.yml

...
  - job_name: 'node_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9100']

Vì Node Exporter này cũng đang chạy trên cùng máy chủ với Prometheus, chúng ta có thể sử dụng localhost thay vì địa chỉ IP, kèm theo cổng mặc định của Node Exporter là 9100.

Tệp cấu hình Prometheus – /etc/prometheus/prometheus.yml. Lưu lại và thoát

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'node_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9100']

Khởi động lại Prometheus để áp dụng các thay đổi.

sudo systemctl restart prometheus
sudo systemctl status prometheus
Output

● prometheus.service - Prometheus
   Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-07-21 11:46:39 UTC; 6s ago
 Main PID: 2219 (prometheus)
    Tasks: 6
   Memory: 19.9M
      CPU: 433ms
   CGroup: /system.slice/prometheus.service

Bây giờ bạn đã có thể truy cập vào Prometheus, mở trình duyệt và truy cập vào địa chỉ

http://your_server_ip:9090

Bạn có thể kiểm tra Node expoter đã get được metric chưa bằng cách truy cập vào địa chỉ:

Tổng kết

Trong hướng dẫn này, chúng ta đã cài đặt cấu hình một Prometheus server hoàn chỉnh cùng với một bộ Node exporter bổ sung.

Để hiển thị dữ liệu một cách trực quan bằng biểu đồ, đồ thị bạn có thể tham khảo Grafana tại đây https://prometheus.io/docs/visualization/grafana/

Related Posts

Leave a Comment