问题现象

ceph-exporter 只有自身指标

text
1
2
3
4
5
curl localhost:9926/metrics

# HELP ceph_exporter_scrape_time Time spent scraping and transforming perf counters to metrics
# TYPE ceph_exporter_scrape_time gauge
ceph_exporter_scrape_time{function="dump_asok_metrics",host="xxxxxx"} 0.004840

ceph-exporter 进程存在,但没有成功取得本机 OSD 等 daemon 的性能计数器。

排查过程

查看 ceph-exporter 服务状态

text
1
2
3
4
5
6
7
8
ceph orch ps --daemon_type ceph-exporter
ceph-exporter.xxxxx005
ceph-exporter.xxxxx006
ceph-exporter.xxxxx007
ceph-exporter.xxxxx010
ceph-exporter.xxxxx024
ceph-exporter.xxxxx025
ceph-exporter.xxxxx026

确认节点是否存在 OSD/MGR/MON 进程

text
1
2
3
4
5
6
7
8
ceph orch ps --hostname xxxxx010

ceph-exporter.xxxxx010
crash.xxxxx010
node-exporter.xxxxx010
osd.12
osd.13
osd.14

这里排除了,本地没有 ceph相关daemon,所以 exporter 只有自身指标

note
ceph-exporter 是通过读取本地主机 daemon admin socket 并导出 daemon performance metrics

查看这个节点的 OSD admin socket

text
1
2
3
4
5
6
7
ls -lah /var/run/ceph/
385580f8-78e3-11f0-9d7f-fa163e52c3cd

ls -lah /var/run/ceph/385580f8-78e3-11f0-9d7f-fa163e52c3cd/
ceph-osd.12.asok
ceph-osd.13.asok
ceph-osd.14.asok

这里排除了 OSD admin socket 异常

查看容器内的 OSD socket 是否正常

text
1
2
3
podman exec -it $(podman ps -q --filter name=ceph-exporter) \
  ls -lah /var/run/ceph/385580f8-78e3-11f0-9d7f-fa163e52c3cd/
ls: cannot access '/var/run/ceph/385580f8-78e3-11f0-9d7f-fa163e52c3cd/': No such file or directory

正常节点的对比

text
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
docker inspect $(docker ps -q --filter name=ceph-exporter) \
  --format '{{range .Mounts}}{{println .Source " -> " .Destination}}{{end}}'

/var/lib/ceph/385580f8-78e3-11f0-9d7f-fa163e52c3cd/ceph-exporter.ph161svr020005/config
  -> /etc/ceph/ceph.conf

/var/lib/ceph/385580f8-78e3-11f0-9d7f-fa163e52c3cd/ceph-exporter.ph161svr020005/keyring
  -> /etc/ceph/ceph.client.ceph-exporter.ph161svr020005.keyring

/var/run/ceph/385580f8-78e3-11f0-9d7f-fa163e52c3cd
  -> /var/run/ceph

/var/log/ceph/385580f8-78e3-11f0-9d7f-fa163e52c3cd
  -> /var/log/ceph

/var/lib/ceph/385580f8-78e3-11f0-9d7f-fa163e52c3cd/crash
  -> /var/lib/ceph/crash

直接查看根目录

text
1
2
podman exec -it $(podman ps -q --filter name=ceph-exporter) ls -lah /var/run/ceph
ceph-client.ceph-exporter.ph161svr020010.asok

结论:宿主机 OSD socket:存在,ceph-exporter 容器看不到