[Monitoring 2] Prometheus-Grafana-Exporter – Cặp đôi hoàn hảo.

Tác giả: 23/03/2024

Prometheus và Grafana thường được coi là một cặp đôi hoàn hảo trong việc giám sát và trực quan hóa hệ thống. Hai công cụ này hoạt động cùng nhau để cung cấp một giải pháp đáng tin cậy và mạnh mẽ cho việc giám sát và hiển thị dữ liệu.

Prometheus là một hệ thống giám sát mã nguồn mở mạnh mẽ, có khả năng thu thập dữ liệu từ nhiều nguồn khác nhau và lưu trữ dưới dạng dữ liệu thời gian (time-series data). Nó cung cấp một cơ sở dữ liệu đáng tin cậy để lưu trữ và truy vấn dữ liệu giám sát. Prometheus cũng có tính năng cảnh báo, cho phép bạn định nghĩa các quy tắc cảnh báo và nhận thông báo khi các điều kiện cảnh báo được kích hoạt.

Grafana là một công cụ trực quan hóa dữ liệu mã nguồn mở, cho phép bạn tạo các biểu đồ và bảng điều khiển tùy chỉnh để hiển thị dữ liệu giám sát từ Prometheus và các nguồn khác. Với Grafana, bạn có thể tạo các biểu đồ linh hoạt, bảng điều khiển đa dạng và các thông báo cảnh báo để theo dõi và hiểu rõ hơn về trạng thái của hệ thống. Grafana cung cấp nhiều khả năng tùy chỉnh, cho phép bạn thiết kế giao diện trực quan theo ý muốn.

Khi kết hợp Prometheus và Grafana, bạn có thể thu thập, lưu trữ, truy vấn và trực quan hóa dữ liệu giám sát một cách hiệu quả. Prometheus thu thập dữ liệu và lưu trữ nó trong cơ sở dữ liệu của mình, trong khi Grafana sử dụng các truy vấn PromQL để truy xuất dữ liệu từ Prometheus và hiển thị nó dưới dạng biểu đồ và bảng điều khiển tùy chỉnh. Điều này giúp bạn có cái nhìn tổng thể và chi tiết về hiệu suất và trạng thái của hệ thống.

Với sự kết hợp của Prometheus và Grafana, bạn có thể tạo ra các báo cáo, biểu đồ động, cảnh báo và trực quan hóa dữ liệu giám sát để giúp bạn kiểm soát và quản lý hệ thống của mình một cách hiệu quả.

Ở bài viết trước chúng ta đã cài đặt thử Prometheus trên Ubuntu 22.04

[Monitoring 1] Cài đặt Prometheus trên Ubuntu 22.04 – Nhan Hoa Knowledgebase

Chúng ta sẽ tiếp tục phần cài đặt grafana và test thử giám sát 1 VPS bằng 1 exporter về tài nguyên sử dụng trên linux cơ bản ở bài này

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

Thêm kho lưu trữ Grafana

Trong bước đầu tiên, bạn sẽ thiết lập kho lưu trữ Grafana trên hệ thống Ubuntu của mình. Bạn sẽ cài đặt các phụ thuộc cơ bản và thêm khóa GPG và kho lưu trữ Grafana vào hệ thống của bạn.

Chạy lệnh apt bên dưới để cài đặt một số phụ thuộc gói.

apt install gnupg2 apt-transport-https software-properties-common wget -y

Tiếp theo, chạy lệnh dưới đây để thêm khóa GPG cho kho lưu trữ Grafana. Lệnh đầu tiên này sẽ tải xuống khóa GPG của kho lưu trữ Grafana và lệnh thứ hai sẽ chuyển đổi tệp .key thành .gpg.

wget -q -O - https://packages.grafana.com/gpg.key > grafana.key
cat grafana.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/grafana.gpg > /dev/null

Bây giờ hãy chạy lệnh dưới đây để thêm kho lưu trữ Grafana. Trong ví dụ này, bạn sẽ thêm Grafana OSS (Open Source Edition) với một nhánh ổn định.

echo 'deb [signed-by=/etc/apt/trusted.gpg.d/grafana.gpg] https://packages.grafana.com/oss/deb stable main' | tee /etc/apt/sources.list.d/grafana.list

Cuối cùng, cập nhật và làm mới chỉ mục gói của bạn thông qua lệnh apt sau.

apt update -y

Sau đó, bạn sẽ nhận được đầu ra mà kho lưu trữ Grafana được thêm vào hệ thống của bạn.

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

Với kho lưu trữ Grafana hiện đã được thêm vào, bây giờ bạn có thể cài đặt Grafana trên hệ thống của mình. Trong bước này, bạn sẽ cài đặt Grafana, khởi động và kích hoạt dịch vụ Grafana, sau đó cấu hình máy chủ Grafana.

Đầu tiên, chạy lệnh apt dưới đây để cài đặt gói Grafana vào hệ thống của bạn.

apt install grafana -y

Sau khi máy chủ Grafana được cài đặt, hãy chạy lệnh dưới đây để tải lại trình quản lý systemd và áp dụng các dịch vụ systemd mới.

systemctl daemon-reload

systemctl start grafana-server

systemctl enable grafana-server

systemctl status grafana-server

Với máy chủ Grafana đang chạy, tiếp theo bạn sẽ thiết lập cài đặt Grafana thông qua cấu hình ‘/etc/grafana/grafana.ini’.

Mở tệp cấu hình Grafana ‘/etc/grafana/grafana.ini’ bằng lệnh trình chỉnh sửa nano bên dưới.

vi /etc/grafana/grafana.ini

Trên phần ‘server’, thay đổi cấu hình mặc định bằng các dòng sau. Ngoài ra, hãy chắc chắn thay đổi tùy chọn ‘tên miền’ ở đây với tên miền của bạn. Bạn có thể sử dụng miền cục bộ có thể được định cấu hình thông qua tệp cấu hình ‘/etc/hosts’.

Trong ví dụ này, bạn sẽ chạy máy chủ Grafana với tên miền  ‘gpe.itvn.xyz‘.

Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.

Cuối cùng, chạy tiện ích lệnh systemctl bên dưới để khởi động lại dịch vụ ‘grafana-server’ và áp dụng các thay đổi mới.

Lúc này, bạn đã hoàn tất việc cài đặt và cấu hình cơ bản của máy chủ Graffana. Máy chủ Grafana hiện đang chạy trên localhost với cổng TCP mặc định 3000.

Trong các bước tiếp theo, bạn sẽ thiết lập Nginx làm proxy ngược cho máy chủ Grafana.

Cài đặt và cấu hình Nginx

Với máy chủ Grafana được cài đặt và cấu hình, bây giờ bạn sẽ cài đặt và định cấu hình Nginx làm proxy ngược cho máy chủ Grfana. Bạn sẽ chạy máy chủ Grafana với tên miền cục bộ được bảo mật bằng chứng chỉ SSL.

Vì vậy, trước khi bắt đầu, hãy đảm bảo rằng bạn có một miền cục bộ được phân giải thành địa chỉ IP máy chủ Grafana và đảm bảo rằng bạn đã tạo chứng chỉ SSL cho miền của mình. Bạn có thể tạo và sử dụng chứng chỉ Tự ký làm ví dụ cho việc triển khai của mình.

Để bắt đầu, hãy chạy lệnh apt bên dưới để cài đặt gói Nginx.

apt install nginx -y

Sau khi Nginx được cài đặt, hãy tạo cấu hình khối máy chủ mới ‘/etc/nginx/conf.d/grafana.conf’ bằng lệnh trình chỉnh sửa  bên dưới.

vi /etc/nginx/conf.d/grafana.conf

Đoạn này mình chưa cấu hình ssl nên để # ở phần config 443 nhé.

# this is required to proxy Grafana Live WebSocket connections.
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

server {
listen 80;
server_name gpe.itvn.xyz;
# rewrite https://$server_name$request_uri? permanent;
root /usr/share/nginx/html;
index index.html index.htm;

access_log /var/log/nginx/grafana-access.log;
error_log /var/log/nginx/grafana-error.log;

location / {
proxy_set_header Host $http_host;
proxy_pass http://localhost:3000/;
}

# Proxy Grafana Live WebSocket connections.
location /api/live {
rewrite ^/(.*) /$1 break;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $http_host;
proxy_pass http://localhost:3000/;
}

}

