计算标签值并在另一个查询- PromQL中使用它



我正在制作一个Grafana仪表板来显示canary应用程序的性能。我的问题是我需要找出哪些实例是金丝雀(蓝色或绿色)。

Canary stack总是会创建一个实例,要么是蓝色要么是绿色,所以我可以使用下面的查询看到实例的计数,但不能显示绑定度量的值。

(count(绑定(cfstack ="。蓝色。"))= = 1)或(count(绑定(cfstack ="。绿色。"))= = 1)

如何在PromQL中表达以下内容?

if ( count(bound(cfstack=".*Blue.*")) == 1 )
cfstack_val=".*Blue.*"
else 
if ( count(bound(cfstack=".*Green.*")) == 1 )
cfstack_val=".*Green.*"
bound(cfstack="${cfstack_val}")

尝试以下查询:

(bound{cfstack=~".*Blue.*"} and on() (count(bound{cfstack=~".*Blue.*"}) == 1))
or
(bound{cfstack=~".*Green.*"} and on() (count(bound{cfstack=~".*Green.*"}) == 1))

这个查询的工作方式如下:

  1. 如果只有一个时间序列,则选择与bound{cfstack=~".*Blue.*"}匹配的时间序列。
  2. 如果只有一个时间序列,则选择与bound{cfstack=~".*Green.*"}匹配的时间序列。
  3. or操作符的帮助下,返回步骤1和步骤2的结果。

参见orand操作符的文档。

on()修饰符参见这些文档

最新更新