所以我有两个度量,我需要从第一个度量中获取标签值,然后查询第二个度量,其中{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(),所以我不能编写一个为我这样做的查询。
发布于 2021-03-24 09:46:55
好吧,终于,我明白了。所以,正如普拉克·康蒂建议的那样,我使用了group_left。然而,它返回错误:不允许多对多的计算。所以我所做的:
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"}我确实理解这个查询是无效的,但是它对我是有效的。如果有人能帮助并使这个查询更有效率,我将非常感激。顺便说一句:在这里,group_left()括号中的内容并不重要,因为它只影响我们显示的标签,对我来说并不重要,所以label_replace(metric_2,"host","$1","domain", "(.+)") + on (host) group_left() 0*metric_1{instance="abc"}也能工作。
https://stackoverflow.com/questions/66746366
复制相似问题