【问题标题】:How to scrape all metrics from a federate endpoint?如何从联合端点抓取所有指标?
【发布时间】:2017-01-08 00:15:53
【问题描述】:

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

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

有没有办法从远程 prometheus 抓取所有指标而不将每个(前缀)列为匹配选择器?

【问题讨论】:

    标签: prometheus


    【解决方案1】:

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

    Prometheus 要求标签匹配器集中至少有一个匹配器,但不能匹配所有内容

    【讨论】:

    • 我发现 __name__=~"..*" 在舞会 2.0.0 上运行良好。注意 {} 之外不必要的 "。
    【解决方案2】:

    我尝试了多个示例,甚至是来自 prometheus 文档的示例,但都没有奏效。

    这对我有用

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

    【讨论】:

    • 某些记录规则指标没有标签作业
    【解决方案3】:

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

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

    【讨论】:

    • 感谢您的警告。当我们遇到麻烦时,我会记住这一点,但现在我确信抓取所有指标会很好。当事情解决后,我们会回到聚合前,并且我们可以更好地了解我们需要查找的内容和不需要查找的内容。
    【解决方案4】:

    这是我的配置文件。

    通过此限制,您可以过滤要从哪些导出器(作业)中抓取:

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        【解决方案6】:

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

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

        这个简单的设置收集了所有具有job 的指标。 {__name__=~"job:.*"} 也一样。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-02-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多