如何从联合端点抓取所有指标?
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:.*"
也一样。
【讨论】:
以上是关于如何从联合端点抓取所有指标?的主要内容,如果未能解决你的问题,请参考以下文章
托管应用程序的 Google 联合登录 (OpenID+Oauth) - 更改端点?
托管应用程序的 Google 联合登录 (OpenID+Oauth) - 更改端点?