Tác giả: Minh Hiếu

Thông tin liên hệ:

Chào mọi người hưởng ứng sự tận tâm của anh Mạnh mình sẽ góp gạo trên blog. Giám sát rất quan trọng để duy trì sự ổn định của hệ thống, chẩn đoán sự cố và tối ưu hiệu suất. Prometheus và Grafana là bộ đôi hoàn hảo cho mục đích này. Prometheus thu thập và lưu trữ các chỉ số, trong khi Grafana cung cấp giao diện thân thiện với người dùng để trực quan hóa dữ liệu này và tạo các dashboard tùy chỉnh. Và bài viết đầu tiên mình sẽ hướng dẫn cách cài đặt Grafana + Prometheus + Node exporter.

1. Cài đặt Prometheus

Prometheus là một phần mềm mã nguồn mở miễn phí được sử dụng để giám sát và cảnh báo, cho phép người dùng thu thập và phân tích các chỉ số từ các hệ thống, dịch vụ và ứng dụng khác nhau.

1.1 Tải Prometheus

Truy cập vào trang web của Prometheus và tải về phiên bản mới nhất phù hợp với hệ điều hành của bạn. Prometheus có sẵn cho nhiều nền tảng, bao gồm Linux, macOS và Windows.

Đối với người dùng Linux, bạn có thể sử dụng lệnh curl và lưu tệp đã tải về dưới tên prometheus.tar.gz:

# curl -L -o /tmp/prometheus.tar.gz https://github.com/prometheus/prometheus/releases/download/v2.53.3/prometheus-2.53.3.linux-amd64.tar.gz

1.2 Giải nén tệp cài đặt Prometheus

Khi việc tải về hoàn tất, giải nén nội dung của tệp lưu trữ Prometheus và thêm các tệp nhị phân prometheuspromtool vào thư mục /usr/bin

# tar xvf /tmp/prometheus.tar.gz
# cd prometheus-2.53.3.linux-amd64
# sudo cp prometheus promtool /usr/bin/

1.3 Cấu hình Prometheus

Bắt đầu bằng cách tạo một người dùng mới tên là prometheus để cách ly quá trình:

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

Tiếp theo, tạo một thư mục để lưu trữ các tệp cấu hình và dữ liệu của Prometheus:

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

Sau đó, sao chép tệp cấu hình mặc định của Prometheus:

# sudo cp -r prometheus.yml consoles/ console_libraries/ /etc/prometheus/

Nếu cần, mở tệp này trong trình chỉnh sửa văn bản và tùy chỉnh nó theo yêu cầu giám sát của bạn. Tại đây, bạn có thể chỉ định các mục tiêu cần thu thập dữ liệu, cấu hình các quy tắc cảnh báo và định nghĩa các cấu hình lưu trữ.

1.4 Khởi tạo dịch vụ Prometheus

Để chạy Prometheus như một dịch vụ trên Linux, tạo một tệp systemd:

# sudo vi /etc/systemd/system/prometheus.service

Và dán nội dung của dịch vụ (điều chỉnh đường dẫn sao cho phù hợp với cấu hình của bạn)

