遇到在数据中心运行且受服务器大小限制的情况。我在一台服务器上运行一个普罗米修斯实例和一个导出器。出口商的目标数量很大,有数千个。这对服务器来说负载太大,我无法扩展。但是,我可以添加更多相同大小的服务器。
我想我可以将多个相同的Prom实例与每个实例上的导出器联合并运行(就像我当前的设置一样(,并将它们输入到Leader Prom实例中。然而,我正在抓取一长串目标,Prom实例没有使用太多资源,导出器使用了更多的资源(85%的资源由导出器使用(。因此,设置几个相同的导出器,每个导出器都在自己的服务器上,然后使用我的单个Prom实例将列表中的1/3目标发送到每个导出器服务器,这可能是有意义的。
这与联合用例有点不同,因为我更喜欢不运行多个Prom服务器。此外,生成了带有目标列表的文件,很难将其拆分为多个文件,否则我可以在prometheus.yml中创建不同的作业,其中每个作业都使用指向一个唯一文件的file_sd_configs,该文件包含1/3的目标(如targets1.json、targets2.json和targets3.json(
理想情况下,我希望为file_sd_configs有一个文件,"targets.json",然后使用重新标记/hashmod(或其他什么?(将这些文件平分,并将子集发送到特定的服务器。这是可能的吗?
将其添加到您的relabel配置中:
- source_labels: [instance]
modulus: 4 # 4 replicas
target_label: __tmp_hash
action: hashmod
- source_labels: [__tmp_hash]
regex: ^1$ # This is the 2nd replica
action: keep
每个复制副本一个,每个复制副本有一个不同的__address__
。
另一种选择是使用负载均衡器。