[Monitoring 1] Prometheus-Grafana-Exporter – Cài đặt Prometheus trên Ubuntu 22.04
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