1. Tổng quan.
Trong hệ thống Ceph, mỗi cluster thường triển khai Prometheus để giám sát hiệu suất và trạng thái của cluster. Tuy nhiên, với những cluster Ceph lớn, đặc biệt là các cluster có số lượng node OSD từ 50-100, việc thu thập và xử lý metric có thể tiêu tốn rất nhiều tài nguyên, đặc biệt là RAM. Điều này có thể ảnh hưởng đến hiệu năng của các node MON/MGR trong cluster.

Để giải quyết vấn đề này, thay vì để Prometheus chạy trên các node MON/MGR trong Ceph cluster, ta có thể tách Prometheus ra các node vật lý riêng biệt như CEPH-LAB-MONITORING-077 và CEPH-LAB-MONITORING-078. Những node này không nằm trong cluster Ceph nhưng vẫn chịu sự quản lý của hệ thống và có nhiệm vụ chuyên biệt trong việc thu thập, lưu trữ và xử lý metric từ toàn bộ hạ tầng.
Giải pháp này giúp giảm tải cho các node MON/MGR, đảm bảo hiệu năng ổn định hơn cho cluster, đồng thời tăng khả năng chịu lỗi cho hệ thống monitoring. Nếu một trong hai node monitoring gặp sự cố, node còn lại vẫn đảm bảo khả năng giám sát liên tục, giúp duy trì tính sẵn sàng của hệ thống.
2. Sơ đồ.

