【问题标题】:Cannot capture client metrics with Prometheus无法使用 Prometheus 捕获客户端指标
【发布时间】:2020-06-25 23:30:33
【问题描述】:

我有一个新手问题。

我正在使用 dockprom (github.com/stefanprodan/dockprom) 成功地从 docker-compose 捕获指标。

现在我正在尝试使用 golang 的 Prometheus 客户端库监控我的应用程序的特定指标,但 Prometheus 将我的端点显示为关闭 (0),并在目标部分显示消息,

Get http://localhost:8090/metrics: dial tcp 127.0.0.1:8090: connect: connection refused

但是,如果我导航到 http://localhost:8090/metrics,我可以看到公开的指标。

Prometheus 在一组 docker-compose 容器中运行,而我的应用程序在另一个容器中运行。

我的端点在 prometheus/prometheus.yml 中的声明是:

job_name: 'cloud_server_auth'

scrape_interval: 10s

static_configs:

targets: ['localhost:8090']

我注意到 cAdvisor 在不在 privileged_mode 下运行时会失败,但即使修复了该问题,我仍然无法让 prometheus 使用我的指标。

有什么想法吗?

提前感谢任何可能对此问题有所了解的人,如果您需要任何进一步的信息,请告诉我。 阿道夫

【问题讨论】:

    标签: docker prometheus


    【解决方案1】:

    如果你在 Docker 容器中运行 Prometheus,那么当 Prometheus 调用其他地方收集指标时,localhost 被解释为相对于 Prometheus 容器,也就是说,Prometheus 正在尝试从自身收集指标.

    如果这一切都在同一个 docker-compose.yml 文件中运行,那么您可以在配置指标目标时使用其他容器的 Docker Compose services: 名称作为主机名。目标容器不一定需要发布ports:,并且您需要使用容器内的进程正在运行的端口号 - 如果您的ports: 将容器端口重新映射到不同的主机端口,请使用 第二个(容器)端口号,而不是第一个(主机)。

    这与同一 docker-compose.yml 文件中的其他服务到服务调用的设置相同。 Networking in Compose有更多关于容器网络环境的细节。

    【讨论】:

    • 感谢您的明确回复。我将 localhost 更改为 host.docker.internal 并解决了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    • 2015-08-09
    • 2021-04-27
    相关资源
    最近更新 更多