Xây dựng hệ thống giám sát với Grafana và Prometheus trên Debian 12

theanh

Administrator
Nhân viên
Grafana là một nền tảng trực quan hóa dữ liệu đa nền tảng và mã nguồn mở do Grafana Labs phát triển. Grafana cung cấp một ứng dụng web trực quan hóa dữ liệu tương tác bao gồm biểu đồ, đồ thị và cảnh báo. Với Grafana, bạn có thể truy vấn, trực quan hóa, thiết lập cảnh báo và khám phá số liệu, nhật ký và dấu vết của TSDB. Đây là một công cụ mạnh mẽ biến dữ liệu cơ sở dữ liệu chuỗi thời gian (TSDB) thành biểu đồ và trực quan hóa sâu sắc.

Trong Grafana, bạn có thể thêm dữ liệu cơ sở dữ liệu chuỗi thời gian của mình thông qua 'Nguồn dữ liệu'. Grafana hỗ trợ nhiều nguồn dữ liệu như Prometheus, InfluxDB, PostgreSQL, Loki, Jaeger, Graphite, Google Cloud Monitoring, AWS CloudWatch, Azure Monitor và nhiều nguồn khác nữa.

Trong hướng dẫn này, bạn sẽ cài đặt Grafana trên máy chủ Debian 12 với Nginx làm proxy ngược, sau đó thêm Prometheus làm nguồn dữ liệu và định cấu hình Grafana Dashboard để giám sát hệ thống.

Điều kiện tiên quyết​

Trước khi tiếp tục, hãy đảm bảo rằng bạn có những điều sau:
  • Máy chủ Debian 12 để cài đặt Grafana.
  • Máy chủ Debian 12 đã cài đặt Prometheus và Node Exporter - Cách cài đặt Prometheus và Node Exporter trên Debian 12.
  • Người dùng không phải root có quyền quản trị viên sudo.

Thêm kho lưu trữ Grafana​

Trong hướng dẫn này, bạn sẽ cài đặt Grafana thông qua kho lưu trữ Grafana chính thức. Để thực hiện điều đó, bạn phải thêm kho lưu trữ Grafana vào máy chủ Debian của mình.

Để bắt đầu, hãy chạy lệnh sau để cài đặt các phụ thuộc cơ bản vào máy Debian của bạn.
Mã:
sudo apt install gnupg2 apt-transport-https software-properties-common wget

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22308%22%3E%3C/svg%3E


Bây giờ hãy thêm khóa Grafana GPG và kho lưu trữ bằng cách thực hiện lệnh sau.
Mã:
curl -fsSL https://packages.grafana.com/gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/grafana.gpg
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/grafana.gpg] https://packages.grafana.com/oss/deb stable main' | sudo tee /etc/apt/sources.list.d/grafana.list
Cuối cùng, hãy cập nhật và làm mới chỉ mục gói Debian của bạn để áp dụng thay đổi.
Mã:
sudo apt update

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22150%22%3E%3C/svg%3E

Cài đặt Grafana​

Bây giờ bạn đã thêm kho lưu trữ Grafana, bạn sẽ cài đặt Grafana thông qua APT. Sau đó, bạn sẽ cấu hình người dùng và mật khẩu quản trị viên cho cài đặt Grafana của bạn.

Cài đặt Grafana vào hệ thống Debian của bạn bằng lệnh sau. Nhập y để tiếp tục cài đặt.
Mã:
sudo apt install grafana

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22294%22%3E%3C/svg%3E


Sau khi cài đặt hoàn tất, hãy tải lại trình quản lý systemd bằng cách thực hiện lệnh sau lệnh.
Mã:
sudo systemctl daemon-reload
Sau đó, khởi động và kích hoạt dịch vụ grafana-server bằng lệnh bên dưới.
Mã:
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22179%22%3E%3C/svg%3E


Sau khi grafana-server chạy, hãy xác minh nó bằng lệnh bên dưới. Nếu mọi việc diễn ra tốt đẹp, bạn sẽ thấy grafana-server được bật và đang chạy.
Mã:
sudo systemctl status grafana-server

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22219%22%3E%3C/svg%3E


