使用 Prometheus 如何监控每个实例提供自己的 /metrics 的扩展 Docker 服务?

Posted

技术标签:

【中文标题】使用 Prometheus 如何监控每个实例提供自己的 /metrics 的扩展 Docker 服务?【英文标题】:With Prometheus how to monitor a scaled Docker service where each instance serves its own /metrics? 【发布时间】:2019-04-17 22:27:38 【问题描述】:

我有一个 Prometheus 设置,用于监控我自己的服务公开的指标。这适用于单个实例,但是一旦我开始扩展它们,Prometheus 就会完全混淆并开始跟踪不正确的值。

所有服务都通过 docker-compose 在单个节点上运行。

这是scrape_configs中的工作:

  - job_name: 'wowanalyzer'
    static_configs:
    - targets: ['prod:8000']

prod 的每个实例都在其内存中跟踪指标并在/metrics 上提供服务。我猜普罗米修斯每次报废时都会选择一个随机容器,这会导致记录的计数大幅增加,并随着时间的推移而增加。相反,我希望 Prometheus 同时读取所有实例上的/metrics,而不管当时活动的实例数量如何。

【问题讨论】:

也许monitor.dockerflow.com? 我计划通过结合使用 Docker Swarm 和 Prometheus DNS 服务发现来解决此问题,类似于此处解释的内容:airtame.engineering/… Docker Flow Monitor 似乎是一个有效的替代方案,但更复杂。 您找到解决方案了吗?如果有,可以分享一下吗? 我没有。 :( 自从我提出问题以来,它实际上一直处于这种破碎状态。 【参考方案1】:

docker-gen (https://github.com/jwilder/docker-gen) 就是为此目的而开发的。

您需要创建一个运行 docker-gen 的 sidecart 容器来生成一组新的目标。

如果我记得很清楚,生成的主机名是prod_1prod_2prod_X 等。

【讨论】:

【参考方案2】:

我尝试了很多方法来帮助我们解决这个问题,但它看起来是一个未解决的问题。

因此,我决定创建这个工具来帮助我们进行服务发现。

https://github.com/juliofalbo/docker-compose-prometheus-service-discovery

随时贡献和打开问题!

【讨论】:

以上是关于使用 Prometheus 如何监控每个实例提供自己的 /metrics 的扩展 Docker 服务?的主要内容,如果未能解决你的问题,请参考以下文章

实用干货丨如何使用Prometheus配置自定义告警规则

实用干货丨如何使用Prometheus配置自定义告警规则

prometheus使用三(自定义监控指标实现)

Prometheus监控实战系列七:任务与实例

三大实例带你搞定 Prometheus API 使用

Prometheus 监控K8S Node监控