Cách cài đặt Grafana và Prometheus trên Ubuntu 22.04

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á các 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.

Hướng dẫn này bao gồm cài đặt Grafana, Prometheus và node exporter trên máy chủ Ubuntu 22.04. Bạn sẽ xây dựng một ngăn xếp giám sát mạnh mẽ với Grafana là bảng điều khiển và công cụ trực quan hóa dữ liệu, Prometheus là nguồn dữ liệu nơi lưu trữ mọi dữ liệu giám sát của bạn và node_exporter là ứng dụng thu thập thông tin và số liệu về hệ thống của bạn và gửi tất cả các số liệu đó tới Prometheus.

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

Có một số điều kiện tiên quyết mà bạn phải có trước khi bắt đầu:
  • Máy chủ Ubuntu 22.04 - để triển khai với một máy chủ duy nhất. Tuy nhiên, đối với nhiều máy chủ, bạn sẽ cần các máy chủ có các thông tin chi tiết sau:
    server1 - được sử dụng làm máy chủ Grafana.
  • server2 - được sử dụng làm máy chủ Prometheus.
  • erver3 - máy chủ mục tiêu giám sát nơi node_exporter sẽ được cài đặt.
[*] Bạn cũng sẽ cần người dùng không phải root có quyền quản trị viên sudo/root.

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 mình.

Chạy lệnh apt bên dưới để cài đặt một số phụ thuộc của gói.
Mã:
sudo apt install gnupg2 apt-transport-https software-properties-common wget
Nhập y khi được nhắc xác nhận và nhấn ENTER để tiếp tục.


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


Tiếp theo, chạy lệnh bên dưới để 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.
Mã:
wget -q -O - https://packages.grafana.com/gpg.key > grafana.key
cat grafana.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/grafana.gpg > /dev/null
Bây giờ hãy chạy lệnh bên dưới để thêm kho lưu trữ Grafana. Trong ví dụ này, bạn sẽ thêm Grafana OSS (Phiên bản nguồn mở) với một nhánh ổn định.
Mã:
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 của bạn thông qua lệnh apt sau.
Mã:
sudo apt update
Sau đó, bạn sẽ nhận được thông báo rằng kho lưu trữ Grafana đã được thêm vào hệ thống của bạn.


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

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

Với kho lưu trữ Grafana hiện đã được thêm vào, giờ đây 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, hãy chạy lệnh apt bên dưới để cài đặt gói Grafana vào hệ thống của bạn.
Mã:
sudo apt install grafana
Nhập y khi được nhắc và nhấn ENTER để tiếp tục.


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


Sau khi máy chủ Grafana được cài đặt, hãy chạy lệnh bên dưới để tải lại trình quản lý systemd và áp dụng các dịch vụ systemd mới.
Mã:
sudo systemctl daemon-reload
Tiếp theo, hãy chạy tiện ích lệnh systemctl bên dưới để khởi động 'grafana-server' và bật nó.
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=%22711%22%20height=%22214%22%3E%3C/svg%3E


Graphana-server hiện sẽ chạy và được bật. Xác minh grafana-server thông qua lệnh systemctl bên dưới.
Mã:
sudo systemctl status grafana-server
Bạn sẽ nhận được thông báo rằng grafana-server đang chạy và được bật, nghĩa là dịch vụ sẽ tự động chạy khi khởi động.


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


Khi 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 trình chỉnh sửa nano bên dưới lệnh.
Mã:
sudo nano /etc/grafana/grafana.ini
Trong phần 'máy chủ', hãy thay đổi cấu hình mặc định bằng các dòng sau. Ngoài ra, hãy đảm bảo thay đổi tùy chọn 'tên miền' ở đây bằng tên miền của bạn. Bạn có thể sử dụng miền cục bộ có thể được 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 miền cục bộ 'gpe.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 = gpe.howtoforge.local
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, hãy 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 dịch vụ mới changes.
Mã:
sudo systemctl restart grafana-server
Lúc này, bạn đã hoàn tất cài đặt và cấu hình cơ bản cho máy chủ Grafana. Máy chủ Grafana hiện đang chạy trên máy chủ cục bộ với cổng TCP mặc định là 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​

Sau khi máy chủ Grafana được cài đặt và cấu hình, bây giờ bạn sẽ cài đặt và 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 một 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 tên miền cục bộ được phân giải thành địa chỉ IP của máy chủ Grafana và đảm bảo rằng bạn đã tạo chứng chỉ SSL cho tên 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 quá trình 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.
Mã:
sudo apt install nginx
Nhập y khi được nhắc xác nhận và nhấn ENTER để tiếp tục.


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


Sau khi Nginx được cài đặt, hãy tạo cấu hình khối máy chủ mới '/etc/nginx/sites-available/grafana.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/nginx/sites-available/grafana.conf
Thêm các dòng sau vào tệp và đảm bảo thay đổi tên miền 'gpe.howtoforge.local' với tên miền máy chủ Grafana của bạn. Ngoài ra, hãy đảm bảo thay đổi đường dẫn của chứng chỉ SSL bằng các tệp chứng chỉ của bạn.

