docker - 让 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 及其模块会更加困难。
那么有什么想法可以让我顺利地访问节点导出器以访问主机的网络统计信息吗?
谢谢!
解决方案
推荐阅读
- java - 垃圾收集器 (GC) 是只收集对象还是覆盖它存储的数据?
- oracle - 如何将时间转换为小时(十进制)?
- angular8 - 检查后表达式已更改。以前的值:'mat-focused: false'。当前值:'mat-focused: true'。在角度 8?
- json - 为什么在 Postman 中解析 JSON 可以,但在使用 Python3 requests 模块时却不行?
- c# - 如何在 Azure Devops 上使用 SQL Server Data Tools 和配置 CI/CD 到 Azure 云?
- reactjs - react router 改变了url,但是组件没有渲染
- scala - 类型从隐式类中删除
- c# - 如何在表达式树 C# 中使用运行时生成的类型
- java - Springboot - AWS Elasticbeanstalk - 资源无法解析
- mysql - 不能删除唯一约束