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
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:
- Đặ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.
- Kiểm tra phiên bản của server hiện tại(Option).
- Mình sẽ sử dụng server tên learn làm Prometheus server và tên exporter làm Exporter
- Sử dụng quyền root để bắt đầu cấu hình.
- Tạo user và group cho 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
Do mình đã tạo trước đó nên hiện là đã tồn tại
- 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.
- Giải nén thư mục vừa tải
- Copy 2 file binary là prometheus, promtool đến /usr/local/bin
- Gán quyền user và group đã tạo trước đó cho 2 file này
- Copy 2 thư mục là consoles, consoles_libraries đến /etc/prometheus
- Copy file prometheus.yaml đến /etc/prometheus
- Set ownership cho thư mục /etc/prometheus và /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.”
- Tiếp tục cấu hình systemd cho prometheus
- Patse đoạn script sau vào thư mục
start và enable prometheus service
- Cấu hình Prometheus server
- Sử dụng lệnh sau để check kết quả.
- Kiểm tra service đã active hay chưa
- 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.
- Tạo group và user cho exporter.
- Tìm phiên bản phù hợp với máy hiện tại qua link sau
- Tải và giải nén file binary sau khi đã chọn phiên bản phù hợp.
- 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.
- Tạo systemd cho Node exporter
- Start, enable node exporter service và kiểm tra xem node port đã hoạt động hay chưa.
- 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.
Đ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.
- 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)
- 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.
- Đâ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.
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.
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:
- Đặ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
- 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
Bash:
useradd -M -r -s /bin/false prometheus
Bash:
mkdir /etc/prometheus /var/lib/prometheus
Do mình đã tạo trước đó nên hiện là đã tồn tại
- 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
- Giải nén thư mục vừa tải
Bash:
tar xzf <file zip vừa tải>
Bash:
cp prometheus-<version>.linux-amd64/{prometheus,promtool} /usr/local/bin
Bash:
chown prometheus:prometheus /usr/local/bin/{prometheus,promtool}
Bash:
cp -r prometheus-<version>.linux-amd64/{consoles,console_libraries} /etc/prometheus
Bash:
cp prometheus-<version>.linux-amd64/prometheus.yml /etc/prometheus/
Bash:
chown -R prometheus:prometheus /etc/prometheus/
chown -R prometheus:prometheus /var/lib/prometheus
Bash:
prometheus --config.file=/etc/prometheus/prometheus.yml
- Tiếp tục cấu hình systemd cho prometheus
Bash:
nano /etc/systemd/system/prometheus.service
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
Bash:
systemctl daemon-reload
systemctl start prometheus
systemctl enable prometheus
- 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
Bash:
curl localhost:9090/api/v1/status/config
- Kiểm tra service đã active hay chưa
Code:
systemctl status prometheus.service
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
Bash:
useradd -M -r -s /bin/false node_exporter
- 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
Bash:
tar xzf <tên file vừa tải về>
- 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
- Tạo systemd cho Node exporter
Bash:
nano /etc/systemd/system/node_exporter.service
- 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
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
Đ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
- job_name: <name>(tên gì cũng được)
static_configs:
- targets: ['<PRIVATE_IP_ADDRESS_OF_NEW_SERVER>:9100']
- 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.
- Đâ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
Last edited: