我需要两个不同的指标来计算差异:
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
添加标签,以便为所有应用程序生成相同的度量标准(当然,这已经有些讨厌了)。
如何获得一个表达式,该表达式返回每个app
的差?
预期结果
{app="myapp"} 333
{app="someapp"} 9
答案 0 :(得分:1)
如果我的理解正确,那么减法的左侧有一个没有标签的指标,而右侧有多个指标。
这似乎是one to many matching的情况:
max total offset 30s - on() group_right max by (app) (current)
on()
子句表示应忽略标签,而group_right
表示许多面是右侧。