You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Swarm中容器化node-exporter监控主机流量的可行方案咨询

解决Docker Swarm环境下主机网络流量监控问题

核心问题定位

你当前的配置存在镜像误用的致命错误:使用了ubuntu/alertmanager镜像(这是Prometheus的告警组件),而非node-exporter镜像,这直接导致无法正确采集主机网络指标。此外,部分参数和挂载配置也需要调整以适配主机流量采集需求。

正确的Docker Swarm部署配置

以下是经过验证的node-exporter全局部署配置,确保采集主机而非容器的网络流量:

services:
  node_exporter:
    image: prom/node-exporter:latest
    pid: "host"
    networks:
      - my-proxy-public
    volumes:
      - /sys:/host/sys:ro
      - /proc:/host/proc:ro
      - /:/rootfs:ro
      - /etc/hostname:/etc/nodename:ro
    deploy:
      mode: global
      resources:
        limits:
          memory: 128M
        reservations:
          memory: 64M
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
      - '--collector.netclass.ignored-devices=^(veth|docker0|br-).*'
      - '--no-collector.ipvs'

关键配置说明

  • 镜像修正:使用官方prom/node-exporter镜像,确保是正确的主机指标采集工具。
  • pid: host:让容器共享主机的PID命名空间,确保能访问主机的网络资源。
  • 挂载目录:正确挂载主机的/proc、/sys和根文件系统,保证node-exporter能读取主机的网络统计数据。
  • 忽略容器网卡:通过--collector.netclass.ignored-devices参数过滤掉容器相关的虚拟网卡(如veth开头、docker0、网桥设备),只保留主机物理网卡的指标。
  • 全局部署:mode: global确保Swarm集群的每台主机都运行一个node-exporter实例,实现全集群主机监控。

指标验证

部署完成后,访问node-exporter的metrics端点(默认http://<主机IP>:9100/metrics),查找node_network_receive_bytes_total指标,确认其device标签为你的主机物理网卡(如eth0、ens33),而非容器虚拟网卡,此时该指标即为主机的入站流量统计。

关于/var/run/netns目录的说明

该目录仅在主机启用了网络命名空间隔离时才会存在,若你的主机未配置相关功能,无需挂载此目录,node-exporter通过/proc/net和/sys/class/net即可获取主机网卡的流量数据。

内容的提问来源于stack exchange,提问作者Mefitico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:17:25