Cuối cùng, hãy khởi chạy trình duyệt web và truy cập địa chỉ IP máy chủ của bạn với cổng Grafana mặc định là 3000, chẳng hạn như http://192.168.5.20:3000/.

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


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22637%22%20height=%22601%22%3E%3C/svg%3E


Bây giờ hãy thay đổi mật khẩu quản trị viên mặc định bằng mật khẩu mới. Sau đó nhấp vào Gửi để xác nhận.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22629%22%20height=%22711%22%3E%3C/svg%3E


Khi quá trình hoàn tất, bạn sẽ thấy bảng điều khiển Grafana như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22395%22%3E%3C/svg%3E

Cấu hình Grafana​

Sau khi cài đặt Grafana, bước tiếp theo là cấu hình Grafana bằng cách sửa đổi cấu hình mặc định /etc/grafana/grafana.ini và thiết lập http_addr thành localhost, http_port thành 3000 và tên miền có tên miền cục bộ grafana.howtoforge.local.

Mở cấu hình Grafana mặc định /etc/grafana/grafana.ini bằng lệnh trình chỉnh sửa nano sau.
Mã:
sudo nano /etc/grafana/grafana.ini
Thay đổi cấu hình mặc định bằng các dòng sau. Trong ví dụ này, bạn sẽ chạy Grafana trên localhost và với tên miền cục bộ grafana.howtoforge.local.
Mã:
[server]
# The IP address to bind to, empty will bind to all interfaces
http_addr = localhost

# The http port to use
http_port = 3000

# The public facing domain name used to access grafana from a browser
domain = grafana.howtoforge.local
Khi hoàn tất, hãy lưu và thoát khỏi tệp.

Bây giờ hãy chạy lệnh systemctl sau để khởi động lại grafana-server và áp dụng các thay đổi. Với điều này, cài đặt Grafana của bạn chỉ chạy trên máy chủ cục bộ.
Mã:
sudo systemctl restart grafana-server

Cài đặt Nginx làm Proxy ngược​

Trong hướng dẫn này, bạn sẽ chạy Grafana với Nginx làm proxy ngược. Bây giờ, hãy hoàn thành các tác vụ sau để cài đặt và cấu hình Nginx làm proxy ngược cho cài đặt Grafana của bạn.

Chạy lệnh sau để cài đặt máy chủ web Nginx vào máy Debian của bạn. Nhập y để tiếp tục cài đặt.
Mã:
sudo apt install nginx

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22640%22%20height=%22316%22%3E%3C/svg%3E


Sau khi Nginx được cài đặt, hãy chạy lệnh nano editor sau để tạo tệp khối máy chủ mới /etc/nginx/sites-available/grafana.conf.
Mã:
sudo nano /etc/nginx/sites-available/grafana.conf
Chèn cấu hình sau và đảm bảo thay đổi tên miền trong tham số server_name.
Mã:
# This is required to proxy Grafana Live WebSocket connections.
map $http_upgrade $connection_upgrade {
 default upgrade;
 '' close;
}

server {
 listen 80;
 server_name grafana.howtoforge.local;

 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/;
 }
}
Lưu và đóng tệp khi hoàn tất.

Tiếp theo, chạy lệnh sau để kích hoạt tệp khối máy chủ /etc/nginx/sites-available/grafana.conf. Sau đó, hãy xác minh cú pháp Nginx của bạn để đảm bảo rằng bạn có cú pháp phù hợp.
Mã:
sudo ln -s /etc/nginx/sites-available/grafana.conf /etc/nginx/sites-enabled/
sudo nginx -t
Nếu bạn có cú pháp Nginx chính xác, bạn sẽ nhận được đầu ra 'test is successful - syntax is ok'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22200%22%3E%3C/svg%3E


