1

我正在学习 prometheus 和 node_exporter 并尝试通过 docker 在本地设置它们。我从这个https://hub.docker.com/r/prom/node-exporter和这个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

在运行 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 网络浏览器获取 node_export 指标:

在此处输入图像描述

顺便prometheus读取yml文件: 在此处输入图像描述

我做错了什么?

UDP:很好,似乎 localhost:9100 无法访问 在此处输入图像描述

4

1 回答 1

3

发生这种情况是因为在 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相互访问。

于 2020-07-09T11:22:08.070 回答