从多个.rrd文件添加值

时间:2018-08-21 09:51:20

标签: rrdtool rrd

问题=====> 基本上,三个部门生成了三个.rrd。 从中我们获取三个值(MIN,MAX,CURRENT)并以3x3格式打印。 有一个执行该操作的python脚本。

例如-

部门1:最小值= 10最大值= 20 cur = 15

Dept2:最小值= 0最大值= 10曲线= 5

部门3:最小值= 10最大值= 30 cur = 25

现在我想将这些值(最小值,最大值,当前值)相加并打印在一行中。

例如-

部门:最小值= 20最大值= 60阈值= 45

我正面临=====> 无论我写什么CDEF,我都在打破图表。 :( 这是我讨厌的部分,因为我没有收到任何错误消息。

据我了解(如果我错了,请纠正我)我肯定不能在返回图形时将值存储在程序的任何地方。 在这种情况下添加值的正确方法是什么。

请让我知道我对问题的描述是否不够详细。

1 个答案:

答案 0 :(得分:0)

您可以使用VDEF对CDEF的总和执行此操作。

DEF:a=dept1.rrd:ds0:AVERAGE
DEF:b=dept2.rrd:ds0:AVERAGE
DEF:maxa=dept1.rrd:ds0:MAXIMUM
DEF:maxb=dept2.rrd:ds0:MAXIMUM
CDEF:maxall=maxa,maxb,+
CDEF:all=a,b,+
VDEF:maxalltime=maxall,MAXIMUM
VDEF:alltimeavg=all,AVERAGE
PRINT:maxalltime:Max=%f
PRINT:alltimeavg:Avg=%f
LINE:all#ff0000:AllDepartments

但是,您应该注意,除了具有最高粒度的形式以外,最小值和最大值总计将是错误的!这是因为max(a+b) != max(a) + max(b)。如果您在存储时不计算最小/最大聚合,则显示时粒度将消失。

例如,如果a = (1, 2, 3)b = (3, 2, 1),则max(a) + max(b) = 6;但是在任何时间点的最大 实际上是4。使用min(a) + min(b)也会遇到同样的问题。