如何从联合端点抓取所有指标?

How to scrape all metrics from a federate endpoint?

我们有一个分层的 prometheus 设置,其中一些服务器抓取其他服务器。 我们想让一些服务器从其他服务器上抓取所有指标。

目前我们尝试使用 match[]="{__name__=~".*"}" 作为指标选择器,但这会产生错误 parse error at char 16: vector selector must contain at least one non-empty matcher

有没有一种方法可以从远程 prometheus 中抓取所有指标,而无需将每个指标(前缀)都列为匹配选择器?

是的,您可以这样做:match[]="{__name__=~".+"}"(注意 + 而不是 * 以不匹配空字符串)。

Prometheus 要求标签匹配器集中至少有一个匹配器不匹配所有

Federation 并非旨在传输所有指标,如果您尝试这样做,您最终会 运行 遇到问题。

相反,汇总您想要的指标,然后仅联合这些指标。

我尝试了多个示例,甚至是 prometheus 文档中的示例,但没有任何效果。

相反,这对我有用

http://prometheus-ip:9090/federate?match[]={job!=""}

这是我的配置文件。

有了这个限制,您可以筛选要抓取的出口商(职位):

  params:
    'match[]':
    - '{job=~"node-exporter|kube-state|fluentbit"}'
    - '{__name__=~"job:.*"}'

将这些添加到您的联邦作业中

    params:
      match[]:
        - '{__name__=~".+"}'
        - '{__name__=~"^job:.*"}'
        - '{job="prometheus"}'
        - '{job="node"}'
        - '{__name__="server_labels"}'

我试图达到相同的配置,在尝试了多种解决方案之后,真正对我有用的是:

params:
  match[]:
    - '{job=~".+"}'

这个简单的设置收集了所有具有 job 的指标。同样不适用于 {__name__=~"job:.*"}.