我们有一个分层的 prometheus 设置,其中一些服务器抓取其他服务器。我们想让一些服务器从其他服务器那里抓取所有指标。
目前我们尝试match[]="{__name__=~".*"}"
用作度量选择器,但这给出了错误parse error at char 16: vector selector must contain at least one non-empty matcher
。
有没有办法从远程普罗米修斯抓取所有指标而不将每个(前缀)列为匹配选择器?
我们有一个分层的 prometheus 设置,其中一些服务器抓取其他服务器。我们想让一些服务器从其他服务器那里抓取所有指标。
目前我们尝试match[]="{__name__=~".*"}"
用作度量选择器,但这给出了错误parse error at char 16: vector selector must contain at least one non-empty matcher
。
有没有办法从远程普罗米修斯抓取所有指标而不将每个(前缀)列为匹配选择器?
是的,您可以这样做:(match[]="{__name__=~".+"}"
注意,+
而*
不是与空字符串不匹配)。
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:.*"}
。