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

Posted

技术标签:

【中文标题】如何从联合端点抓取所有指标?【英文标题】: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 抓取所有指标而不将每个(前缀)列为匹配选择器?

【问题讨论】:

【参考方案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:.*" 也一样。

【讨论】:

以上是关于如何从联合端点抓取所有指标?的主要内容,如果未能解决你的问题,请参考以下文章

SPARQL 联合查询不返回所有解决方案

托管应用程序的 Google 联合登录 (OpenID+Oauth) - 更改端点?

托管应用程序的 Google 联合登录 (OpenID+Oauth) - 更改端点?

如何从 lambda 访问 cognito 联合身份中的身份数据集

所有可用指标的 Prometheus 端点

Apollo 联合网关背后的 Hasura GraphQL 端点