3. Quy trình triển khai.
3.1. Chuẩn bị cho Node CEPH-LAB-MONITORING-077.
Với Ceph, thời gian rất quan trọng nên bạn cần đồng bộ thời gian cho nó.
apt install chrony -y
cp /etc/chrony/chrony.conf /etc/chrony/chrony.conf.bak
cat > /etc/chrony/chrony.conf << 'OEF'
server 10.237.7.250 iburst
OEF
systemctl restart chronyd
systemctl enable chronyd
Set timezone.
timedatectl set-timezone Asia/Ho_Chi_Minh
Dừng dịch vụ timesyncd.
systemd stop systemd-timesyncd
systemctl disable systemd-timesyncd
Verify kết quả.
chronyc sources
chronyc tracking
Cài đặt libuser để tạo group và user ceph.
# Install libuser.
apt-get update
apt-get install -y libuser
# Create group 'ceph'
if ! grep -q "^ceph:" /etc/group; then
groupadd --gid 167 --system ceph
fi
# Create user 'ceph'
if ! id -u ceph > /dev/null 2>&1; then
useradd --uid 167 --gid ceph --system --shell /sbin/nologin --home /var/lib/ceph --comment "ceph-container daemons" ceph
passwd -l ceph
fi
Cài đặt Podman.
apt update
apt install -y podman
Tương tự như Ceph bạn cần cài đặt Cephadm.
cd /usr/local/bin
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/quincy/src/cephadm/cephadm
chmod +x cephadm
Cài đặt hostname.
# Set root's full name
hostname='CEPH-LAB-MONITORING-077'
hostnamectl set-hostname ${hostname}
chfn -f ${hostname}
Các bước sau để tạo username cephadmin
, thêm sshkey
và thêm nó vào quyền sudoers
để nó có thể login có thể dùng key và không cần nhập pass.
# Ensure cephadmin user exists and home directory is created
if ! id -u cephadmin > /dev/null 2>&1; then
useradd -m -s /bin/bash cephadmin
fi
# Ensure cephadmin .ssh directory exists
if [ ! -d /home/cephadmin/.ssh ]; then
mkdir -p /home/cephadmin/.ssh
chown cephadmin:cephadmin /home/cephadmin/.ssh
chmod 0700 /home/cephadmin/.ssh
fi
# Set permissions for cephadmin's private key
echo "${your_private_key}" > /home/cephadmin/.ssh/id_rsa
chown cephadmin:cephadmin /home/cephadmin/.ssh/id_rsa
chmod 0600 /home/cephadmin/.ssh/id_rsa
echo "${your_public_key}" > /home/cephadmin/.ssh/authorized_keys
chown cephadmin:cephadmin /home/cephadmin/.ssh/authorized_keys
chmod 0600 /home/cephadmin/.ssh/authorized_keys
cat > /etc/ssh/sshd_config << 'OEF'
Port 22
ListenAddress 0.0.0.0
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
ClientAliveInterval 10
ClientAliveCountMax 3
Subsystem sftp /usr/lib/openssh/sftp-server
UseDNS no
UsePAM yes
AllowUsers hoanghd cephadmin
OEF
chown root:root /etc/ssh/sshd_config
chmod 0644 /etc/ssh/sshd_config
echo "cephadmin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
Khởi động lại dịch vụ SSH.
systemctl restart ssh.service
3.2. Thêm node CEPH-LAB-MONITORING-077 vào Ceph Cluster.
Đầu tiên mình sẽ cho bạn xem danh sách các Node trước khi thêm Node CEPH-LAB-MONITORING-077 vào.
shell> ceph orch host ls
HOST ADDR LABELS STATUS
CEPH-LAB-MON-071 10.237.7.71 _admin,mon,mgr
CEPH-LAB-MON-072 10.237.7.72 _admin,mon,mgr
CEPH-LAB-MON-073 10.237.7.73 _admin,mon,mgr
CEPH-LAB-OSD-074 10.237.7.74 osd
CEPH-LAB-OSD-075 10.237.7.75 osd
CEPH-LAB-OSD-076 10.237.7.76 osd
6 hosts in cluster
Tiến hành thêm node CEPH-LAB-MONITORING-077.
shell> ceph orch host add CEPH-LAB-MONITORING-077 10.237.7.77
Added host 'CEPH-LAB-MONITORING-077' with addr '10.237.7.77'
Và đây là kết quả khi mình thêm none CEPH-LAB-MONITORING-077 vào cluster.
shell> ceph orch host ls
HOST ADDR LABELS STATUS
CEPH-LAB-MON-071 10.237.7.71 _admin,mon,mgr
CEPH-LAB-MON-072 10.237.7.72 _admin,mon,mgr
CEPH-LAB-MON-073 10.237.7.73 _admin,mon,mgr
CEPH-LAB-MONITORING-077 10.237.7.77
CEPH-LAB-OSD-074 10.237.7.74 osd
CEPH-LAB-OSD-075 10.237.7.75 osd
CEPH-LAB-OSD-076 10.237.7.76 osd
7 hosts in cluster
3.3. Gán label cho node CEPH-LAB-MONITORING-077
.
Để đảm bảo Ceph chỉ triển khai Prometheus trên node này, bạn cần thêm một label tùy chỉnh:
shell> ceph orch host label add CEPH-LAB-MONITORING-077 monitoring
Added label monitoring to host CEPH-LAB-MONITORING-07
Kiểm tra lại danh sách host để đảm bảo label đã được gán:
shell> ceph orch host ls
HOST ADDR LABELS STATUS
CEPH-LAB-MON-071 10.237.7.71 _admin,mon,mgr
CEPH-LAB-MON-072 10.237.7.72 _admin,mon,mgr
CEPH-LAB-MON-073 10.237.7.73 _admin,mon,mgr
CEPH-LAB-MONITORING-077 10.237.7.77 monitoring
CEPH-LAB-OSD-074 10.237.7.74 osd
CEPH-LAB-OSD-075 10.237.7.75 osd
CEPH-LAB-OSD-076 10.237.7.76 osd
7 hosts in cluster
3.4. Triển khai.
Lệnh này để triển khai Prometheus vào các Node được gán nhãn là monitoring, trường hợp này tiện khi bạn muốn triển khai nhiều node monitoring ở ngoài để có một mục đích đó, có thể chia tải hoặc chịu lỗi chẳng hạn.
shell> ceph orch apply prometheus --placement="label:monitoring"
Scheduled prometheus update...
Lệnh này cho phép bạn triển khai trên 1 node cụ thể.
ceph orch apply prometheus --placement="CEPH-LAB-MONITORING-077"
Nếu quá trình triển khai gặp stuck ở đâu đó, bạn có thể thử remove dịch vụ prometheus rồi triển khai lại thử, hành động nãy sẽ xóa hết dịch vụ prometheus trển tất cả các node nằm trong cluster
ceph orch rm prometheus
3.5. Xác minh dịch vụ triển khai thành công.
Kiểm tra process nếu bạn thấy dịch vụ Prometheus đang chạy ở trạng thái running là đã thành công.
shell> ceph orch ps | grep prometheus
prometheus.CEPH-LAB-MONITORING-077 CEPH-LAB-MONITORING-077 *:9095 running (20s) 16s ago 20s 22.5M - 2.43.0 a07b618ecd1d e227cb9afa30
Cho các bạn xem output full để dễ hình dung hơn nhé.
shell> ceph orch ps
NAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID
alertmanager.CEPH-LAB-MON-071 CEPH-LAB-MON-071 *:9093,9094 running (76m) 3m ago 85m 14.6M - 0.25.0 c8568f914cd2 463719bc65fb
crash.CEPH-LAB-MON-071 CEPH-LAB-MON-071 running (85m) 3m ago 85m 7541k - 18.2.4 2bc0b0f4375d 85059bc4dba1
crash.CEPH-LAB-MON-072 CEPH-LAB-MON-072 running (77m) 2m ago 77m 7578k - 18.2.4 2bc0b0f4375d 092ca1820ef2
crash.CEPH-LAB-MON-073 CEPH-LAB-MON-073 running (77m) 2m ago 77m 7549k - 18.2.4 2bc0b0f4375d 235bae8f9fd7
crash.CEPH-LAB-MONITORING-077 CEPH-LAB-MONITORING-077 running (5m) 4m ago 5m 7545k - 18.2.4 2bc0b0f4375d 375126760cea
crash.CEPH-LAB-OSD-074 CEPH-LAB-OSD-074 running (73m) 2m ago 73m 9479k - 18.2.4 2bc0b0f4375d 82b57889ade8
crash.CEPH-LAB-OSD-075 CEPH-LAB-OSD-075 running (68m) 4m ago 68m 8426k - 18.2.4 2bc0b0f4375d 3613666658e5
crash.CEPH-LAB-OSD-076 CEPH-LAB-OSD-076 running (53m) 31s ago 53m 7558k - 18.2.4 2bc0b0f4375d 08cd44bc4fa3
grafana.CEPH-LAB-MON-071 CEPH-LAB-MON-071 *:3000 running (3m) 3m ago 85m 72.5M - 9.4.7 954c08fa6188 5f08f99a8709
mgr.CEPH-LAB-MON-071.hneqwa CEPH-LAB-MON-071 *:9283,8765,8443 running (86m) 3m ago 86m 549M - 18.2.4 2bc0b0f4375d e69b476fb5a2
mgr.CEPH-LAB-MON-072.bfbrxq CEPH-LAB-MON-072 *:8443,9283,8765 running (77m) 2m ago 77m 452M - 18.2.4 2bc0b0f4375d 47bdb00ea9d3
mgr.CEPH-LAB-MON-073.nkjwfi CEPH-LAB-MON-073 *:8443,9283,8765 running (77m) 2m ago 77m 452M - 18.2.4 2bc0b0f4375d eaf2cf629ed9
mon.CEPH-LAB-MON-071 CEPH-LAB-MON-071 running (86m) 3m ago 86m 94.0M 32.0G 18.2.4 2bc0b0f4375d 298e1c9ac933
mon.CEPH-LAB-MON-072 CEPH-LAB-MON-072 running (77m) 2m ago 77m 84.6M 32.0G 18.2.4 2bc0b0f4375d 013ea45e7d31
mon.CEPH-LAB-MON-073 CEPH-LAB-MON-073 running (77m) 2m ago 77m 83.7M 32.0G 18.2.4 2bc0b0f4375d 0ed8f9d44b0f
node-exporter.CEPH-LAB-MON-071 CEPH-LAB-MON-071 *:9100 running (85m) 3m ago 85m 9286k - 1.5.0 0da6a335fe13 f09a7ea1e0e0
node-exporter.CEPH-LAB-MON-072 CEPH-LAB-MON-072 *:9100 running (77m) 2m ago 77m 9185k - 1.5.0 0da6a335fe13 6c16e56aab11
node-exporter.CEPH-LAB-MON-073 CEPH-LAB-MON-073 *:9100 running (77m) 2m ago 77m 9118k - 1.5.0 0da6a335fe13 6d613494fa8c
node-exporter.CEPH-LAB-MONITORING-077 CEPH-LAB-MONITORING-077 *:9100 running (5m) 4m ago 5m 7532k - 1.5.0 0da6a335fe13 8e1f8bf73da1
node-exporter.CEPH-LAB-OSD-074 CEPH-LAB-OSD-074 *:9100 running (73m) 2m ago 73m 24.5M - 1.5.0 0da6a335fe13 ce148027438e
node-exporter.CEPH-LAB-OSD-075 CEPH-LAB-OSD-075 *:9100 running (68m) 4m ago 68m 19.3M - 1.5.0 0da6a335fe13 febf2382f787
node-exporter.CEPH-LAB-OSD-076 CEPH-LAB-OSD-076 *:9100 running (53m) 31s ago 53m 18.7M - 1.5.0 0da6a335fe13 41e340733fc4
osd.0 CEPH-LAB-OSD-074 running (72m) 2m ago 72m 54.4M 4096M 18.2.4 2bc0b0f4375d 5ddbfccc38b2
osd.1 CEPH-LAB-OSD-074 running (72m) 2m ago 72m 58.9M 4096M 18.2.4 2bc0b0f4375d adbe5355f9ad
osd.2 CEPH-LAB-OSD-074 running (72m) 2m ago 72m 51.1M 4096M 18.2.4 2bc0b0f4375d 1af9a587a7cd
osd.3 CEPH-LAB-OSD-074 running (72m) 2m ago 72m 52.4M 4096M 18.2.4 2bc0b0f4375d b64218e50b86
osd.4 CEPH-LAB-OSD-074 running (72m) 2m ago 72m 55.5M 4096M 18.2.4 2bc0b0f4375d e2d629bfb7fb
osd.5 CEPH-LAB-OSD-074 running (72m) 2m ago 72m 50.0M 4096M 18.2.4 2bc0b0f4375d 76930e57ddab
osd.6 CEPH-LAB-OSD-074 running (72m) 2m ago 72m 74.1M 4096M 18.2.4 2bc0b0f4375d b244203c6f52
osd.7 CEPH-LAB-OSD-074 running (72m) 2m ago 72m 53.5M 4096M 18.2.4 2bc0b0f4375d 3b07334359b9
osd.8 CEPH-LAB-OSD-074 running (72m) 2m ago 72m 54.0M 4096M 18.2.4 2bc0b0f4375d 8676d6a21cad
osd.9 CEPH-LAB-OSD-075 running (67m) 4m ago 67m 50.8M 4096M 18.2.4 2bc0b0f4375d f7f9c21bfcf2
osd.10 CEPH-LAB-OSD-075 running (67m) 4m ago 67m 56.8M 4096M 18.2.4 2bc0b0f4375d b57480ce3e13
osd.11 CEPH-LAB-OSD-075 running (67m) 4m ago 67m 50.9M 4096M 18.2.4 2bc0b0f4375d e1d5d92334e1
osd.12 CEPH-LAB-OSD-075 running (67m) 4m ago 67m 51.2M 4096M 18.2.4 2bc0b0f4375d d7536fbeda15
osd.13 CEPH-LAB-OSD-075 running (67m) 4m ago 67m 58.0M 4096M 18.2.4 2bc0b0f4375d f788e4f6c638
osd.14 CEPH-LAB-OSD-075 running (67m) 4m ago 67m 54.8M 4096M 18.2.4 2bc0b0f4375d 91e7e3bfa4bb
osd.15 CEPH-LAB-OSD-075 running (67m) 4m ago 67m 51.9M 4096M 18.2.4 2bc0b0f4375d 207345613a48
osd.16 CEPH-LAB-OSD-075 running (67m) 4m ago 67m 50.0M 4096M 18.2.4 2bc0b0f4375d a4cd69d2a8a7
osd.17 CEPH-LAB-OSD-075 running (67m) 4m ago 67m 51.2M 4096M 18.2.4 2bc0b0f4375d 611d3c332993
osd.18 CEPH-LAB-OSD-076 running (52m) 31s ago 52m 51.4M 4096M 18.2.4 2bc0b0f4375d fc7efe0c7e7c
osd.19 CEPH-LAB-OSD-076 running (52m) 31s ago 52m 53.4M 4096M 18.2.4 2bc0b0f4375d 26184099fe54
osd.20 CEPH-LAB-OSD-076 running (52m) 31s ago 52m 53.3M 4096M 18.2.4 2bc0b0f4375d 19bbe2ab5acf
osd.21 CEPH-LAB-OSD-076 running (52m) 31s ago 52m 70.5M 4096M 18.2.4 2bc0b0f4375d cd3c5c317755
osd.22 CEPH-LAB-OSD-076 running (52m) 31s ago 52m 50.5M 4096M 18.2.4 2bc0b0f4375d 47ec0727f7b6
osd.23 CEPH-LAB-OSD-076 running (52m) 31s ago 52m 49.7M 4096M 18.2.4 2bc0b0f4375d f5d6615de10e
osd.24 CEPH-LAB-OSD-076 running (52m) 31s ago 52m 49.6M 4096M 18.2.4 2bc0b0f4375d acc114a3f395
osd.25 CEPH-LAB-OSD-076 running (52m) 31s ago 52m 50.1M 4096M 18.2.4 2bc0b0f4375d 0d7d2c2ae563
osd.26 CEPH-LAB-OSD-076 running (52m) 31s ago 52m 49.5M 4096M 18.2.4 2bc0b0f4375d e3bce2ed4014
prometheus.CEPH-LAB-MONITORING-077 CEPH-LAB-MONITORING-077 *:9095 running (4m) 4m ago 4m 22.5M - 2.43.0 a07b618ecd1d e227cb9afa30
Đây là kết quả netstat bên node CEPH-LAB-MONITORING-077.
shell> netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 956/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 11671/sshd: /usr/sb
tcp6 0 0 :::9095 :::* LISTEN 19185/prometheus
tcp6 0 0 :::9100 :::* LISTEN 17681/node_exporter
Danh sách container bên Node CEPH-LAB-MONITORING-077.
shell> podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
375126760cea quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906 -n client.crash.C... 6 minutes ago Up 6 minutes ago ceph-2263ee00-feeb-11ef-87cf-830f63d4fcbe-crash-CEPH-LAB-MONITORING-077
8e1f8bf73da1 quay.io/prometheus/node-exporter:v1.5.0 --no-collector.ti... 6 minutes ago Up 6 minutes ago ceph-2263ee00-feeb-11ef-87cf-830f63d4fcbe-node-exporter-CEPH-LAB-MONITORING-077
e227cb9afa30 quay.io/prometheus/prometheus:v2.43.0
Có thể xem targets bằng API này.
shell> curl -s -H "Accept: application/json" http://10.237.7.77:9095/api/v1/targets | jq .
{
"status": "success",
"data": {
"activeTargets": [
{
"discoveredLabels": {
"__address__": "CEPH-LAB-MON-071:9283",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=mgr-prometheus",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"job": "ceph"
},
"labels": {
"instance": "CEPH-LAB-MON-071:9283",
"job": "ceph"
},
"scrapePool": "ceph",
"scrapeUrl": "http://CEPH-LAB-MON-071:9283/metrics",
"globalUrl": "http://CEPH-LAB-MON-071:9283/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:13:51.100551543Z",
"lastScrapeDuration": 0.002660225,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.73:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-MON-073",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-MON-073",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.73:9100/metrics",
"globalUrl": "http://10.237.7.73:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:13:54.09055418Z",
"lastScrapeDuration": 0.011261367,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.74:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-OSD-074",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-OSD-074",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.74:9100/metrics",
"globalUrl": "http://10.237.7.74:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:13:56.736826868Z",
"lastScrapeDuration": 0.015691176,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.75:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-OSD-075",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-OSD-075",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.75:9100/metrics",
"globalUrl": "http://10.237.7.75:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:13:51.604263183Z",
"lastScrapeDuration": 0.013866744,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.76:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-OSD-076",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-OSD-076",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.76:9100/metrics",
"globalUrl": "http://10.237.7.76:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:13:56.989338042Z",
"lastScrapeDuration": 0.011706996,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.77:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-MONITORING-077",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-MONITORING-077",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.77:9100/metrics",
"globalUrl": "http://10.237.7.77:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:13:54.375081621Z",
"lastScrapeDuration": 0.013098507,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.71:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-MON-071",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-MON-071",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.71:9100/metrics",
"globalUrl": "http://10.237.7.71:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:13:55.319107314Z",
"lastScrapeDuration": 0.012885023,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.72:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-MON-072",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-MON-072",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.72:9100/metrics",
"globalUrl": "http://10.237.7.72:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:13:48.763952244Z",
"lastScrapeDuration": 0.012927154,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
}
],
"droppedTargets": []
}
}
/api/v1/targets
là endpoint API đúng để lấy danh sách các target.Nếu Prometheus đang chạy đúng cách, bạn sẽ thấy JSON chứa danh sách các target và trạng thái của chúng.
Hoặc bạn có thể xem trên trang Prometheus.

