使用 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_1
、prod_2
、prod_X
等。
【讨论】:
【参考方案2】:我尝试了很多方法来帮助我们解决这个问题,但它看起来是一个未解决的问题。
因此,我决定创建这个工具来帮助我们进行服务发现。
https://github.com/juliofalbo/docker-compose-prometheus-service-discovery
随时贡献和打开问题!
【讨论】:
以上是关于使用 Prometheus 如何监控每个实例提供自己的 /metrics 的扩展 Docker 服务?的主要内容,如果未能解决你的问题,请参考以下文章