Prometheus hệ thống giám sát và cảnh báo mạnh mẽ, được phát triển bởi SoundCloud

Prometheus là một hệ thống giám sát và cảnh báo mạnh mẽ, được phát triển bởi SoundCloud và hiện thuộc dự án mã nguồn mở thuộc CNCF (Cloud Native Computing Foundation). Nó chuyên dụng cho việc thu thập, lưu trữ, xử lý và hiển thị dữ liệu thời gian thực (time-series data). Dưới đây là các chức năng chính của Prometheus:

  1. Thu thập dữ liệu metrics: Prometheus có khả năng thu thập các dữ liệu về hiệu suất hệ thống dưới dạng metrics từ nhiều nguồn khác nhau thông qua giao thức HTTP. Các dịch vụ có thể tích hợp với Prometheus bằng cách xuất dữ liệu theo định dạng mà Prometheus hỗ trợ.
  2. Cơ sở dữ liệu Time-Series: Tất cả dữ liệu metrics mà Prometheus thu thập sẽ được lưu trữ trong một cơ sở dữ liệu time-series, cho phép truy xuất và phân tích theo dòng thời gian. Điều này rất hữu ích để giám sát xu hướng và dự đoán hiệu suất của hệ thống.
  3. Ngôn ngữ truy vấn PromQL: Prometheus đi kèm với một ngôn ngữ truy vấn mạnh mẽ gọi là PromQL, cho phép người dùng lọc và xử lý dữ liệu metrics một cách linh hoạt. PromQL hỗ trợ các phép tính phức tạp như sum, average, rate, và các phép tính liên quan đến thời gian.
  4. Cảnh báo (Alerting): Prometheus hỗ trợ hệ thống cảnh báo tự động. Khi các điều kiện xác định trước (như vượt ngưỡng CPU, bộ nhớ quá tải) được kích hoạt, Prometheus có thể gửi cảnh báo tới người dùng hoặc tích hợp với các hệ thống cảnh báo như Alertmanager để xử lý thông báo và gửi đến các kênh khác nhau như email, Slack, hoặc PagerDuty.
  5. Hiển thị và tích hợp với Grafana: Prometheus có tích hợp với các công cụ hiển thị như Grafana, giúp người dùng dễ dàng tạo các biểu đồ trực quan hóa dữ liệu metrics. Điều này giúp dễ dàng theo dõi hiệu suất hệ thống và nhanh chóng phát hiện ra các vấn đề.
  6. Tự động phát hiện dịch vụ (Service Discovery): Prometheus hỗ trợ nhiều cơ chế tự động phát hiện dịch vụ, cho phép nó tự động lấy metrics từ các dịch vụ mới mà không cần phải cấu hình thủ công. Các hệ thống như Kubernetes, Consul, và nhiều nền tảng cloud khác đều được hỗ trợ.
  7. Pushgateway: Ngoài việc pull metrics từ các dịch vụ, Prometheus cũng hỗ trợ Pushgateway để nhận dữ liệu từ các ứng dụng ephemeral hoặc batch jobs, những trường hợp mà dịch vụ không chạy liên tục để Prometheus có thể truy vấn.

Prometheus rất phổ biến trong các hệ thống cloud-native và được sử dụng rộng rãi cho việc giám sát, tối ưu hóa hiệu suất ứng dụng, và xử lý sự cố.

Để triển khai Prometheus trên Ubuntu, bạn có thể làm theo các bước sau:

1. Cài đặt Prometheus

Bước 1: Cập nhật hệ thống

Trước khi cài đặt, hãy đảm bảo rằng hệ thống của bạn đã được cập nhật bằng lệnh:

sudo apt update && sudo apt upgrade -y

Bước 2: Tải và cài đặt Prometheus

  1. Tải Prometheus từ trang phát hành chính thức. Kiểm tra phiên bản mới nhất tại trang phát hành Prometheus:
wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
  1. Giải nén tệp vừa tải:
tar -xvf prometheus-2.47.0.linux-amd64.tar.gz
  1. Di chuyển các tệp thực thi Prometheus và promtool vào /usr/local/bin:
cd prometheus-2.47.0.linux-amd64
sudo mv prometheus /usr/local/bin/
sudo mv promtool /usr/local/bin/
  1. Tạo các thư mục cần thiết cho Prometheus:
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
  1. Di chuyển tệp cấu hình Prometheus và các tệp khác đến /etc/prometheus:
sudo mv consoles/ console_libraries/ prometheus.yml /etc/prometheus/

2. Cấu hình Prometheus

Tệp cấu hình chính của Prometheus là prometheus.yml, nằm trong thư mục /etc/prometheus. Mở tệp này để chỉnh sửa:

sudo nano /etc/prometheus/prometheus.yml

Trong cấu hình mặc định, Prometheus sẽ thu thập dữ liệu từ máy chủ cục bộ (localhost:9090). Bạn có thể thêm các target khác tùy theo nhu cầu.

Ví dụ, để thu thập dữ liệu từ một ứng dụng tại localhost:9100, bạn có thể thêm nó vào dưới scrape_configs:

scrape_configs:
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

3. Tạo file dịch vụ systemd

Để quản lý Prometheus như một dịch vụ hệ thống, hãy tạo một tệp dịch vụ systemd:

sudo nano /etc/systemd/system/prometheus.service

Thêm nội dung sau vào tệp:

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
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

[Install]
WantedBy=multi-user.target

4. Tạo user và phân quyền

  1. Tạo một user mới cho Prometheus:
sudo useradd --no-create-home --shell /bin/false prometheus
  1. Đặt quyền sở hữu các thư mục cho user prometheus:
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus

5. Khởi động Prometheus

  1. Reload lại daemon để nhận tệp dịch vụ mới:
sudo systemctl daemon-reload
  1. Bật dịch vụ Prometheus để khởi động cùng hệ thống:
sudo systemctl enable prometheus
  1. Khởi động dịch vụ:
sudo systemctl start prometheus
  1. Kiểm tra trạng thái dịch vụ:
sudo systemctl status prometheus

6. Truy cập giao diện web của Prometheus

Mở trình duyệt và truy cập vào địa chỉ:

http://<Địa chỉ IP của máy chủ>:9090

Giao diện quản trị của Prometheus sẽ hiện ra, và bạn có thể bắt đầu giám sát dữ liệu metrics.

7. (Tuỳ chọn) Cài đặt Node Exporter

Để thu thập thêm các metrics về hệ thống như CPU, RAM, và disk, bạn có thể cài đặt Node Exporter.

  1. Tải Node Exporter từ trang phát hành chính thức:
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
  1. Giải nén và di chuyển tệp thực thi:
tar xvfz node_exporter-1.6.1.linux-amd64.tar.gz
sudo mv node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/
  1. Tạo tệp dịch vụ cho Node Exporter:
sudo nano /etc/systemd/system/node_exporter.service

Thêm nội dung sau:

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=nodeusr
Group=nodeusr
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
  1. Tạo user cho Node Exporter:
sudo useradd --no-create-home --shell /bin/false nodeusr
  1. Khởi động Node Exporter:
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter

Bây giờ, Prometheus có thể thu thập dữ liệu từ Node Exporter tại localhost:9100.

Kết luận

Với các bước trên, bạn đã triển khai thành công Prometheus trên Ubuntu và có thể bắt đầu thu thập và giám sát dữ liệu metrics của hệ thống.