如何减去具有不同标签的矩阵?

How to substract metrics with different labels?

我有两个不同的指标需要计算它们的差异:

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 添加标签,为所有应用程序生成相同的指标(当然这已经有点令人讨厌了)。

我怎样才能得到一个表达 returns 每 app 的差异?

预期结果

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

如果我没理解错的话,减法的左侧有一个没有标签的指标,右侧有多个指标。

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

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

on() 子句表示应该忽略标签,group_right 表示 many 一侧是右侧。