我的问题是对Prometheus dns service discovery in docker swarm的补充。
我定义普罗米修斯刮擦目标如下:
- job_name: 'node-exporter'
dns_sd_configs:
- names:
- 'tasks.nodeexporter'
type: 'A'
port: 9100
这可以正常工作,但是会使用docker容器的IP作为实例标签来产生普罗米修斯。
我尝试如下重新标记实例标签:
relabel_configs:
- source_labels: [__meta_dns_name]
target_label: instance
但是这样做会导致node-exporter的所有实例具有相同的标签“ tasks.nodeexporter”。
是否可以以某种方式将实例标签重新标记为task.nodexporter_1,tasks.nodeexporter_2,...?
答案 0 :(得分:1)
在Prometheus中,对docker swarm设置的服务发现没有很好的支持,因为swarm方面缺少许多功能。
dns服务发现是缓解这些缺失功能的一种方法,但我认为这不是一个好的解决方案,我建议不要在生产中使用它:
这些问题一起使这种方法无法成为监视系统的可靠来源。
如果您真的想使用docker swarm,则应考虑通过编程方式查询docker api并使用Prometheus的file_sd服务发现机制来构建更可持续的解决方案。请通过containersolutions查看此poc以供参考:https://github.com/ContainerSolutions/prometheus-swarm-discovery