如何用不同的标签减去指标?

时间:2020-04-01 09:27:55

标签: prometheus

我需要两个不同的指标来计算差异:

totalcurrent{app}

到目前为止有效的表达式:

max total offset 30s - max current{app="myapp"}

这为我提供了一个数字,用于提醒myapp某些进程的速度。

但是,我有多个应用程序。所以我想得到每个应用程序的区别。但是当我尝试通过应用获取最大值时,普罗米修斯不再计算差异,因为两个指标具有不同的标签:

表达 max total offset 30s - max by (app) (current)

输出 {}(无)

那是因为各个计算的结果具有不同的标签:

total{}current{app="someapp"}

我希望会有一个prometheus函数来为total添加标签,以便为所有应用程序生成相同的度量标准(当然,这已经有些讨厌了)。

如何获得一个表达式,该表达式返回每个app的差?

预期结果

{app="myapp"}    333
{app="someapp"}    9

1 个答案:

答案 0 :(得分:1)

如果我的理解正确,那么减法的左侧有一个没有标签的指标,而右侧有多个指标。

这似乎是one to many matching的情况:

 max total offset 30s - on() group_right max by (app) (current)

on()子句表示应忽略标签,而group_right表示许多面是右侧。