node_exporter 无法导出特定的 volume/mount 点指标 - 错误="permission denied"
node_exporter unable to export specific volume/mount point metrics - err="permission denied"
我们服务器上有 3 个磁盘
- /dev/nvme2n1p1 对于 root
- /dev/nvme0n1/数据
- /dev/nvme1n1 对于 /data/postgresql/12/main/pg_wal
节点导出器可以将前 2 个挂载点的所有指标导出到 Prometheus 服务器,但对于第三个 (nvme1n1) 少数指标,它将无法导出。
它仍然可以为第 3 个导出以下指标
curl "http://localhost:9100/metrics"|grep nvme1n1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0node_disk_discard_time_seconds_total{device="nvme1n1"} 0
node_disk_discarded_sectors_total{device="nvme1n1"} 0
node_disk_discards_completed_total{device="nvme1n1"} 0
node_disk_discards_merged_total{device="nvme1n1"} 0
node_disk_io_now{device="nvme1n1"} 0
node_disk_io_time_seconds_total{device="nvme1n1"} 21338.728
node_disk_io_time_weighted_seconds_total{device="nvme1n1"} 56694.8
node_disk_read_bytes_total{device="nvme1n1"} 8.1892795904e+11
node_disk_read_time_seconds_total{device="nvme1n1"} 4943.992
node_disk_reads_completed_total{device="nvme1n1"} 3.130765e+06
node_disk_reads_merged_total{device="nvme1n1"} 1948
node_disk_write_time_seconds_total{device="nvme1n1"} 83561.291
node_disk_writes_completed_total{device="nvme1n1"} 1.5033066e+07
node_disk_writes_merged_total{device="nvme1n1"} 2.85686e+06
node_disk_written_bytes_total{device="nvme1n1"} 3.1148191744e+12
node_filesystem_device_error{device="/dev/nvme1n1",fstype="ext4",mountpoint="/data/postgresql/12/main/pg_wal"} 1
100 84365 0 84365 0 0 13.4M 0 --:--:-- --:--:-- --:--:-- 13.4M
但它将无法发布以下指标
node_filesystem_size_bytes
node_filesystem_avail_bytes
node_filesystem_free_bytes
这是调试日志中的错误:
Nov 12 14:39:10 host1 node_exporter[20020]: level=debug ts=2020-11-12T09:09:10.701Z caller=filesystem_linux.go:94 collector=filesystem msg="Error on statfs() system call" rootfs=/data/postgresql/12/main/pg_wal err="permission denied"
请指教这里有什么问题。谢谢
它可能对某人有帮助!
对该路径中的所有目录(/pg-data、/pg-data/postgresql、/pg-data/postgresql/12 等)提供 +rx – 所有 (a+rx) 或拥有它们的组并将节点导出器添加到该组。这不是安全问题,因为它允许任何人/该组 ls -l
目录但不能访问其中的文件,除非这些文件的权限太宽。
我尝试了以下选项:
- 如果我更新 /pg-data/postgresql/12/main 文件夹的权限 (a+rx),那么 postgres 服务将不会启动。
- 我试过将 node_exporter 用户添加到 postgres 组,但没有效果。
由于上述步骤没有帮助我,所以 运行 node_exporter 以 root 用户(systemd 单元)的身份服务做了一个技巧。
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
感谢MATT
指标现在在 Grafana 中可见。
我们服务器上有 3 个磁盘
- /dev/nvme2n1p1 对于 root
- /dev/nvme0n1/数据
- /dev/nvme1n1 对于 /data/postgresql/12/main/pg_wal
节点导出器可以将前 2 个挂载点的所有指标导出到 Prometheus 服务器,但对于第三个 (nvme1n1) 少数指标,它将无法导出。
它仍然可以为第 3 个导出以下指标
curl "http://localhost:9100/metrics"|grep nvme1n1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0node_disk_discard_time_seconds_total{device="nvme1n1"} 0
node_disk_discarded_sectors_total{device="nvme1n1"} 0
node_disk_discards_completed_total{device="nvme1n1"} 0
node_disk_discards_merged_total{device="nvme1n1"} 0
node_disk_io_now{device="nvme1n1"} 0
node_disk_io_time_seconds_total{device="nvme1n1"} 21338.728
node_disk_io_time_weighted_seconds_total{device="nvme1n1"} 56694.8
node_disk_read_bytes_total{device="nvme1n1"} 8.1892795904e+11
node_disk_read_time_seconds_total{device="nvme1n1"} 4943.992
node_disk_reads_completed_total{device="nvme1n1"} 3.130765e+06
node_disk_reads_merged_total{device="nvme1n1"} 1948
node_disk_write_time_seconds_total{device="nvme1n1"} 83561.291
node_disk_writes_completed_total{device="nvme1n1"} 1.5033066e+07
node_disk_writes_merged_total{device="nvme1n1"} 2.85686e+06
node_disk_written_bytes_total{device="nvme1n1"} 3.1148191744e+12
node_filesystem_device_error{device="/dev/nvme1n1",fstype="ext4",mountpoint="/data/postgresql/12/main/pg_wal"} 1
100 84365 0 84365 0 0 13.4M 0 --:--:-- --:--:-- --:--:-- 13.4M
但它将无法发布以下指标
node_filesystem_size_bytes
node_filesystem_avail_bytes
node_filesystem_free_bytes
这是调试日志中的错误:
Nov 12 14:39:10 host1 node_exporter[20020]: level=debug ts=2020-11-12T09:09:10.701Z caller=filesystem_linux.go:94 collector=filesystem msg="Error on statfs() system call" rootfs=/data/postgresql/12/main/pg_wal err="permission denied"
请指教这里有什么问题。谢谢
它可能对某人有帮助!
对该路径中的所有目录(/pg-data、/pg-data/postgresql、/pg-data/postgresql/12 等)提供 +rx – 所有 (a+rx) 或拥有它们的组并将节点导出器添加到该组。这不是安全问题,因为它允许任何人/该组 ls -l
目录但不能访问其中的文件,除非这些文件的权限太宽。
我尝试了以下选项:
- 如果我更新 /pg-data/postgresql/12/main 文件夹的权限 (a+rx),那么 postgres 服务将不会启动。
- 我试过将 node_exporter 用户添加到 postgres 组,但没有效果。
由于上述步骤没有帮助我,所以 运行 node_exporter 以 root 用户(systemd 单元)的身份服务做了一个技巧。
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
感谢MATT
指标现在在 Grafana 中可见。