[Monitoring 1] Prometheus-Grafana-Exporter – Cài đặt Prometheus trên Ubuntu 22.04

Tác giả: 24/03/2024

Hôm nay Nhân Hòa sẽ cùng các bạn tìm hiểu và cài đặt Prometheus trên Ubuntu 22.04

Prometheus là một dự án mã nguồn mở được phát triển bởi Cloud Native Computing Foundation (CNCF), nhằm giám sát và thu thập thông tin từ hệ thống phân tán. Nó là một hệ thống giám sát và cảnh báo mạnh mẽ, được thiết kế để giám sát các ứng dụng và hạ tầng phân tán.

Prometheus có khả năng thu thập dữ liệu từ nhiều nguồn khác nhau như các máy chủ, dịch vụ, ứng dụng, và hệ thống. Nó sử dụng mô hình dữ liệu kiểu dữ liệu thời gian (time-series data model) để lưu trữ và truy vấn thông tin giám sát. Dữ liệu được thu thập bằng cách gửi các yêu cầu HTTP GET đến các endpoint của các ứng dụng, dịch vụ hoặc hệ thống muốn giám sát.

Một trong những đặc điểm nổi bật của Prometheus là khả năng cung cấp truy vấn linh hoạt và mạnh mẽ thông qua PromQL (Prometheus Query Language). PromQL cho phép người dùng truy vấn và phân tích dữ liệu giám sát, từ việc lọc, ánh xạ, tính toán và trực quan hóa dữ liệu.

Prometheus cũng cung cấp khả năng cảnh báo (alerting) để thông báo về các sự cố hoặc tình trạng không mong muốn trong hệ thống. Người dùng có thể xác định các quy tắc cảnh báo dựa trên các tiêu chí và ngưỡng đã định trước, và Prometheus sẽ gửi thông báo khi các điều kiện cảnh báo được kích hoạt.

Hơn nữa, Prometheus cũng hỗ trợ tính năng ghi log (logging), tích hợp với các công cụ và dự án khác trong môi trường Cloud Native như Kubernetes, Docker, Grafana, và nhiều hệ thống khác.Prometheus là một hệ thống giám sát và cảnh báo mã nguồn mở mạnh mẽ, linh hoạt và có khả năng mở rộng, đáp ứng nhu cầu giám sát hệ thống phân tán hiện đại. Nó được sử dụng rộng rãi trong cộng đồng công nghệ để giám sát và quản lý hiệu suất của các ứng dụng và hạ tầng.

Bước 1: Tạo nhóm hệ thống Prometheus

Hãy bắt đầu bằng cách tạo nhóm và người dùng hệ thống Prometheus.

groupadd --system prometheus

Nhóm có ID < 1000 là nhóm hệ thống. Sau khi nhóm hệ thống được thêm, hãy tạo người dùng hệ thống Prometheus và chỉ định nhóm chính đã tạo.

adduser --system --no-create-home --shell /sbin/nologin --group prometheus

Trên centos bạn tạo như sau:

useradd -s /sbin/nologin --system -g prometheus prometheus

Bước 2: Tạo thư mục dữ liệu & cấu hình

Prometheus cần một thư mục để lưu trữ dữ liệu của nó. Chúng tôi sẽ tạo cái này trong  /var/lib/prometheus .

mkdir /var/lib/prometheus

Thư mục tệp cấu hình chính của Prometheus là  /etc/prometheus/ . Nó sẽ có một số thư mục con:

for i in rules rules.d files_sd; do  mkdir -p /etc/prometheus/${i}; done

Bước 3: Tải xuống tệp Prometheus

https://github.com/prometheus/prometheus/releases

apt update && apt upgrade -y

apt -y install wget curl vim

mkdir -p /tmp/prometheus && cd /tmp/prometheus

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

tar xvf prometheus*.tar.gz

cd prometheus*/

Di chuyển các tệp  thực thi vào thư mục /usr/local/bin/

mv prometheus promtool /usr/local/bin/

Kiểm tra phiên bản đã cài đặt:

