在ECS中对Docker任务进行Prometheus度量刮

a_z*_*a_z 5 amazon-web-services amazon-ecs docker prometheus

我在ECS中有多个集群,每个集群都有多个服务,每个服务运行多个任务。每个任务/metrics在随机端口上公开不同的值。我想进行某种动态发现并废弃这些度量标准(每个任务具有不同的端口和IP,因为它们在多个容器实例上运行),将来自同一服务的任务度量标准组合在一起,并使用Prometheus对其进行废弃。我应该怎么做?

Mos*_* B. 3

我们面临同样的挑战,有两种方法:

  1. 根据运行任务给EC2实例打上标签,然后根据标签在Prometheus中查找EC2实例。当我们每个实例只有一个任务时,这种方法效果很好,因为指标端口是已知的。可能有一些方法可以扩展它并支持多项任务。
  2. 每个 EC2 实例运行一个任务,该实例用作该实例上运行的所有任务的导出器。它询问 ECS,找到任务和每个任务的侦听端口,并抓取所有任务。然后,在 Prometheus 中,您可以找到集群中的所有 EC2 实例,并在每个实例中抓取此导出器。显然,您需要根据读取的任务来标记指标。

如果我必须再做一次,我会考虑使用 Consul 来注册任务并在 Prometheus 中发现它们。如果您已经在使用 Consul,那么这个方向可能是一个不错的尝试。

希望这可以帮助。