普罗米修斯无法到达节点导出器

prometheus cannot reach node exporter

我正在学习 prometheus 和 node_exporter 并尝试通过 docker 在本地设置它们。 我从这个 https://hub.docker.com/r/prom/node-exporter and this https://hub.docker.com/r/prom/prometheus 下载 docker 图像,然后使用命令 运行 下载它们:

docker run -d -p 9100:9100 prom/node-exporter

docker run \
    -d \
    -p 9090:9090 \
    -v /Users/person/sandbox/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus

在运行宁普罗米修斯之前我添加了yml文件:

global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
- job_name: 'node'
  static_configs:
  - targets: ['localhost:9100']

但是prometheus好像无法达到node_export。我看到来自 node_export 的指标 ->

我看到了来自普罗米修斯的指标 ->

但我无法从 prometheus web-browser 中获取 node_export 指标,来自:

顺便prometheus读取yml文件:

我做错了什么?

UDP: 不错,看来 localhost:9100 不可达

发生这种情况是因为在 Prometheus 容器内部,localhost 被解析为容器的环回网络接口。为了缓解这种情况,请在启动这些容器时通过显式指定 --network=host 使用主机网络。使用主机网络时,Docker 不会为容器分配自己的网络命名空间。相反,他们会从他们的主人那里分享它。

或者,更好的方法是创建覆盖网络。

docker network create prom
docker network connect prom <prometheus_container_name>
docker network connect prom <node_exporter_container_name>

创建容器并将其连接到覆盖网络后,应该可以通过它们的 Docker 名称 1.[=14= 相互访问它们]