我在Prometheus(PromQL)中写了一些请求,只是想了解一下,“ count by(argument1,arguments2)”功能是如何工作的? 如果我们有一个参数-很简单,但是我找不到很多参数的计数依据。
有人可以解释吗?
答案 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
子句来指示应保留哪些标签。
采用相同的指标,如果我想通过color
和size
来了解易腐食物的数量,我将请求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