Saturday, March 29, 2025

Tách Prometheus ra khỏi Ceph Cluster

-

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-077CEPH-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.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories