Prometheus là gì?
Prometheus là dịch vụ mã nguồn mở hoàn toàn miễn phí cho phép theo dõi và cảnh báo về hệ thống. Ban đầu được SoundCloud xây dựng năm 2012 và đến năm 2016, nó đã trở thành một phần của Tổ chức điện toán đám mây (CNCF), được nhiều hệ thống tin tưởng áp dụng.
Prometheus có tính năng quan trọng đó là thu thập thông số, dữ liệu từ các mục tiêu được nhắm đến trong khoảng thời gian nhất định được cài sẵn. Ngoài ra, Prometheus còn cung cấp ngôn ngữ truy vấn mạnh mẽ đó là PromQL, rất hữu ích khi giao tiếp vứi các dịch vụ khác.
Tính năng của Prometheus là gì?
Dưới đây là một số tính năng quan trọng của Prometheus:
- Prometheus sử dụng mô hình dữ liệu đa chiều với các cặp giá trị là thời gian và thông số có thể thay đổi để lưu trữ dữ liệu theo dạng chuỗi thời gian.
- Prometheus sử dụng PromQL để truy vấn dữ liệu, cho phép bạn hiển thị và xử lý dữ liệu theo nhiều cách khác nhau.
- Prometheus có khả năng thu thập dữ liệu từ nhiều nguồn khác nhau
- Prometheus có tính năng cảnh báo với cơ chế cảnh báo tích hợp, giúp bạn theo dõi và xử lý nhanh chóng khi có sự cố
- Giao diện web hiển thị biểu đồ và đồ thị giúp bạn theo dõi hiệu suất hệ thống.
- Ghi dữ liệu để lưu trữ lâu dài hoặc chia sẻ dữ liệu giữa các cụm máy chủ.
- Prometheus có thể tích hợp với nhiều công cụ khác nhau để mở rộng việc giám sát và cảnh báo.
- Cho phép mở rộng linh hoạt, triển khai dễ dàng trong nhiều môi trường
- Có thể hoạt động dưới dạng máy chủ để thu thập dữ liệu/client để chuyển dữ liệu đến máy chủ khác
- Có thể được tích hợp với các dịch vụ đám mây khác để giám sát hệ thống/ứng dụng chạy trên môi trường Cloud
Những tính năng này của Prometheus giúp người quản trị hay nhà phát triển có thể theo dõi, đánh giá và duy trì hiệu suất hệ thống/ứng dụng hiệu quả nhất.
Ứng dụng Prometheus khi nào?
Prometheus được đánh giá là mã nguồn mở có độ tin cậy cao được sử dụng để giám sát bất kỳ phần nào trong ứng dụng. Bạn có thể sử dụng Prometheus để giám sát gần như toàn bộ ứng dụng của mình, từ giao diện người dùng, phụ trợ, máy chủ, phần cứng hay cả cơ sở hạ tầng.
Prometheus phù hợp để sử dụng trong hệ thống Microservices và có các dịch vụ Listening. Một hệ thống theo dõi chủ động sẽ giúp người quản trị phát hiện sớm những dấu hiệu cảnh báo xấu. Với Prometheus các thông tin luôn được cập nhật và khi có lỗi xảy ra, bạn vẫn có thể xem lại dữ liệu dễ dàng qua API của Prometheus.
Không nên sử dụng Prometheus khi nào?
Mặc dù Prometheus là công cụ giám sát mạnh mẽ, nhưng trong một số trường hợp, nó sẽ không phù hợp khi sử dụng, điển hình như:
Không nên dùng Prometheus khi hệ thống yêu cầu lưu trữ dữ liệu lớn và lâu dài
Do Prometheus được thiết kế nhằm giám sát thời gian thực cho nên nó không phải là giải pháp lưu trữ dữ liệu lâu dài. Bạn có thể tham khảo các lựa chọn tốt hơn Prometheus trong trường hợp này như InfluxDB, OpenTSDB,…
Không nên dùng Prometheus khi môi trường có nhu cầu cảnh báo phức tạp
Tuy Prometheus cung cấp cơ chế cảnh báo linh hoạt, nhưng khi yêu cầu cảnh báo đòi hỏi các tính năng phức tạp hơn thì bạn nên cân nhắc sử dụng giải pháp chuyên sâu hơn để đảm bảo hiệu quả.
Không nên dùng Prometheus khi Môi trường đòi hỏi tích hợp nhanh và dễ dàng:
Prometheus là một công cụ mã nguồn mạnh mẽ, nhưng việc triển khai và tích hợp nhanh chóng sẽ là thách thức lớn với các tổ chức không có kinh nghiệm trong việc triển khai giám sát tự quản lý.
Yêu cầu một hệ thống với giao diện người dùng mạnh mẽ:
Mặc dù Prometheus có giao diện người dùng web linh hoạt nhưng nếu bạn muốn tìm kiếm một giao diện mạnh mẽ và dễ sử dụng thì cần xem xét đến các giải pháp giám sát khác tương đương hơn hoặc cao cấp hơn về giao diện.
Cách Cài đặt Prometheus trên Ubuntu 22.04
Để cài đặt Prometheus trên Ubuntu 22.04, thực hiện theo các bước sau:
Bước 1: Tạo nhóm hệ thống Prometheus
Chạy lệnh sau để 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 thêm xong, bạn tạo người dùng hệ thống Prometheus và chỉ định nhóm chính đã tạo với lệnh sau:
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 và cấu hình
Prometheus cần một thư mục để lưu dữ liệu, bạn tạo thư mục trong /var/lib/prometheus với lệnh sau:
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 như
for i in rules rules.d files_sd; do mkdir -p /etc/prometheus/${i}; done
Lệnh này sẽ tạo lần lượt các thư mục sau trong đường dẫn /etc/prometheus
- /etc/prometheus/rules
- /etc/prometheus/rules.d
- /etc/prometheus/files_sd
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
wget https://github.com/prometheus/prometheus/releases/download/v3.1.0/prometheus-3.1.0.linux-amd64.tar.gz
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/ bằng lệnh sau:
mv prometheus promtool /usr/local/bin/
Kiểm tra phiên bản đã cài đặt:
prometheus --version
promtool --version
Di chuyển mẫu cấu hình Prometheus sang thư mục /etc.
mv prometheus.yml /etc/prometheus/prometheus.yml
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 Prometheus – /etc/prometheus/prometheus.yml.
vi /etc/prometheus/prometheus.yml
Tạo dịch vụ hệ thống Prometheus
Chạy lệnh sau để 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
Thay đổi quyền thư mục.
Thay đổi quyền sở hữu thư mục 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ó 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 cổng 9090 bằng cách truy cập IP/tên DNS của máy chủ Prometheus trong trình duyệt web.
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())
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$JKlzaA1WkPBfRngLeyXe2OT4HG/jtc.vr1n5ya2N0hTPF3Hfm90pq'
Thay thế $2b$12$JKlzaA1WkPBfRngLeyXe2OT4HG/jtc.vr1n5ya2N0hTPF3Hfm90pq 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
Đến đây, bạn đã thực hiện cài đặt thành công Prometheus và bảo mật thành công máy chủ Prometheus bằng xác thực cơ bản. Lúc này, tất cả người dùng 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.
Kết luận
Trên đây là những thông tin về Prometheus là gì, tính năng của Prometheus và ứng dụng của nó trong hệ thống. Bạn cần cân nhắc yêu cầu hệ thống của bạn để xem có nên sử dụng Prometheus hay không để đảm bảo tính hiệu quả.
Cảm ơn bạn đã theo dõi bài viết của chúng tôi!