首页 > 解决方案 > docker内的prometheus没有刮取node_exporter

问题描述

我使用他们页面上的官方指南安装了 prometheus 和 docker 。现在我也有node_exporter在主机上工作。然而普罗米修斯似乎并没有抓取它的指标。

我使用以下方法运行普罗米修斯:

sudo docker run -d -p 9090:9090 -v /home/main/prometheus/config.yml:/etc/prometheus/prometheus.yml prom/prometheus

  - job_name: node
    static_configs:
      - targets: ['localhost:9100']
curl -i localhost:9100
HTTP/1.1 200 OK

Content-Length: 150
Content-Type: text/html; charset=utf-8

<html>
<head><title>Node Exporter</title></head>
<body>
<h1>Node Exporter</h1>
<p><a href="/metrics">Metrics</a></p>
</body>
</html>

在此处输入图像描述

更新

显然,这是在 docker 上运行时使用“-net=host”标志修复的: sudo docker run --net=host -d -p 9090:9090 -v /home/main/prometheus/config.yml:/etc/prometheus/prometheus.yml prom/prometheus

为什么他们不告诉这件事?没有这个标志,Prometheus 不能访问其容器之外的任何东西?

标签: dockerprometheus

解决方案


在文档中,示例假定 Prometheus 和节点导出器在同一主机上运行。在您的情况下,Prometheus 在 docker 上运行,这意味着节点导出器位于容器外部。

您应该尝试使用容器名称、IPhost.docker.internal或类似名称来达到您的目标。


推荐阅读