将多个即时向量相加

Adding multiple instant vectors together

我正在尝试向 vector() 添加一组仪表,同时仍将它们的时间序列数据保留在 Prometheus 中。

例如: 1 天的数据

Vector(10) = 10.0 一整天

Gauge1 = 0.1 (0100 - 1800, else = no data)

Gauge2 = 0.2 (0200 - 1900, else = no data)

Gauge3 = 0.3 (0300 - 2000, else = no data)

Gauge4 = 0.4 (0400 - 2100, else = no data)

我的目标是获取值:

10.0 (0000 - 0100)

10.1 (0100 - 0200)

10.3 (0200 - 0300)

10.6 (0300 - 0400)

11.0 (0400 - 1800)

10.9 (1800 - 1900)

10.7 (1900 - 2000)

10.4 (2000 - 2100)

10.0 (2100 - 0000)

我曾尝试使用 orandunless,但是,您拥有的仪表越多,它就会变得越复杂。我也在使用 ignoring 以便可以将仪表加在一起。

有什么简单的方法可以做到这一点吗?如果有数据,我想做的就是将仪表添加到静态向量中。

编辑:

有关我的具体案例的更多详细信息。我有显示 seconds 中的值的仪表(因为工作完成)。我过滤值小于 300 的位置(因为作业每 5 minutes 更新一次)。然后我用 hour() + min() - secondsSinceEnd() 得到 hourminute 工作结束。我一整天都使用 minimum_over_time(),因为它每天运行一次。这会导致在作业完成时开始的新值。我将此结果与预期的结束时间进行比较以了解差异。

我想将所有这些差异加起来,并将它们与所有作业的预期结束时间结合起来。

示例:

vector(12) + min_over_time((hour(timestamp(0 < JobSecondsSinceEnd{} < 300)) + round((minute(timestamp(0 < JobSecondsSinceEnd{} < 300)) - (0 < JobSecondsSinceEnd{} < 300)/60))/60)[24h:15s])

对于我的情况,我找到了解决方法。我仍然觉得可能有更简单的方法,但这就是我想出的。

对于每个我想要求和的即时向量,我添加了一个 vector(0)

vector(10) + (vector(A) OR vector(0)) + 
(vector(B) OR vector(0)) + ...