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