Prometheus [CHAP-02] Hướng dẫn triển khai và cấu hình Prometheus

Khắc Huy

Internship/Fresher
Mục lục
I. Mở đầu
II. Cài đặt và cấu hình Prometheus
0. Prerequisites
1. Prometheus server
2. Exporter
3. Kết nối Prometheus server + Exporter
III. Tổng kết

I.Mở đầu


Trong phần trước, mình đã giới thiệu về công cụ giám sát Prometheus kiến trúc và luồng hoạt động. Trong phần này, mình sẽ tiếp tục với cách triển khai Prometheus trên system để quản lý hệ thống.
Chuẩn bị bao gồm:
- 2 máy ảo làm Prometheus server và Exporter, chạy OS Ubuntu server 22.04 với cấu hình như sau:
1723603305499.png

- Đặc biệt 2 máy này phải ở cùng một lớp mạng thì mới có thể kết nối với nhau.
- Link dùng để để check phiên bản mới nhất tìm phiên bản Prometheus phù hợp với máy server của mình.

II. Cài đặt và cấu hình Prometheus


0. Prerequisites


- Kiểm tra phiên bản của server hiện tại(Option).
+ Sử dụng câu lệnh sau để xem hệ điều hành​
Bash:
lsb_release -a
+ Sử dụng câu lệnh sau để xem kiến trúc​
Bash:
dpkg --print-architecture
1723604673666.png

- Mình sẽ sử dụng server tên learn làm Prometheus server và tên exporter làm Exporter

1. Prometheus server


- Sử dụng quyền root để bắt đầu cấu hình.
Bash:
sudo -i
- Tạo user và group cho prometheus.
Bash:
useradd -M -r -s /bin/false prometheus
- Tạo thư mục /etc/prometheus dùng để lưu cấu hình và các files khác, tạo thư mục /var/lib/prometheus để lưu prometheus data
Bash:
mkdir /etc/prometheus /var/lib/prometheus
1723649904839.png

Do mình đã tạo trước đó nên hiện là đã tồn tại
1723649838516.png

1723649863266.png

- Dùng đường Link để lựa chọn được phiên bản Prometheus phù hợp với phiên bản và kiến trúc của hệ thống chọn copy đường link hoặc có thể điền vào theo đường dẫn này.
Bash:
wget https://github.com/prometheus/prometheus/releases/download/<Version>/prometheus-<version>.<Kiến trúc>.tar.gz
1723629050835.png

1723626791986.png

- Giải nén thư mục vừa tải
Bash:
tar xzf <file zip vừa tải>
- Copy 2 file binary là prometheus, promtool đến /usr/local/bin
Bash:
cp prometheus-<version>.linux-amd64/{prometheus,promtool} /usr/local/bin
- Gán quyền user và group đã tạo trước đó cho 2 file này
Bash:
chown prometheus:prometheus /usr/local/bin/{prometheus,promtool}
- Copy 2 thư mục là consoles, consoles_libraries đến /etc/prometheus
Bash:
cp -r prometheus-<version>.linux-amd64/{consoles,console_libraries} /etc/prometheus
- Copy file prometheus.yaml đến /etc/prometheus
Bash:
cp prometheus-<version>.linux-amd64/prometheus.yml /etc/prometheus/
- Set ownership cho thư mục /etc/prometheus và /var/lib/prometheus
Bash:
chown -R prometheus:prometheus /etc/prometheus/
chown -R prometheus:prometheus /var/lib/prometheus
- Sau khi làm xong các bước test bằng dòng lệnh bên dưới, nếu đã cài đặt thành công thì sẽ xuất hiện "Server is ready to receive web requests.”
Bash:
prometheus --config.file=/etc/prometheus/prometheus.yml
1723628181018.png

1723628305880.png

- Tiếp tục cấu hình systemd cho prometheus
Bash:
nano /etc/systemd/system/prometheus.service
- Patse đoạn script sau vào thư mục
Bash:
[Unit]
Description=Prometheus Time Series Collection and Processing Server
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
start và enable prometheus service
Bash:
systemctl daemon-reload
systemctl start prometheus
systemctl enable prometheus
1723628796735.png

- Cấu hình Prometheus server
+ File cấu hình prometheus.yml được dùng để cấu hình prometheus được lưu ở /etc/prometheus/.​
+ Đọc docs để biết thêm chi tiết Configuration | PrometheusConfiguration | Prometheus
+ Sau khi cấu hình trong file prometheus.yml.​
+ Cần restart lại prometheus service.​
Bash:
systemctl restart prometheus.service
- Sử dụng lệnh sau để check kết quả.
Bash:
curl localhost:9090/api/v1/status/config
1723629530494.png

- Kiểm tra service đã active hay chưa
Code:
systemctl status prometheus.service
1723628861853.png

2. Exporter


- Exporter là bất kì ứng dụng nào có thể cung cấp dữ liệu mà prometheus server có thể thu thập, ở đây mình sử dụng để quản lý máy ảo.
- Sử dụng quyền root để bắt đầu cài đặt và cấu hình.
Bash:
sudo -i
- Tạo group và user cho exporter.
Bash:
useradd -M -r -s /bin/false node_exporter
- Tìm phiên bản phù hợp với máy hiện tại qua link sau
1723630671356.png

- Tải và giải nén file binary sau khi đã chọn phiên bản phù hợp.
Bash:
wget <https://github.com/prometheus/node_exporter/releases/download/<version>/node_exporter-<version>.<kiến trúc>.tar.gz
1723630959593.png

Bash:
tar xzf <tên file vừa tải về>
1723650129483.png

- Vào thư mục trên sau khi giải nén ta thấy file node_exporter và copy file này vào /usr/local/bin và gán user và group vừa mới tạo ở trên.
Bash:
cp node_exporter /usr/local/bin
Bash:
chown node_exporter:node_exporter /usr/local/bin/node_exporter
1723650392589.png

1723650571192.png

- Tạo systemd cho Node exporter
Bash:
nano /etc/systemd/system/node_exporter.service
1723650794929.png

- Start, enable node exporter service và kiểm tra xem node port đã hoạt động hay chưa.
Bash:
systemctl daemon-reload
Bash:
systemctl start node_exporter
Bash:
systemctl enable node_exporter
Bash:
curl localhost:9100/metrics
1723651038654.png

3. Kết nối Prometheus server + Expoter


- scrape_config thành phần trong prometheus config file sẽ cung cấp danh sách các đối tượng mà prometheus sẽ xử lý
- Ở bước này, để kết nối Prometheus server và Exporter cần 2 thông tin chính đó là IP và cổng(Mặc định 9100) của server đang làm Exporter.
- Để lấy được ip của Exporter có nhiều cách nhưng có thể tham khảo câu lệnh bên dưới.
Bash:
ip addr |grep inet
1723651565119.png

Đoạn màu đỏ là ip của các bạn. Trong trường hợp có nhiều ip do có nhiều loại kết nối thì cứ kiểm tra đâu là đường kết nối với mạng của Prometheus server là được.
- Sau khi biết được địa chỉ IP của Exporter, quay trở lại trên Prometheus server để cấu hình thêm Exporter.
- Như đã nói ở phần 1, chúng ta sẽ cấu hình ở file /etc/prometheus/prometheus.yml.
Lưu ý: do đây là file yml, cần format đúng cấu trúc(Có nghĩa là phải thục đầu dòng). Các bạn copy phần nội dung và nên chỉnh lại theo format của yml.
Bash:
nano /etc/prometheus/prometheus.yml
- Sau đó sao chép đoạn nội dung sau vào file yml và restart lại service.
- job_name: <name>(tên gì cũng được)
static_configs:
- targets: ['<PRIVATE_IP_ADDRESS_OF_NEW_SERVER>:9100']
1723652723614.png

1723652821766.png

- Kiểm tra kết quả bằng cách truy cập vào đường dẫn trên web <Địa chỉ IP của Prometheus server>:9090 và sử dụng câu truy vấn "up" sẽ cho ra kết quả là các máy đang hoạt động.

1723653067707.png

- Đây là trang web của Prometheus phục vụ cho truy vấn dữ liệu sử dụng port mặc định là 9090.

III. Tổng kết


Mình đã triển khai thành công bộ công cụ Prometheus, đã hướng dẫn cấu hình Prometheus server, Exporter, và cách kết nối hai thành phần này lại với nhau.
Các kiến thức trên được mình góp nhặt và nghiên cứu từ nhiều nguồn nếu như có sai sót hoặc thông tin gì sai với kiến thức chung, mọi người xin vui lòng góp ý bên dưới comment.
Dự kiến các chap tiếp theo: PrometheusQueryLanguage, Alert to your phone(Mail, Telegram, Slack), Monintoring Cluster(K8s) with Prometheus Grafana.
 

Attachments

  • 1723605279148.png
    1723605279148.png
    123.6 KB · Views: 0
  • 1723628779692.png
    1723628779692.png
    53.9 KB · Views: 0
  • 1723630408600.png
    1723630408600.png
    23.9 KB · Views: 0
  • 1723649770955.png
    1723649770955.png
    61.9 KB · Views: 0
  • 1723649802311.png
    1723649802311.png
    8.7 KB · Views: 0
  • 1723652689341.png
    1723652689341.png
    13.2 KB · Views: 0
Last edited:
  • Like
Reactions: root
Thanks bài viết. Rất mong chờ bài viết về Alert to your phone(Mail, Telegram, Slack), Monintoring Cluster(K8s) with Prometheus Grafana.
 

About us

  • Securityzone.vn là một trang web chuyên về an ninh mạng và công nghệ thông tin. Trang web này cung cấp các bài viết, tin tức, video, diễn đàn và các dịch vụ liên quan đến lĩnh vực này. Securityzone.vn là một trong những cộng đồng IT lớn và uy tín tại Việt Nam, thu hút nhiều người quan tâm và tham gia. Securityzone.vn cũng là nơi để các chuyên gia, nhà nghiên cứu, sinh viên và người yêu thích an ninh mạng có thể trao đổi, học hỏi và chia sẻ kiến thức, kinh nghiệm và giải pháp về các vấn đề bảo mật trong thời đại số.

Quick Navigation

User Menu