如何将目标的单一列表从一个Prometheus服务器联合到多个相同的出口商?

时间:2018-12-15 20:52:17

标签: prometheus exporter

遇到一种情况,我正在数据中心中运行,并且受到服务器大小的限制。我在一台服务器上运行一个Prometheus实例和一个导出器。出口商的目标数量很多,成千上万。这对于服务器来说负担太大,我无法扩大规模。但是,我可以添加更多相同大小的服务器。

我认为我可以与每个导出器联合并运行多个相同的Prom实例(例如我当前的设置),并将其馈入Leader Prom实例。但是,我正在抓取一长串目标,并且Prom实例没有使用很多资源,出口商正在使用更多资源(85%的资源供出口商使用)。因此,有可能在每个服务器上都设置几个相同的导出器,然后使用我的单个Prom实例将列表中的1/3目标发送到每个导出器服务器。

这与联合用例有些不同,因为我希望不运行多个Prom服务器。此外,还会生成带有目标列表的文件,很难将其拆分为多个文件,否则我可以在prometheus.yml中创建不同的作业,其中每个作业都使用file_sd_configs指向包含1/3的唯一文件的文件。目标(例如target1.json,targets2.json,targets3.json)

理想情况下,我想为file_sd_configs创建一个文件“ targets.json”,然后使用relabeling / hashmod(或其他东西)将它们平均分配,并将子集发送到特定服务器。这可能吗?

1 个答案:

答案 0 :(得分:0)

将此添加到您的重新标记配置中:

- 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__

另一个选择是使用负载均衡器。