gpt4 book ai didi

docker - docker : Host networking vs hostnames 中的 Prometheus node_exporter

转载 作者:行者123 更新时间:2023-12-05 02:43:58 26 4
gpt4 key购买 nike

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

  • 使用与 prometheus 相同的桥接 docker 网络
    • 优点:由于 docker 的内部 DNS,nodeexporter 可以直接通过名称寻址
    • 缺点:node_network_transmit_bytes_total 指标只有 docker 的虚拟内部 NIC,没有被监控机器的物理 NIC。这是从主机绑定(bind)挂载/proc到容器中的/host/proc(具体我的物理接口(interface)是eno0,可见/proc/net/dev 在主机上:
      $ docker exec -it nodeexporter2 cat /host/proc/net/dev | awk '{print $1}'
      Inter-|
      face
      eth0:
      lo:
  • 为 nodeexporter 使用主机模式网络
    • 优点:所有 NIC,包括物理主机 NIC,都是可见的
    • 缺点:prometheus 似乎没有一种干净的方式来处理 nodeexporter:
      • localhost 表示 prometheus 本身
      • 主机的主机名似乎无法访问?运行 docker exec -it prometheus wget -O - http://actual-hostname:9100/metrics 有效(并使用我主机的 LAN IP,192.168.x.x),但配置 actual-hostname :9100 作为 prometheus 目标给出错误(Get "http://actual-hostname:9100/metrics": dial tcp 127.0.1.1:9100: connect: connection refused)。我不确定为什么他们的解决方式不同。
      • 我最终做的是模拟可用于 docker-on-windows 和 docker-on-mac 的 host.docker.internal 功能,方法是将其添加到我的 docker-compose。 yml:
        extra_hosts:
        - "host.docker.internal:172.18.0.1"
        然而,这非常脆弱:172.18 最近是 172.19;我相信它在重启或 docker 版本升级时发生了变化。我很想能够将 extra_hosts 设置为在主机上运行一些脚本以确定正确的网络名称的结果,但这不会在启动时自动重新运行。

有什么建议吗?

最佳答案

后期编辑:感谢thomas ,原来有一个神奇的主机 host-gateway 可以做到这一点,所以 extra_hosts: ["host.docker.internal:host-gateway"] 应该可以做到这一点。未记录,但显然已实现 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对node_exporter的目标是host.docker.internal,地址应该是稳定的。

关于docker - docker : Host networking vs hostnames 中的 Prometheus node_exporter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66676204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com