PromtQL函数“计数为(参数1,参数2)”

时间:2019-05-22 14:36:42

标签: prometheus

我在Prometheus(PromQL)中写了一些请求,只是想了解一下,“ count by(argument1,arguments2)”功能是如何工作的? 如果我们有一个参数-很简单,但是我找不到很多参数的计数依据。

有人可以解释吗?

1 个答案:

答案 0 :(得分:0)

PromQL中的aggregation operators正在沿维度累积指标的值。在Prometheus中,尺寸由标签名称和值表示;所有带有same value on the same label的指标都有一个共同的维度。

如果不保留尺寸,则将对所有值进行汇总,并丢弃所有标签。

通过示例,给出以下指标(冰箱的内容):

fruit_number{name="apple",color="red",size="small"}             2
fruit_number{name="apple",color="green",size="big"}             1
fruit_number{name="banana",color="green",size="small"}          1
vegetable_number{name="salad",color="green",size="big"}         1
vegetable_number{name="mushroom",color="red",size="small"}      3

所有水果和蔬菜sum(fruit_number OR vegetable_number)的总和将产生一个标量:

{}     8

但是,如果您只想在某些维度上应用运算符,则可以使用by子句来指示应保留哪些标签。

采用相同的指标,如果我想通过colorsize来了解易腐食物的数量,我将请求sum(fruit_number OR vegetable_number) by (color,size)

{color="red",size="small"}      5
{color="green",size="big"}      2
{color="green",size="small"}    1

它会汇总标签集相同的值并应用运算符(在这种情况下为sum

  • {color="red",size="small"} -> red apple + mushroom
  • {color="green",size="big"} -> green apple + salad
  • {color="green",size="small"} -> banana