首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prometheus:如何在查询中获取label_value()

Prometheus:如何在查询中获取label_value()
EN

Stack Overflow用户
提问于 2021-03-22 12:46:50
回答 2查看 10.3K关注 0票数 2

所以我有两个度量,我需要从第一个度量中获取标签值,然后查询第二个度量,其中{param="label_values_from_1st_metric"}。前任:

metric_1{instance="abc"} -返回3个timeseries:

metric_1{name="my-service", env="production", host="example-0.org"}

metric_1{name="my-service", env="production", host="example-1.org"}

metric_1{name="my-service", env="production", host="example-2.org"}

接下来,我需要使用第一次查询中的主机值对第二个度量进行查询。

metric_2{domain="exmple-0,1,2.org"}

所以问题是,我如何将label_values传递给第二个查询?据我所知,我只能对grafana面板中的变量使用label_values(),所以我不能编写一个为我这样做的查询。

EN

Stack Overflow用户

回答已采纳

发布于 2021-03-24 09:46:55

好吧,终于,我明白了。所以,正如普拉克·康蒂建议的那样,我使用了group_left。然而,它返回错误:不允许多对多的计算。所以我所做的:

  1. metric_1和metric_2之间的标签不匹配,但是修复它非常简单,我们需要添加label_replace() func label_replace(metric_2,"host","$1","domain", "(.+)")。此表达式使用从label域复制的值添加到metric_2标签主机。从我们的角度来看,我们刚刚将label域重命名为label主机。这是个好消息,因为现在metric_1和metric_2有一个共同的标签--主机。因此,这个步骤中的查询如下所示: label_replace(metric_2,"host","$1","domain", "(.+)") + on (host) group_left(domain) metric_1{instance="abc"}
  2. 现在,我们的查询至少不会重现任何错误,但是,它返回意外的结果--这是因为它将来自metric_2的值与来自metric_1的值相乘。

我确实理解这个查询是无效的,但是它对我是有效的。如果有人能帮助并使这个查询更有效率,我将非常感激。顺便说一句:在这里,group_left()括号中的内容并不重要,因为它只影响我们显示的标签,对我来说并不重要,所以label_replace(metric_2,"host","$1","domain", "(.+)") + on (host) group_left() 0*metric_1{instance="abc"}也能工作。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66746366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档