Cấu hình này sẽ áp dụng Nginx làm proxy ngược cho máy chủ Grafana đang chạy trên máy chủ cục bộ với cổng 3000. Ngoài ra, bạn sẽ bảo mật máy chủ Grafana thông qua kết nối HTTPS.
Mã:
# this is required to proxy Grafana Live WebSocket connections.
map $http_upgrade $connection_upgrade {
 default upgrade;
 '' close;
}

server {
 listen 80;
 server_name gpe.howtoforge.local;
 rewrite ^ https://$server_name$request_uri? permanent;
}

server {
 listen 443 ssl http2;
 server_name gpe.howtoforge.local;

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

 ssl_certificate /etc/letsencrypt/live/gpe.howtoforge.local/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/gpe.howtoforge.local/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.

Tiếp theo, chạy lệnh bên dưới để kích hoạt tệp cấu hình khối máy chủ Nginx ''. Sau đó, hãy xác minh cấu hình Nginx để đảm bảo rằng bạn đã cấu hình đúng và chính xác.
Mã:
sudo ln -s /etc/nginx/sites-available/grafana.conf /etc/nginx/sites-enabled/
sudo nginx -t
Bạn sẽ nhận được kết quả như 'kiểm tra thành công - cú pháp ok' khi bạn đã cấu hình đúng.

Hình ảnh

Bây giờ hãy chạy lệnh bên dưới để khởi động lại dịch vụ Nginx và áp dụng các thay đổi cho dịch vụ Nginx.
Mã:
sudo systemctl restart nginx

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


Cuối cùng, hãy chạy tiện ích lệnh systemctl bên dưới để xác minh dịch vụ Nginx và đảm bảo rằng dịch vụ đang chạy và đã bật.
Mã:
sudo systemctl is-enabled nginx
sudo systemctl status nginx
Bạn sẽ nhận được kết quả tương tự như sau - Dịch vụ Nginx đã được bật và sẽ tự động chạy khi khởi động. Và trạng thái của dịch vụ Nginx đang chạy.


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


Khi 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ộ.

Mở trình duyệt web và truy cập tên miền để cài đặt máy chủ Grafana (ví dụ: https://gpe.howtoforge.local/). 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 là 'admin', 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=%22636%22%3E%3C/svg%3E


Sau đó, bạn sẽ được yêu cầu thay đổi mật khẩu mặc định cho người dùng quản trị Grafana. Nhập mật khẩu mới và lặp lại, sau đó nhấp vào 'Gửi' để áp dụng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22724%22%20height=%22631%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=%22480%22%3E%3C/svg%3E


Bây giờ bạn đã cài đặt và cấu hình Nginx làm proxy ngược cho máy chủ Grafana. Ngoài ra, bạn đã thay đổi người dùng quản trị mặc định và mật khẩu cho máy chủ Grafana và truy cập bảng điều khiển quản trị Grafana.

Trong các bước tiếp theo, bạn sẽ bắt đầu cài đặt Prometheus và node_exporter.

Cài đặt Prometheus​

Trong bước này, bạn sẽ cài đặt Prometheus theo cách thủ công bằng cách sử dụng gói nhị phân có thể tải xuống từ GitHub.

Dưới đây là một số bước bạn sẽ thực hiện để cài đặt Prometheus
  • Thiết lập người dùng Prometheus
  • Tải xuống gói nhị phân Prometheus
  • Cấu hình Prometheus
  • Chạy Prometheus dưới dạng dịch vụ systemd
Bây giờ chúng ta hãy bắt đầu cài đặt Prometheus.

Thiết lập người dùng Prometheus​

Chạy lệnh bên dưới để tạo người dùng và nhóm mới 'prometheus'.
Mã:
sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus

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

Tải xuống và cài đặt Prometheus​

Mã:
Now create new data directories that will be used to store Prometheus data via the below command.
Mã:
sudo mkdir /var/lib/prometheus
for i in rules rules.d files_sd; do sudo mkdir -p /etc/prometheus/${i}; done
Tiếp theo, tải xuống gói nhị phân cho Prometheus thông qua lệnh curl bên dưới.
Mã:
curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest|grep browser_download_url|grep linux-amd64|cut -d '"' -f 4|wget -qi -
Sau khi tải xuống gói nhị phân prometheus, hãy chạy lệnh bên dưới để giải nén Prometheus và di chuyển thư mục làm việc của bạn đến thư mục Prometheus mới.
Mã:
tar xvf prometheus*.tar.gz
cd prometheus*/

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


Bây giờ hãy chạy lệnh bên dưới để di chuyển tệp nhị phân 'promtheus' và 'promtool' đến thư mục '/usr/local/bin'.
Mã:
sudo mv prometheus promtool /usr/local/bin/
Di chuyển một số thư mục và tệp cấu hình Prometheus đến Thư mục '/etc/prometheus'.
Mã:
sudo mv consoles console_libraries prometheus.yml /etc/prometheus/
Tiếp theo, thay đổi quyền sở hữu các tệp cấu hình và thư mục Prometheus thành người dùng và nhóm 'prometheus'. Chạy lệnh chmod và chown bên dưới.
Mã:
for i in rules rules.d files_sd; do sudo chown -R prometheus:prometheus /etc/prometheus/${i}; done
for i in rules rules.d files_sd; do sudo chmod -R 775 /etc/prometheus/${i}; done
sudo chown -R prometheus:prometheus /var/lib/prometheus/

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

Cấu hình Prometheus​

Chạy lệnh apt bên dưới để cài đặt gói 'apache2-utils'. Lệnh này sẽ được sử dụng để tạo mật khẩu bcrypt nhằm bảo mật cài đặt Prometheus thông qua xác thực.
Mã:
sudo apt install apache2-utils -y

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


Bây giờ hãy chạy lệnh 'htpasswd' bên dưới để tạo một bcrypt mới mật khẩu.
Mã:
htpasswd -nB promadmin
Nhập mật khẩu mới và lặp lại mật khẩu. Bạn sẽ nhận được kết quả tương tự như thế này - Sao chép kết quả vào ghi chú tạm thời của bạn.
Mã:
promadmin:$2y$05$PAHx4xWBNyZjPn9TGlYp.uH0esB1hXKQZfdQzn3PtcO49cUpOoxWG

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


Tiếp theo, tạo tệp cấu hình YML mới '/etc/prometheus/web.yml' bằng trình chỉnh sửa nano bên dưới lệnh.
Mã:
sudo nano /etc/prometheus/web.yml
Thêm các dòng sau vào tệp và đảm bảo thay đổi đường dẫn của chứng chỉ TLS/SSL và thay đổi tên người dùng và mật khẩu đã băm. Với cấu hình này, bạn sẽ kích hoạt kết nối HTTPS an toàn trên Prometheus và kích hoạt xác thực cơ bản thông qua tên người dùng và mật khẩu.
Mã:
# tls certificates
tls_server_config:
 cert_file: /etc/letsencrypt/live/gpe.howtoforge.local/fullchain.pem
 key_file: /etc/letsencrypt/live/gpe.howtoforge.local/privkey.pem

# basic_auth
basic_auth_users:
 promadmin: $2y$05$PAHx4xWBNyZjPn9TGlYp.uH0esB1hXKQZfdQzn3PtcO49cUpOoxWG
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.

Bây giờ hãy chạy lệnh bên dưới để thay đổi quyền sở hữu tệp mới '/etc/prometheus/web.yml' thành người dùng và nhóm 'prometheus'.
Mã:
sudo chown prometheus: /etc/prometheus/web.yml
Tiếp theo, mở cấu hình chính cho Prometheus '/etc/prometheus/prometheus.yml' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/prometheus/prometheus.yml
Trong phần 'scrape_configs', hãy thay đổi 'job_name: "prometheus"' mặc định bằng các dòng sau. Ngoài ra, hãy đảm bảo thay đổi cấu hình TLS và đường dẫn của chứng chỉ SSL/TLS, cũng như người dùng và mật khẩu quản trị viên cho máy chủ Prometheus của bạn.

Hệ thống hoặc máy chủ đích là 'localhost:9090', tức là máy chủ Prometheus.
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: https
 tls_config:
 cert_file: /etc/letsencrypt/live/gpe.howtoforge.local/fullchain.pem
 key_file: /etc/letsencrypt/live/gpe.howtoforge.local/privkey.pem
 # if using self-signed certificate, set [true]
 insecure_skip_verify: true
 basic_auth:
 username: 'admin'
 password: 'uniquepass'

 static_configs:
 # if using a valid certificate, set the same hostname in the certificate
 - targets: ["localhost:9090"]
Lưu tệp và thoát khỏi trình chỉnh sửa khi bạn hoàn tất.

Chạy Prometheus dưới dạng Dịch vụ Systemd​

Tiếp theo, hãy chạy lệnh bên dưới để tạo tệp dịch vụ systemd mới '/etc/systemd/system/prometheus.service'.

Với này, bạn sẽ chạy Prometheus như một dịch vụ systemd cho phép bạn quản lý Prometheus thông qua tiện ích lệnh systemctl. Ngoài ra, bạn sẽ kích hoạt cấu hình cụ thể cho tệp web Prometheus '/etc/prometheus/web.yml', điều này sẽ kích hoạt kết nối bảo mật HTTPS và xác thực cơ bản.

Cuối cùng, dịch vụ Prometheus sẽ được chạy như một người dùng và nhóm 'prometheus' với máy chủ '0.0.0.0' và cổng '9090'.
Mã:
sudo tee /etc/systemd/system/prometheus.service
 
Back
Bên trên