Prometheus 普罗米修斯:按度量名称对度量进行分组

Prometheus 普罗米修斯:按度量名称对度量进行分组,prometheus,Prometheus,有没有办法按度量名称对应用程序的所有度量进行分组?查询中列出应用程序(即{app=“bar”})所有指标的部分: 我还尝试在度量名称中使用通配符,普罗米修斯对此表示不满。查看指标,我可以看到其中一些指标有动态名称,很可能是由dropwizard指标提供的。我最终想要的是所有可用指标的列表。{{uuuuu name\uuuuu=~“+”}将返回所有非陈旧的时间序列,但是这是一个昂贵的查询,通常应该避免。我从@brian brazil的回答中得到了一个提示,并找到了一个解决方案。以下查询列出了所有可

有没有办法按度量名称对应用程序的所有度量进行分组?查询中列出应用程序(即
{app=“bar”}
)所有指标的部分:


我还尝试在度量名称中使用通配符,普罗米修斯对此表示不满。查看指标,我可以看到其中一些指标有动态名称,很可能是由dropwizard指标提供的。我最终想要的是所有可用指标的列表。

{{uuuuu name\uuuuu=~“+”}
将返回所有非陈旧的时间序列,但是这是一个昂贵的查询,通常应该避免。

我从@brian brazil的回答中得到了一个提示,并找到了一个解决方案。以下查询列出了所有可用指标:

sum by(__name__)({app="bar"})
其中,
bar
是应用程序名称,您可以在问题中发布的日志条目中看到。

直接使用

{__name__=~".+"}
将返回
success
,但不会返回其他内容(太大)

while将按预期为我们提供
错误

parse error at char 17: vector selector must contain at least one non-empty matcher
所以我的技巧是结合brian brazil和naimdjon的解决方案

sum({__name__=~"c.*|e.*|n.*|p.*|r.*|k.*|z.*|r.*"}) by (__name__)
  • 因为我知道可能的
    前缀
    ,所以我将它们添加到查询中,以确保至少它会返回一些东西;而且,

  • 为了避免返回无用的字段(强调普罗米修斯),我只需要
    \uuuuuu name\uuuuuuu
    ,通过(\uuuu name\uuuuu),按预期返回所有需要的度量名称

  • 实际上,有一个
    API
    来获取所有可用的度量名称,如下所示:

    /api/v1/label/__name__/values
    

    你说的分组是什么意思?你最终想做什么?我的意思是,我找到了所有可用的指标。是的,但这只是为了找出哪些指标存在。我尝试了这个查询。执行查询时出错:网关超时。执行查询时出错:参数“query”无效:1:1:解析错误:度量名称不能设置两次:“metric_name”或“+”。我会在答案顶部以粗体显示最后一部分。我对此表示赞同。最后一个例子是perfect
    {{{{uuuuuu name}=~“*”}
    只需使用“+”
    sum({__name__=~"c.*|e.*|n.*|p.*|r.*|k.*|z.*|r.*"}) by (__name__)
    
    /api/v1/label/__name__/values