如何在 Docker 内解析 Prometheus Node Exporter `node_filesystem_device_error` 并收集文件系统指标?
How to resolve Prometheus Node Exporter `node_filesystem_device_error` within Docker and collect filesystem metrics?
我在 Docker 容器内 运行ning Prometheus Node Exporter 并希望它报告文件系统 space Docker 上文件系统的使用信息容器的主机。
对于我的大多数文件系统,除了表示指标收集失败的 node_filesystem_device_error
指标外,大多数文件系统指标都不存在。
这可以通过 运行直接在主机上安装 node_exporter
二进制文件来解决,但我想 运行 通过 Docker 我的整个可观察性基础设施。
要从节点导出器 Docker 容器中发出主机文件系统指标,容器需要将主机的 /
路径绑定挂载到容器路径,例如 /rootfs
。然后,node-exporter 需要使用命令行参数 --path.rootfs=/rootfs
启动,以便它知道在哪里可以找到文件系统。
Prometheus 节点导出器的完整 Docker Compose / Docker Swarm 配置如下。它还配置为报告有关主机网络配置的统计信息。
version: "3.9"
services:
node_exporter:
image: prom/node-exporter:v1.0.1
ports:
- target: 9100
published: 9100
protocol: tcp
mode: host
volumes:
# Remember to use read-only bind mounts.
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- "--web.listen-address=:9100"
- "--path.procfs=/host/proc"
- "--path.sysfs=/host/sys"
- "--path.rootfs=/rootfs" # Necessary for collecting host filesystem metrics.
- "--collector.filesystem.ignored-mount-points='^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)'"
deploy:
mode: global
# This listens to port 9100 ON THE HOST.
# This container does not have its own IP address.
# Binding to the host is necessary for node-exporter to collect accurate
# networking statistics about the host.
networks:
default:
external: true
name: host
我在 Docker 容器内 运行ning Prometheus Node Exporter 并希望它报告文件系统 space Docker 上文件系统的使用信息容器的主机。
对于我的大多数文件系统,除了表示指标收集失败的 node_filesystem_device_error
指标外,大多数文件系统指标都不存在。
这可以通过 运行直接在主机上安装 node_exporter
二进制文件来解决,但我想 运行 通过 Docker 我的整个可观察性基础设施。
要从节点导出器 Docker 容器中发出主机文件系统指标,容器需要将主机的 /
路径绑定挂载到容器路径,例如 /rootfs
。然后,node-exporter 需要使用命令行参数 --path.rootfs=/rootfs
启动,以便它知道在哪里可以找到文件系统。
Prometheus 节点导出器的完整 Docker Compose / Docker Swarm 配置如下。它还配置为报告有关主机网络配置的统计信息。
version: "3.9"
services:
node_exporter:
image: prom/node-exporter:v1.0.1
ports:
- target: 9100
published: 9100
protocol: tcp
mode: host
volumes:
# Remember to use read-only bind mounts.
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- "--web.listen-address=:9100"
- "--path.procfs=/host/proc"
- "--path.sysfs=/host/sys"
- "--path.rootfs=/rootfs" # Necessary for collecting host filesystem metrics.
- "--collector.filesystem.ignored-mount-points='^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)'"
deploy:
mode: global
# This listens to port 9100 ON THE HOST.
# This container does not have its own IP address.
# Binding to the host is necessary for node-exporter to collect accurate
# networking statistics about the host.
networks:
default:
external: true
name: host