Cài đặt và cấu hình Prometheus trên Linux 8 – step by step install Prometheus on Linux 8

Prometheus là một hệ thống giám sát mã nguồn mở được phát triển ban đầu bởi SoundCloud vào năm 2012 và hiện được duy trì bởi một cộng đồng lớn. Nó được thiết kế để giám sát và ghi lại các số liệu từ các hệ thống máy chủ và dịch vụ, cung cấp cảnh báo và phân tích dữ liệu.

Xem thêm: https://datalinks.vn/prometheus-la-gi/

Nội dung chi tiết:

  • Cài đặt Prometheus trên linux (IP server: 192.168.68.9)
  • Giám sát máy chủ

Tải về Prometheus:

wget https://github.com/prometheus/prometheus/releases/download/v2.52.0/prometheus-2.52.0.linux-amd64.tar.gz

Giải nén:

tar -xzf prometheus-2.52.0.linux-amd64.tar.gz

Tạo user prometheus và thư mục cần thiết:

sudo useradd --no-create-home --shell /bin/false prometheus

sudo mkdir /etc/prometheus

sudo mkdir /var/lib/prometheus

sudo chown prometheus:prometheus /etc/prometheus

sudo chown prometheus:prometheus /var/lib/prometheus

Copy file:

sudo cp prometheus-2.52.0.linux-amd64/prometheus /usr/local/bin/

sudo cp prometheus-2.52.0.linux-amd64/promtool /usr/local/bin/

sudo chown prometheus:prometheus /usr/local/bin/prometheus

sudo chown prometheus:prometheus /usr/local/bin/promtool

Copy other:

sudo cp -r prometheus-2.52.0.linux-amd64/consoles /etc/prometheus

sudo cp -r prometheus-2.52.0.linux-amd64/console_libraries /etc/prometheus

sudo chown -R prometheus:prometheus /etc/prometheus/consoles

sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries

Copy prometheus.yml file

sudo cp -r prometheus-2.52.0.linux-amd64/prometheus.yml /etc/prometheus

sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml

Khởi chạy Prometheus server:

Chạy lệnh bên dưới:

prometheus --config.file "/etc/prometheus/prometheus.yml"

Hoặc thêm vào trong systemd:

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

## noi dung