root@ubuntu:/tmp/prometheus/prometheus-2.50.1.linux-amd64# prometheus --version
prometheus, version 2.50.1 (branch: HEAD, revision: 8c9b0285360a0b6288d76214a75ce3025bce4050)
build user: root@6213bb3ee580
build date: 20240226-11:36:26
go version: go1.21.7
platform: linux/amd64
tags: netgo,builtinassets,stringlabels
root@ubuntu:/tmp/prometheus/prometheus-2.50.1.linux-amd64# promtool --version
promtool, version 2.50.1 (branch: HEAD, revision: 8c9b0285360a0b6288d76214a75ce3025bce4050)
build user: root@6213bb3ee580
build date: 20240226-11:36:26
go version: go1.21.7
platform: linux/amd64
tags: netgo,builtinassets,stringlabels

Di chuyển mẫu cấu hình Prometheus sang thư mục /etc.

mv prometheus.yml /etc/prometheus/prometheus.yml

Đồng thời di chuyển console và console_libraries sang thư mục / etc/prometheus :

mv consoles/ console_libraries/ /etc/prometheus/

cd $HOME

Bước 4: Cấu hình Prometheus trên Ubuntu

Tạo hoặc chỉnh sửa tệp cấu hình cho Prometheus – /etc/prometheus/prometheus.yml .

vi /etc/prometheus/prometheus.yml

Các cấu hình mẫu sẽ trông giống như bên dưới:

Tạo dịch vụ hệ thống Prometheus

Để có thể quản lý dịch vụ Prometheus bằng systemd.

vi /etc/systemd/system/prometheus.service

Thêm vào

[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
ExecReload=/bin/kill -HUP \$MAINPID
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 \
--web.listen-address=0.0.0.0:9090 \
--web.external-url=

SyslogIdentifier=prometheus
Restart=always

[Install]
WantedBy=multi-user.target

Lưu lại file trên.

Thay đổi quyền thư mục.

Thay đổi quyền sở hữu các thư mục này cho người dùng và nhóm Prometheus.

for i in rules rules.d files_sd; do chown -R prometheus:prometheus /etc/prometheus/${i}; done

for i in rules rules.d files_sd; do chmod -R 775 /etc/prometheus/${i}; done

chown -R prometheus:prometheus /var/lib/prometheus/

Tải lại daemon systemd và khởi động dịch vụ:

systemctl daemon-reload

systemctl start prometheus

systemctl enable prometheus

systemctl status prometheus

Nếu máy chủ của bạn có dịch vụ tường lửa đang chạy, bạn cần mở cổng 9090 .

Xác nhận rằng bạn có thể kết nối với cổng 9090 bằng cách truy cập địa chỉ IP/tên DNS của máy chủ Prometheus trong trình duyệt web của bạn.

Xác thực login Prometheus Server:

Cài đặt công cụ gen pass và tạo 1 tệp python.

apt install python3-bcrypt -y
vi gen-pass.py

Thêm vào

import getpass

import bcrypt

password = getpass.getpass("password: ")

hashed_password = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())

print(hashed_password.decode())

Sau đó

python3 gen-pass.py

Tạo tệp Web YAML

vi /etc/prometheus/web.yml

Thêm vào

basic_auth_users:

       admin: '$2b$12$gQtE/UFOWmyjZABabQBypeWg4VstaRzXqpFwOSC1WsfIQgRHQSxQ.'

Thay thế $2b$12$gQtE/UFOWmyjZABabQBypeWg4VstaRzXqpFwOSC1WsfIQgRHQSxQ. bằng giá trị mật khẩu được mã hóa của bạn.

Bạn có thể xác thực tệp đó bằng các lệnh bên dưới.

promtool check web-config /etc/prometheus/web.yml

Khởi chạy máy chủ Prometheus

Thêm 1 đoạn xác minh vào

vi /etc/systemd/system/prometheus.service

Thêm vào

--web.config.file=/etc/prometheus/web.yml \

Khởi động lại dịch vụ

systemctl daemon-reload

systemctl restart prometheus

systemctl enable prometheus

 

Vậy là chúng ta đã bảo mật thành công Máy chủ Prometheus bằng xác thực cơ bản. Bây giờ tất cả người dùng đang truy cập phiên bản Prometheus được yêu cầu cung cấp tên người dùng và mật khẩu.

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