docker 中的 Prometheus node_exporter:主机网络与主机名

Prometheus node_exporter in docker: Host networking vs hostnames

为了监控小型家庭服务器,我在 docker(类似于 https://github.com/stefanprodan/dockprom)上 运行 prometheus 和 node_exporter(以及 grafana 和其他一些东西)。我 运行 桥接 docker 网络上的普罗米修斯。对于 node_exporter,我有两个选项,它们会影响 node_network_transmit_bytes_total 指标。

有什么建议吗?

后期编辑:感谢thomas, turns out there's a magic host host-gateway that does this, so extra_hosts: ["host.docker.internal:host-gateway"] should do the trick. undocumented, but apparently it's implemented here。并且已经住在 docker 20.10.6(可能更早)。


我最终通过手动配置网络解决了这个问题:

networks:
  monitor-net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.23.0.0/16
          ip_range: 172.23.5.0/24
          gateway: 172.23.5.254

# ...

services:
  nodeexporter:
    network_mode: host
    # ...
  prometheus:
    networks:
      - monitor-net
    extra_hosts:
      - "host.docker.internal: 172.23.5.254"

然后prometheus有host.docker.internal的target为node_exporter,地址应该是稳定的