Thử 1 câu query nhé.

Nếu Prometheus không hoạt động như mong đợi.
- Kiểm tra container/service Prometheus có đang chạy không:
ceph orch ps | grep prometheus
- Nếu không có process nào, thử restart Prometheus:
ceph orch restart prometheus
- Kiểm tra log Prometheus:
ceph orch logs prometheus --tail 50
4. Đổi port Prometheus.
Khi sử dụng hai node monitoring chung cho toàn bộ hệ thống, mỗi cluster Ceph sẽ có một instance Prometheus riêng biệt. Vì vậy, nếu tất cả các cluster đều chạy trên cùng một node monitoring mà sử dụng mặc định cổng 9090, sẽ xảy ra xung đột cổng.
Cách giải quyết là chỉ định cổng khác nhau cho từng cluster Ceph. Ví dụ:
- Cluster Ceph 1: Prometheus chạy trên CEPH-LAB-MONITORING-077 với cổng 9191
- Cluster Ceph 2: Prometheus chạy trên CEPH-LAB-MONITORING-078 với cổng 9192
- …
Ngoài việc đổi port, cũng cần cấu hình lại các endpoint trên Grafana hoặc hệ thống alert để trỏ đúng vào các instance Prometheus tương ứng với từng cluster Ceph. Nếu muốn tối ưu hơn, có thể đặt một reverse proxy như Nginx hoặc HAProxy để điều phối truy cập mà không cần nhớ các cổng riêng lẻ.
Ceph không hỗ trợ thay đổi port của Prometheus bằng ceph config set
. Bạn cần chỉnh sửa YAML spec của Prometheus để đặt lại port theo cách sau:
Chạy lệnh sau để lấy spec YAML của Prometheus:
ceph orch ls --service-name=prometheus --export > prometheus.yml
Mở file prometheus.yml
và thêm dòng sau vào phần spec
:
service_type: prometheus
service_id: prometheus
placement:
label: monitoring
spec:
port: 9191
port: 9191
→ Đây là port mới mà bạn muốn thay đổi.
Sau khi chỉnh sửa, chạy lệnh:
shell> ceph orch apply -i prometheus.yml
Scheduled prometheus update...
Sau khi thay đổi, xác nhận Prometheus đã chạy trên port mới:
shell> ceph orch ps | grep prometheus
prometheus.CEPH-LAB-MONITORING-077 CEPH-LAB-MONITORING-077 *:9191 running (48s) 31s ago 48s 33.8M - 2.43.0 a07b618ecd1d d6a23eedb971
Hoặc kiểm tra bằng netstat.
shell> netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 956/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 11671/sshd: /usr/sb
tcp6 0 0 :::9191 :::* LISTEN 28627/prometheus
tcp6 0 0 :::9100 :::* LISTEN 17681/node_exporter
Giờ hãy kiểm tra target bằng API port 9191 thử nhé.
shell> curl -s -H "Accept: application/json" http://10.237.7.77:9191/api/v1/targets | jq .
{
"status": "success",
"data": {
"activeTargets": [
{
"discoveredLabels": {
"__address__": "CEPH-LAB-MON-071:9283",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=mgr-prometheus",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"job": "ceph"
},
"labels": {
"instance": "CEPH-LAB-MON-071:9283",
"job": "ceph"
},
"scrapePool": "ceph",
"scrapeUrl": "http://CEPH-LAB-MON-071:9283/metrics",
"globalUrl": "http://CEPH-LAB-MON-071:9283/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:37:51.100389039Z",
"lastScrapeDuration": 0.003026355,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.71:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-MON-071",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-MON-071",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.71:9100/metrics",
"globalUrl": "http://10.237.7.71:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:37:45.318783594Z",
"lastScrapeDuration": 0.011913581,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.72:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-MON-072",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-MON-072",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.72:9100/metrics",
"globalUrl": "http://10.237.7.72:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:37:48.764563444Z",
"lastScrapeDuration": 0.012753816,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.73:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-MON-073",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-MON-073",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.73:9100/metrics",
"globalUrl": "http://10.237.7.73:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:37:44.090753772Z",
"lastScrapeDuration": 0.011847776,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.74:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-OSD-074",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-OSD-074",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.74:9100/metrics",
"globalUrl": "http://10.237.7.74:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:37:46.736803772Z",
"lastScrapeDuration": 0.013325567,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.75:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-OSD-075",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-OSD-075",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.75:9100/metrics",
"globalUrl": "http://10.237.7.75:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:37:51.604939965Z",
"lastScrapeDuration": 0.013673731,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.76:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-OSD-076",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-OSD-076",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.76:9100/metrics",
"globalUrl": "http://10.237.7.76:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:37:46.989187262Z",
"lastScrapeDuration": 0.013514806,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
},
{
"discoveredLabels": {
"__address__": "10.237.7.77:9100",
"__meta_url": "http://10.237.7.71:8765/sd/prometheus/sd-config?service=node-exporter",
"__metrics_path__": "/metrics",
"__scheme__": "http",
"__scrape_interval__": "10s",
"__scrape_timeout__": "10s",
"instance": "CEPH-LAB-MONITORING-077",
"job": "node"
},
"labels": {
"instance": "CEPH-LAB-MONITORING-077",
"job": "node"
},
"scrapePool": "node",
"scrapeUrl": "http://10.237.7.77:9100/metrics",
"globalUrl": "http://10.237.7.77:9100/metrics",
"lastError": "",
"lastScrape": "2025-03-12T04:37:44.375329443Z",
"lastScrapeDuration": 0.0117725,
"health": "up",
"scrapeInterval": "10s",
"scrapeTimeout": "10s"
}
],
"droppedTargets": []
}
}
5. Xóa CEPH-LAB-MONITORING-077 khi không dùng nữa.
Sử dụng lệnh Ceph với option drain để bắt đầu remove các dịch vụ liên quan đến monitoring ra khỏi node CEPH-LAB-MONITORING-077.
shell> ceph orch host drain CEPH-LAB-MONITORING-077
Scheduled to remove the following daemons from host 'CEPH-LAB-MONITORING-077'
type id
-------------------- ---------------
crash CEPH-LAB-MONITORING-077
node-exporter CEPH-LAB-MONITORING-077
Lúc này dịch vụ liên quan đến monitoring đã được remove ra khỏi node CEPH-LAB-MONITORING-077 tuy nhiên host vẫn chưa được remove.
shell> ceph orch host ls
HOST ADDR LABELS STATUS
CEPH-LAB-MON-071 10.237.7.71 _admin,mon,mgr
CEPH-LAB-MON-072 10.237.7.72 _admin,mon,mgr
CEPH-LAB-MON-073 10.237.7.73 _admin,mon,mgr
CEPH-LAB-MONITORING-077 10.237.7.77 monitoring
CEPH-LAB-MONITORING-077 10.237.7.77 _no_schedule,_no_conf_keyring
CEPH-LAB-OSD-074 10.237.7.74 osd
CEPH-LAB-OSD-075 10.237.7.75 osd
CEPH-LAB-OSD-076 10.237.7.76 osd
8 hosts in cluster
Lệnh này sẽ xóa node CEPH-LAB-MONITORING-077 ra khỏi cluster.
shell> ceph orch host rm CEPH-LAB-MONITORING-077
Removed host 'CEPH-LAB-MONITORING-077'
Kết quả.
shell> ceph orch host ls
HOST ADDR LABELS STATUS
CEPH-LAB-MON-071 10.237.7.71 _admin,mon,mgr
CEPH-LAB-MON-072 10.237.7.72 _admin,mon,mgr
CEPH-LAB-MON-073 10.237.7.73 _admin,mon,mgr
CEPH-LAB-OSD-074 10.237.7.74 osd
CEPH-LAB-OSD-075 10.237.7.75 osd
CEPH-LAB-OSD-076 10.237.7.76 osd
8 hosts in cluster
6. Tổng kết.
Việc tách Prometheus ra khỏi các node MON/MGR trong Ceph cluster không chỉ giúp tối ưu tài nguyên mà còn tăng cường tính linh hoạt và khả năng mở rộng của hệ thống monitoring. Với cách tiếp cận này, hệ thống có thể giám sát nhiều cluster Ceph lớn mà không gây ảnh hưởng đến hiệu năng vận hành của từng cluster riêng lẻ. Đây là một phương án phù hợp khi triển khai hạ tầng Ceph với quy mô lớn, đảm bảo khả năng quan sát, phân tích và xử lý sự cố hiệu quả hơn.