如何减去具有不同标签的矩阵?
How to substract metrics with different labels?
我有两个不同的指标需要计算它们的差异:
total
和 current{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 一侧是右侧。
我有两个不同的指标需要计算它们的差异:
total
和 current{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 一侧是右侧。