将多个即时向量相加
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)
我曾尝试使用 or
、and
和 unless
,但是,您拥有的仪表越多,它就会变得越复杂。我也在使用 ignoring
以便可以将仪表加在一起。
有什么简单的方法可以做到这一点吗?如果有数据,我想做的就是将仪表添加到静态向量中。
编辑:
有关我的具体案例的更多详细信息。我有显示 seconds
中的值的仪表(因为工作完成)。我过滤值小于 300
的位置(因为作业每 5 minutes
更新一次)。然后我用 hour() + min() - secondsSinceEnd()
得到 hour
和 minute
工作结束。我一整天都使用 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)) + ...
我正在尝试向 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)
我曾尝试使用 or
、and
和 unless
,但是,您拥有的仪表越多,它就会变得越复杂。我也在使用 ignoring
以便可以将仪表加在一起。
有什么简单的方法可以做到这一点吗?如果有数据,我想做的就是将仪表添加到静态向量中。
编辑:
有关我的具体案例的更多详细信息。我有显示 seconds
中的值的仪表(因为工作完成)。我过滤值小于 300
的位置(因为作业每 5 minutes
更新一次)。然后我用 hour() + min() - secondsSinceEnd()
得到 hour
和 minute
工作结束。我一整天都使用 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)) + ...