[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=prometheus
Group=prometheus
ExecStart=/usr/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 \
    --web.listen-address=0.0.0.0:9090

ExecReload=/bin/kill -HUP $MAINPID
SyslogIdentifier=prometheus
Restart=always

[Install]
WantedBy=multi-user.target

Bây giờ chúng ta có thể bắt đầu dịch vụ Prometheus:

# sudo systemctl daemon-reload
# sudo systemctl start prometheus
# sudo systemctl enable prometheus

1.5 Truy cập giao diện web của Prometheus

Khi Prometheus đã chạy, bạn có thể truy cập giao diện người dùng web của nó bằng cách mở trình duyệt web và điều hướng đến http://ip_server:9090

2. Cài đặt và cấu hình Grafana

Grafana là một nền tảng phân tích và trực quan hóa mã nguồn mở cho phép người dùng tạo, khám phá và chia sẻ dashboard và thông tin từ các nguồn dữ liệu khác nhau.

2.1 Cài đặt Grafana

Tải về Grafana: Truy cập vào trang web của Grafana và tải về phiên bản mới nhất phù hợp với hệ điều hành của bạn. Grafana hỗ trợ nhiều nền tảng, bao gồm Linux, macOS và Windows.

# sudo apt-get install -y apt-transport-https software-properties-common wget
# sudo mkdir -p /etc/apt/keyrings/
# wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
# echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
# sudo apt-get update
# sudo apt-get install -y grafana-server

2.2 Truy cập vào giao diện của Grafana

Khi Grafana đã chạy, bạn có thể truy cập giao diện người dùng web của nó bằng cách mở trình duyệt web và điều hướng đến http://ip_server:3000

2.3 Thêm Prometheus làm Datasource

Datasource của Grafana về cơ bản là một nguồn dữ liệu mà Grafana kết nối để lấy dữ liệu phục vụ việc trực quan hóa.

Để thêm nguồn dữ liệu Prometheus, hãy vào Home > Connections > Data Sources > Dưới mục Connections, nhấn Add new connection.

Chọn nguồn dữ liệu Prometheus. Dưới phần kết nối, nhập URL của phiên bản Prometheus của bạn và lưu lại.

3. Cài đặt Node Exporter

Node Exporter là một exporter của Prometheus thu thập các chỉ số cấp hệ thống từ các hệ thống Linux và Unix. Nó cung cấp thông tin chi tiết về phần cứng, hệ điều hành và các chỉ số cấp hệ thống khác như sử dụng CPU, sử dụng bộ nhớ, sử dụng đĩa, thống kê mạng và nhiều hơn nữa. Các chỉ số này sau đó được cung cấp cho Prometheus để giám sát và cảnh báo.

Để cài đặt Node Exporter trên hệ thống Linux hoặc Unix, bạn có thể làm theo các bước tổng quát sau:

3.1 Tải về Node Exporter

Bạn có thể tải về phiên bản mới nhất của Node Exporter từ trang phát hành GitHub của Prometheus:

# curl -L -o /tmp/node_exporter.tar.gz https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz

3.2 Giải nén tệp lưu trữ Node Exporter 

Khi việc tải về hoàn tất, giải nén nội dung của tệp lưu trữ node_exporter và thêm tệp nhị phân node_exporter vào thư mục /usr/bin.

# tar xvf /tmp/node_exporter.tar.gz
# cd node_exporter-1.8.2.linux-amd64
# sudo mv node_exporter /usr/bin

3.3 Tạo dịch vụ Node Exporter

Để chạy Node Exporter như một dịch vụ trên Linux, tạo một tệp systemd:

# sudo vi /etc/systemd/system/node_exporter.service

Và dán nội dung của dịch vụ (điều chỉnh đường dẫn sao cho phù hợp với cấu hình của bạn):

[Unit]
Description=Node Exporter
After=network.target

[Service]
ExecStart=/usr/bin/node_exporter

[Install]
WantedBy=multi-user.target

Bây giờ chúng ta có thể bắt đầu dịch vụ node_exporter của mình:

# sudo systemctl daemon-reload
# sudo systemctl start node_exporter
# sudo systemctl enable node_exporter

3.4 Xác minh Cài đặt Node Exporter

Khi Node Exporter đã chạy, bạn có thể xác minh rằng nó đang thu thập các chỉ số bằng cách truy cập vào endpoint chỉ số của nó trong trình duyệt web. Mặc định, nó lắng nghe trên cổng 9100. Vì vậy, bạn có thể truy cập vào http://ip_server:9100/metrics để xem các chỉ số đã được thu thập.

4. Cấu hình Prometheus để thu thập chỉ số từ Node Exporter

Cuối cùng, bạn cần cấu hình Prometheus để thu thập các chỉ số từ Node Exporter. Điều này bao gồm việc thêm Node Exporter làm mục tiêu trong tệp cấu hình Prometheus của bạn.

Mở tệp cấu hình Prometheus của bạn:

# sudo vi /etc/prometheus/prometheus.yml

Thêm cấu hình scrape dưới đây:

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['your-server-ip:9100']

Tải lại cấu hình Prometheus:

# sudo systemctl reload prometheus

Khi bạn hoàn thành các bước này, Prometheus sẽ bắt đầu thu thập các chỉ số từ Node Exporter, và bạn có thể sử dụng Grafana để trực quan hóa và giám sát các chỉ số này thông qua Prometheus.

5. Tạo dashboard trên Grafana cho Node Exporter

Cộng đồng Grafana cung cấp một loạt các dashboard Grafana, trong trường hợp này, chúng ta sẽ nhập dashboard hoàn chỉnh này: https://grafana.com/grafana/dashboards/1860-node-exporter-full/

Mở Grafana trong trình duyệt web của bạn và đi đến phần Dashboards.

Trong phần Dashboards, nhấn vào nút “Import”.

Dán ID của dashboard: 1860, và nhấn vào nút “Load”.

Bạn có thể cần cấu hình một số thiết lập như nguồn dữ liệu nếu nó chưa được cấu hình trong phiên bản Grafana của bạn.

Cuối cùng, nhấn vào nút “Import” để nhập dashboard vào phiên bản Grafana của bạn.

Vậy là mình đã hướng dẫn xong cách cài đặt Grafana + Prometheus + Node exporter rồi. Trong các bài khác mình sẽ hướng dẫn mọi người kiến thức khác.