【发布时间】:2017-11-15 18:43:38
【问题描述】:
我有一个带有 Prometheus 容器和 1-n 个用于特定微服务的容器的 Docker Swarm。
可以通过 url 访问微服务容器。我想这个 url 的请求是负载平衡的(当然......)。
目前我已经生成了两个微服务容器。现在查询指标似乎在两个容器之间切换。示例:总请求数:10、13、10、13、10、13、...
这是我的 Prometheus 配置。我需要做什么?我不想在每次杀死或启动微服务容器时调整 Prometheus 配置。
scrape_configs:
- job_name: 'myjobname'
metrics_path: '/prometheus'
scrape_interval: 15s
static_configs:
- targets: ['the-service-url:8080']
labels:
application: myapplication
更新 1 我按如下方式更改了配置,这似乎可行。此配置使用 Docker Swarm 内部的 dns 查找并查找运行指定服务的所有实例。
scrape_configs:
- job_name: 'myjobname'
metrics_path: '/prometheus'
scrape_interval: 15s
dns_sd_configs:
- names: ['tasks.myServiceName']
type: A
port: 8080
这里的问题是:这个配置是否识别出一个 Docker 实例已停止而另一个实例已启动?
更新 2 我要的有一个参数:
scrape_configs:
- job_name: 'myjobname'
metrics_path: '/prometheus'
scrape_interval: 15s
dns_sd_configs:
- names: ['tasks.myServiceName']
type: A
port: 8080
# The time after which the provided names are refreshed
[ refresh_interval: <duration> | default = 30s ]
这应该可以解决问题。
【问题讨论】:
-
您能否直接访问服务,也许在不同的端口上?您是否能够使用服务发现技术,例如 Consul 或 DNS 发现?
-
@TobyJackson:好像你几乎在我通过大量谷歌搜索找到答案的同时给出了“正确”提示:-)
标签: docker dynamic load-balancing prometheus