Lasy, hãy chạy lệnh sau Lệnh systemctl để khởi động lại dịch vụ Nginx và áp dụng các thay đổi. Sau đó, hãy xác minh Nginx để đảm bảo rằng dịch vụ đang chạy.
Mã:
sudo systemctl restart nginx
sudo systemctl status nginx
Trong đầu ra sau, bạn sẽ thấy dịch vụ Nginx đang chạy.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22214%22%3E%3C/svg%3E


Để truy cập máy chủ Grafana của bạn, bạn có thể sửa đổi tệp /etc/hosts trên máy cục bộ của bạn máy nếu bạn là người dùng Linux hoặc MacOS. Đối với người dùng Windows, hãy chỉnh sửa tệp C:\Windows\System32\drivers\etc\hosts thành quyền quản trị.

Nhập cấu hình sau vào tệp.
Mã:
192.168.5.15 grafana.howtoforge.local
Lưu và đóng tệp khi hoàn tất.

Bây giờ hãy quay lại trình duyệt web và truy cập tên miền cục bộ của bạn cho máy chủ Grafana, chẳng hạn như http://grafana.howtoforge.local/. Nếu cấu hình thành công, bạn sẽ được chuyển hướng đến trang đăng nhập Grafana.

Đăng nhập bằng tên người dùng và mật khẩu quản trị viên, sau đó nhấp vào Đăng nhập để xác nhận.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22526%22%3E%3C/svg%3E


Bây giờ bạn sẽ nhận được bảng điều khiển quản trị Grafana.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22434%22%3E%3C/svg%3E

Thêm xác thực vào Prometheus Máy chủ​

Trước khi thêm Prometheus vào Grafana, bạn sẽ thiết lập xác thực cơ bản cho Prometheus. Bạn sẽ tạo mật khẩu xác thực cơ bản bằng apache2-utils, sau đó bật basic_auth cho máy chủ Prometheus.

Trong ví dụ này, Prometheus và Node Exporter được cài đặt trên các máy chủ khác nhau với địa chỉ IP 192.168.5.15 và tên máy chủ prometheus.

Đăng nhập vào máy chủ Prometheus và cài đặt gói apache2-utils thông qua lệnh apt bên dưới.
Mã:
sudo apt install apache2-utils -y

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22644%22%20height=%22263%22%3E%3C/svg%3E


Sau đó, tạo mật khẩu mới cho xác thực cơ bản của Prometheus. Nhập mật khẩu của bạn và sao chép mật khẩu đã tạo vào ghi chú của bạn.
Mã:
htpasswd -nB promadmin

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22665%22%20height=%22161%22%3E%3C/svg%3E


Bây giờ, hãy tạo cấu hình Prometheus mới /etc/prometheus/web.yml bằng trình chỉnh sửa nano sau lệnh.
Mã:
sudo nano /etc/prometheus/web.yml
Thêm cấu hình sau để bảo mật bảng điều khiển quản trị Prometheus bằng mô-đun basic_auth.
Mã:
# basic_auth
basic_auth_users:
 promadmin: $2y$05$UlvHd4An.oQRt2UdUXzr9eZ6ShRLe3xYbMhw8ePfvGeLuu0khO4Bu
Lưu và đóng tệp khi hoàn tất.

Tiếp theo, mở cấu hình Prometheus mặc định /etc/prometheus/prometheus.yml bằng trình chỉnh sửa nano sau lệnh.
Mã:
sudo nano /etc/prometheus/prometheus.yml
Thêm cấu hình basic_auth bên dưới vào tác vụ Prometheus. Hãy chắc chắn thay đổi thông tin người dùng và mật khẩu bằng dữ liệu của bạn.
Mã:
scrape_configs:
 # The job name is added as a label `job=` to any timeseries scraped from this config.
 - job_name: "prometheus"

 # metrics_path defaults to '/metrics'
 # scheme defaults to 'http'.
 # Add settings for certificate and authentication
 scheme: http
 basic_auth:
 username: 'promadmin'
 password: 'password'