[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

sudo systemctl daemon-reload

sudo systemctl start prometheus

sudo systemctl status prometheus

sudo systemctl enable prometheus

Check thông tin:

curl localhost:9090/metrics

# TYPE prometheus_web_federation_warnings_total counter

prometheus_web_federation_warnings_total 0

# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.

# TYPE promhttp_metric_handler_requests_in_flight gauge

promhttp_metric_handler_requests_in_flight 1

# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.

# TYPE promhttp_metric_handler_requests_total counter

promhttp_metric_handler_requests_total{code=”200″} 2

promhttp_metric_handler_requests_total{code=”500″} 0

promhttp_metric_handler_requests_total{code=”503″} 0

Check web:

http://192.168.68.9:9090

word image 2196 1

Giám sát máy chủ với Node Exporter

cài đặt:

wget https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gz

Giản nén:

tar -xzf node_exporter-1.8.1.linux-amd64.tar.gz

Copy vào bin:

cp node_exporter-1.8.1.linux-amd64/node_exporter /usr/local/bin/

Kiểm tra version:

[root@localhost ~]# node_exporter –version

node_exporter, version 1.8.1 (branch: HEAD, revision: 400c3979931613db930ea035f39ce7b377cdbb5b)

build user: root@7afbff271a3f

build date: 20240521-18:36:22

go version: go1.22.3

platform: linux/amd64

tags: unknown

Khởi chạy node_exporter:

node_exporter

ts=2024-05-27T00:34:29.733Z caller=node_exporter.go:118 level=info collector=timex

ts=2024-05-27T00:34:29.733Z caller=node_exporter.go:118 level=info collector=udp_queues

ts=2024-05-27T00:34:29.733Z caller=node_exporter.go:118 level=info collector=uname

ts=2024-05-27T00:34:29.733Z caller=node_exporter.go:118 level=info collector=vmstat

ts=2024-05-27T00:34:29.733Z caller=node_exporter.go:118 level=info collector=watchdog

ts=2024-05-27T00:34:29.733Z caller=node_exporter.go:118 level=info collector=xfs

ts=2024-05-27T00:34:29.733Z caller=node_exporter.go:118 level=info collector=zfs

ts=2024-05-27T00:34:29.733Z caller=tls_config.go:313 level=info msg=”Listening on” address=[::]:9100

ts=2024-05-27T00:34:29.733Z caller=tls_config.go:316 level=info msg=”TLS is disabled.” http2=false address=[::]:9100

Kiểm tra thông tin node:

curl localhost:9100/metrics | grep node_cpu_seconds_total

[root@localhost ~]# curl localhost:9100/metrics | grep node_cpu_seconds_total

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.

# TYPE node_cpu_seconds_total counter

node_cpu_seconds_total{cpu=”0″,mode=”idle”} 1880.93

node_cpu_seconds_total{cpu=”0″,mode=”iowait”} 2.55

node_cpu_seconds_total{cpu=”0″,mode=”irq”} 19.49

node_cpu_seconds_total{cpu=”0″,mode=”nice”} 0.27

node_cpu_seconds_total{cpu=”0″,mode=”softirq”} 21.57

node_cpu_seconds_total{cpu=”0″,mode=”steal”} 0

node_cpu_seconds_total{cpu=”0″,mode=”system”} 29.86

node_cpu_seconds_total{cpu=”0″,mode=”user”} 129.99

10node_cpu_seconds_total{cpu=”1″,mode=”idle”} 1953.64

node_cpu_seconds_total{cpu=”1″,mode=”iowait”} 2.83

node_cpu_seconds_total{cpu=”1″,mode=”irq”} 13.57

node_cpu_seconds_total{cpu=”1″,mode=”nice”} 0.27

0 795node_cpu_seconds_total{cpu=”1″,mode=”softirq”} 5.44

26 node_cpu_seconds_total{cpu=”1″,mode=”steal”} 0

node_cpu_seconds_total{cpu=”1″,mode=”system”} 25.98

0node_cpu_seconds_total{cpu=”1″,mode=”user”} 86.96

79526 0 0 4314k 0 –:–:– –:–:– –:–:– 4314k

Cấu hình Prometheus để lấy dữ liệu từ Node_explorer:

cat /etc/prometheus/prometheus.yml

vi /etc/prometheus/prometheus.yml

Ở phần scrape_configs ta thêm vào job_name cho Node Exporter.

scrape_configs:

– job_name: “prometheus”

static_configs:

– targets: [“localhost:9090”]

– job_name: “node”

static_configs:

– targets: [“localhost:9100”]

Chú ý: – targets: [“localhost:9100”] chính là server mà chúng ta muốn theo dõi, thay ip, port server mà chúng ta muốn theo dõi vào đó, đồng thời cài đặt node_explorer vào server đó.

Ở ví dụ trên chúng ta theo dõi chính server localhost luôn.

Chạy lại Prometheus:

prometheus --config.file "/etc/prometheus/prometheus.yml"

Vào Url test thử:

192.168.68.9:9090

thực thi job: {job=”node”}

word image 2196 2

 

Tính toán chỉ số Utilization, Saturation

Như chúng ta đã biết thì Utilization là chỉ số cho biết thông tin hiện tại hệ thống đang sử dụng bao nhiêu % (nó như là tải hệ thống hiện tại)

Saturation: là ngưỡng tối đa của hệ thống có thể đáp ứng được.

=> Như vậy thì nếu Utilization mà gần chạm ngưỡng Saturation sẽ là không tốt và gây nguy hiểm cho hệ thống.

Check thông tin:

192.168.68.9:9090

sau đó nhập vào thông tin: node_cpu_seconds_total{} trong ô expression

word image 2196 3

Ví dụ giá trị của 1 metrics:

node_cpu_seconds_total{cpu=”0″, instance=”localhost:9100″, job=”node”, mode=”idle”}

  • Hai labels instance và job giúp xác định metric này được thu thập từ đâu
  • Label cpu chỉ định thứ tự core của CPU trong máy chủ, ví dụ ta hay nghe CPU có 2 core hay 4 core
  • Label mode là chế độ của CPU như: user, system, idle, …

Utilization: Tính toán % CPU được sử dụng trong 5m như sau:

100 – avg(irate(node_cpu_seconds_total{mode=”idle”}[5m])) by (instance) * 100

Để tính toán được CPU hiện sử dụng bao nhiêu chúng ta lấy tổng CPU – CPU đang ở trạng thái idle (nghỉ ngơi không làm việc).

100: là tổng % tài nguyên hiện có của CPU đương nhiên là 100%

avg(irate(node_cpu_seconds_total{mode=”idle”}[5m])) by (instance) * 100: cụm này tính tỷ lệ % trung bình trong 5m của CPU không sử dụng tức là đang idle

word image 2196 4

Saturation: Tính toán % CPU ngưỡng tối đa:

CPU Saturation là một chỉ số đo lường mức độ sử dụng của CPU so với khả năng xử lý tối đa của nó. Nó đo lường mức độ quá tải của CPU bằng cách so sánh số lượng yêu cầu xử lý hiện tại với khả năng xử lý tối đa của CPU. Nếu CPU Saturation cao, nghĩa là CPU đang được sử dụng gần đạt mức giới hạn và có thể gây ra hiện tượng treo máy hoặc giảm hiệu suất hệ thống.

Metric mà Node Exporter thu thập về cho CPU Saturation là node_load*. Với dấu * có các giá trị là 1, 5, 15 tương ứng với 1 phút, 5 phút và 15 phút. Ví dụ CPU Saturation trong vòng 1 phút:

node_load1{}

Ví dụ chỉ số CPU Saturation trong vòng 1 phút lớn hơn số lượng CPU có trên máy chủ:

node_load1 > count by (instance)(node_cpu_seconds_total{mode="idle"})

thêm on() vào nếu có nhiều instance:

node_load1 > on(instance) count by (instance)(node_cpu_seconds_total{mode="idle"})

Memory Utilization

Memory Utilization là một chỉ số đo lường mức độ sử dụng bộ nhớ trong hệ thống. Nó cho biết bao nhiêu phần trăm bộ nhớ đang được sử dụng so với tổng dung lượng bộ nhớ có sẵn.

Ví dụ, nếu hệ thống có 8GB bộ nhớ và đang sử dụng 4GB, thì Memory Utilization sẽ là 50%. Điều này cho thấy rằng hệ thống đang sử dụng một nửa dung lượng bộ nhớ có sẵn.

công thức tính toán: sử dụng = total – không sử dụng (free)

(node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Cached_bytes + node_memory_Buffers_bytes)) / node_memory_MemTotal_bytes * 100