#server {
# listen 443 ssl http2;
# server_name gpe.itvn.xyz;

# root /usr/share/nginx/html;
# index index.html index.htm;

# ssl_certificate /etc/letsencrypt/live/gpe.hwdomain.io/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/gpe.hwdomain.io/privkey.pem;

# access_log /var/log/nginx/grafana-access.log;
# error_log /var/log/nginx/grafana-error.log;

# location / {
# proxy_set_header Host $http_host;
# proxy_pass http://localhost:3000/;
# }

# Proxy Grafana Live WebSocket connections.
# location /api/live {
# rewrite ^/(.*) /$1 break;
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection $connection_upgrade;
# proxy_set_header Host $http_host;
# proxy_pass http://localhost:3000/;
# }
#}

Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.

service nginx restart

systemctl enable nginx

Với Nginx đang chạy và được cấu hình làm proxy ngược cho Grafana, giờ đây bạn có thể truy cập máy chủ Grafana của mình thông qua tên miền cục bộ của mình.

Mở trình duyệt web của bạn và truy cập tên miền để cài đặt máy chủ Grafana của bạn (ví dụ: http://gpe.itvn.xyz/). Sau đó, bạn sẽ thấy trang đăng nhập của máy chủ Grafana.

Nhập tên người dùng và mật khẩu mặc định ‘admin’, sau đó nhấp vào ‘Đăng nhập’.

Cài đặt node_exporter

Trong các bước sau, bạn sẽ cài đặt node_exporter trên hệ thống Ubuntu. Công node_exporter sẽ thu thập các số liệu hệ thống và hiển thị API HTTP chạy trên cổng TCP mặc định ‘9100’.

Chạy lệnh dưới đây để tải xuống phiên bản mới nhất của gói nhị phân node_exporter.

curl -s https://api.github.com/repos/prometheus/node_exporter/releases/latest| grep browser_download_url|grep linux-amd64|cut -d '"' -f 4|wget -qi -

Sau khi node_exporter được tải xuống, hãy giải nén tệp và di chuyển thư mục làm việc vào đó.

tar -xvf node_exporter*.tar.gz
cd  node_exporter*/

Bây giờ sao chép tệp nhị phân của ‘node_exporter’ vào thư mục ‘/ usr / local / bin’.

cp node_exporter /usr/local/bin

Sau đó xác minh node_exporter thông qua lệnh bên dưới. Bạn sẽ thấy đường dẫn đầy đủ của tệp nhị phân node_exporter và phiên bản hiện tại của node_exporter.

which node_exporter
node_exporter --version

Tạo 1 service node_exporter khởi động cùng hệ thống:

tee /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=default.target
EOF

Khởi động lại deamon và exporter_service

systemctl daemon-reload

systemctl start node_exporter

systemctl enable node_exporter

systemctl status node_exporter

Thêm Node_Exporter vào Promethus

vi /etc/prometheus/prometheus.yml

 

Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.

systemctl restart prometheus

Sau đó đăng nhập Promethus và run querry:

node_memory_Active_bytes

Sau đó tại Status > Target

Thêm Promethus vào Datasource của Grafana

Đăng nhập lại Grafana

Cài đặt cơ bản

Bây giờ quay lên phần Dashboard của Grafana chúng ta sẽ tìm kiếm 1 giao diện chuyên giám sát, tham khảo tại đây

Dashboards | Grafana Labs

Mình sẽ lấy cái Node Exporter Full có ID là 1860

Load > Import

Kết Luận

Trong hướng dẫn này, bạn đã cài đặt Grafana để trực quan hóa dữ liệu với Nginx làm proxy ngược trên máy chủ Ubuntu 22.04. Bạn cũng đã cài đặt  node_exporter cùng với Grafana.

Hẹn gặp lại các bạn tại các bài viết sau tại wiki.nhanhoa.com