首页 > 解决方案 > 让 node_exporter 容器访问主机的网络统计信息

问题描述

我想在容器中使用 prometheus 的 node_exporter,同时也可以访问主机网络的统计信息。由于我也在容器中使用 prometheus 和其他模块,例如 alertmanager 或 mysql-exporter,我不想简单地使用主机网络,因为那样我将无法轻松地将 prometheus 连接到 node-exporter以一致的方式,鉴于 prometheus 也部署为容器。我想使用 docker 逻辑(按名称识别服务)。这是 docker-compose 的相关部分:

             node_exporter:
                build: "/root/prometheus-stack/node_exporter"
                image: node_exporter:v0.18.1
                volumes:
                  - /proc:/host/proc:ro
                  - /sys:/host/sys:ro
                  - /:/rootfs:ro
                command:
                    - '--log.level=debug'
                    - '--path.procfs=/host/proc'
                    - '--path.sysfs=/host/sys'
                    - '--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)($$|/)'
                networks:
                  - back-tier
                restart: always

如您所见,我正在挂载 /proc 伪文件系统,但不幸的是,我看到的统计信息仅限于容器的统计信息,而不是主机的统计信息。所以我总是会看到 eth0,例如,它是从内部看到的容器的接口。有什么办法可以解决这个问题,以便我拥有一个完全容器化的 prometheus 堆栈?另一个解决方案是 cadvisor,它使用 docker 的套接字,例如,我可以通过它获取服务器主网络接口的网络统计信息。但这不是很好。

在服务器上,我还拥有容器化的反向代理,因此直接在主机上安装 prometheus 及其模块会更加困难。

那么有什么想法可以让我顺利地访问节点导出器以访问主机的网络统计信息吗?

谢谢!

标签: dockernetworkingprometheus-node-exporter

解决方案


推荐阅读