Memory Saturation

Memory Saturation là một chỉ số để chỉ mức độ sử dụng của bộ nhớ trong máy tính. Khi bộ nhớ đạt đến mức độ saturation, nó sẽ không thể lưu trữ thêm bất kỳ dữ liệu nào khác. Điều này có thể dẫn đến các vấn đề như chậm hơn hoạt động của máy tính và các lỗi khác.

Các metric liên quan tới Memory Saturation được thu thập từ tệp tin /proc/vmstat, đây là một tệp tin ảo trong hệ thống tập tin /proc của hệ điều hành Linux. Nó cung cấp thông tin về các thống kê liên quan đến việc quản lý bộ nhớ ảo (virtual memory) trên hệ thống

Công thức tính Memory Saturation:

1024 * sum by (instance) (rate(node_vmstat_pgpgin[1m]) + rate(node_vmstat_pgpgout[1m]))

word image 2196 5

Quản lý thông tin Disk:

(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100

mountpoint: thay bằng vùng chúng ta muốn thu thập thông tin

node_filesystem_size_bytes: tổng dung lượng đĩa

node_filesystem_free_bytes: tổng dung lượng trống

=>sử dụng = tổng – trống.

Dự đoán ổ đĩa đầy:

predict_linear(node_filesystem_free_bytes{mountpoint="/"}[1h], 4*3600) < 0

predict_linear: hàm dự đoán

node_filesystem_free_bytes{mountpoint=”/”}[1h] là tỉ lệ sử dụng trong vòng 1h, hàm predict_linear nhận giá trị này và dự đoán trong 4h (4 * 3600s) sau giá trị này là bao nhiêu. Nếu nhỏ hơn 0 có nghĩa là ổ đĩa không còn dung lượng. Ta dùng giá trị này để bắn cảnh báo tới cho người quản trị.

 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận