我在试着让ECS服务发现号和普罗米修斯合作。
目前,我的ECS容器被添加到路由53,如下所示:
+-----------------------------------------------+------+--------------------------------------------------------+
| Name | Type | Value |
+-----------------------------------------------+------+--------------------------------------------------------+
| my-service.local. | SRV | 1 1 8080 123456-7890-1234-5678-12345.my-service.local. |
| 123456-7890-1234-5678-12345.my-service.local. | A | 10.0.11.111 |
+-----------------------------------------------+------+--------------------------------------------------------+我假设如果我将更多的运行容器添加到ECS中,我会在路径53中获得更多的别名记录,名称为123456-7890-1234-5678-12345.my-service.local.
在我的Prometheus配置文件中,我在scrape_config下提供了以下内容
- job_name: 'cadvisor'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'my-service.local'
type: 'SRV'但是,当我在Prometheus中检查目标状态时,我看到以下内容:
Endpoint: http://123456-7890-1234-5678-12345.my-service.local:8080/metrics
State: Down
Error: context deadline exceeded我不熟悉DNS服务发现是如何处理SRV记录的,所以我不确定问题具体出在哪里。看一下AWS ECS Service Discovery是如何添加记录的,它看起来像是my-service.local映射到123456-7890-1234-5678-12345.my-service.local:8080
然而,看起来普罗米修斯并没有试图找到映射到123456-7890-1234-5678-12345.my-service.local的本地it列表,而只是试图直接从其中抓取。
有没有什么配置选项是我错过了让它工作的,还是我在根本层面上误解了什么?
发布于 2018-10-11 10:27:31
原来问题是我需要添加一个安全组规则来允许我的Prometheus实例与我的ECS集群通信,因为它们都在一个公共子网中。
此外,在ECS集群中向上扩展所需的计数会在路由53中创建另一个SRV记录和一个关联的A记录(而不是像我之前认为的那样只是一个额外的A记录)。
现在一切似乎都正常了。
发布于 2020-09-26 19:13:36
使用类似Consul或ECS SD的“适当”服务发现的一个相当好的替代方案是依赖于AWS API。只要容器/任务的总数保持在几千个以下,这就是合适的,因为您受到AWS API请求上限的限制。
存在许多结合Prometheus文件发现来提供此功能的工具。例如https://pypi.org/project/prometheus-ecs-discoverer/或https://github.com/teralytics/prometheus-ecs-discovery
https://stackoverflow.com/questions/52738249
复制相似问题