【问题标题】:prometheus cannot reach node exporterprometheus 无法访问节点导出器
【发布时间】:2020-07-09 10:15:02
【问题描述】:

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

但我无法从 prometheus 网络浏览器获取 node_export 指标:

顺便说一下prometheus读取yml文件:

我做错了什么?

UDP:很好,似乎 localhost:9100 无法访问

【问题讨论】:

    标签: docker prometheus prometheus-node-exporter


    【解决方案1】:

    这是因为在 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

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 2019-02-03
      • 2019-08-14
      相关资源
      最近更新 更多