Lưu và đóng tệp khi bạn hoàn tất.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22669%22%20height=%22409%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh sau để chỉnh sửa dịch vụ prometheus tập tin.
Mã:
sudo systemctl edit --full prometheus
Thay đổi tùy chọn ExecStart mặc định bằng tùy chọn sau.
Mã:
ExecStart=/usr/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --web.config.file=/etc/prometheus/web.yml
Lưu và đóng tập tin khi hoàn tất.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22127%22%3E%3C/svg%3E


Bây giờ, hãy chạy lệnh systemctl sau để tải lại trình quản lý systemd và áp dụng các thay đổi. Sau đó, khởi động lại dịch vụ prometheus.
Mã:
sudo systemctl daemon-reload
sudo systemctl restart prometheus
Xác minh dịch vụ prometheus bằng lệnh bên dưới.
Mã:
sudo systemctl status prometheus
Trong phần ExecStart, lệnh đã thay đổi như sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22240%22%3E%3C/svg%3E


Cuối cùng, hãy mở trình duyệt web của bạn và truy cập địa chỉ IP Prometheus có cổng 9090 (tức là: http://192.168.10.15:9090/). Bạn sẽ được nhắc nhập Prometheus basic_auth, nhập tên người dùng và mật khẩu quản trị viên, sau đó nhấp vào Đăng nhập.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22263%22%3E%3C/svg%3E


Nếu cấu hình thành công, bạn sẽ thấy bảng điều khiển Prometheus như sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22291%22%3E%3C/svg%3E

Tích hợp Prometheus với Grafana Dashboard​

Sau khi cấu hình xác thực cơ bản trên Prometheus, bạn có thể thêm Prometheus làm nguồn dữ liệu vào bảng điều khiển Grafana. Có hai bước bạn phải hoàn tất: thêm Prometheus làm nguồn dữ liệu, sau đó nhập hoặc tạo bảng điều khiển Grafana để giám sát hệ thống của bạn.

Thêm nguồn dữ liệu Prometheus​

Quay lại Bảng điều khiển Grafana, nhấp vào menu Kết nối và chọn Nguồn dữ liệu.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22395%22%20height=%22154%22%3E%3C/svg%3E


Nhấp vào Thêm nguồn dữ liệu để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22202%22%3E%3C/svg%3E


Chọn cơ sở dữ liệu chuỗi thời gian Prometheus.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22193%22%3E%3C/svg%3E


Nhập tên của nguồn dữ liệu mới và máy chủ Prometheus để http://192.168.5.15:9090/. Trong phần Xác thực, chọn Xác thực cơ bản và nhập tên người dùng và mật khẩu cho Prometheus.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22684%22%3E%3C/svg%3E


Cuộn xuống và nhấp vào Lưu & kiểm tra để xác nhận. Đầu ra 'Đã truy vấn thành công API Prometheus.' xác nhận rằng Prometheus đã được thêm vào Grafana.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22328%22%3E%3C/svg%3E

Nhập giám sát bảng điều khiển​

Nhấp vào menu + ở góc trên bên phải và chọn Nhập bảng điều khiển.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22400%22%20height=%22175%22%3E%3C/svg%3E


Tìm Bảng điều khiển mong muốn của bạn tại https://grafana.com/grafana/dashboards/. Sau đó, sao chép và dán ID bảng điều khiển, rồi nhấp vào Tải để xác nhận. Trong trường hợp này, chúng tôi sẽ sử dụng ID bảng điều khiển 15172.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22723%22%20height=%22383%22%3E%3C/svg%3E


Nhập tên bảng điều khiển và chọn nguồn dữ liệu Prometheus. Sau đó nhấp vào Nhập để xác nhận.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22735%22%3E%3C/svg%3E


Dưới đây là ví dụ về Bảng điều khiển Grafana được cải tiến với Prometheus để giám sát hệ thống.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22436%22%3E%3C/svg%3E


Bạn có hiện đã cài đặt thành công Grafana trên máy chủ Debian 12 với Nginx làm proxy ngược, thêm Prometheus làm nguồn dữ liệu cho Grafana và nhập bảng điều khiển Grafana để giám sát hệ thống.
 
Back
Bên trên