问题=====> 基本上,三个部门生成了三个.rrd。 从中我们获取三个值(MIN,MAX,CURRENT)并以3x3格式打印。 有一个执行该操作的python脚本。
例如-
部门1:最小值= 10最大值= 20 cur = 15
Dept2:最小值= 0最大值= 10曲线= 5
部门3:最小值= 10最大值= 30 cur = 25
现在我想将这些值(最小值,最大值,当前值)相加并打印在一行中。
例如-
部门:最小值= 20最大值= 60阈值= 45
我正面临=====> 无论我写什么CDEF,我都在打破图表。 :( 这是我讨厌的部分,因为我没有收到任何错误消息。
据我了解(如果我错了,请纠正我)我肯定不能在返回图形时将值存储在程序的任何地方。 在这种情况下添加值的正确方法是什么。
请让我知道我对问题的描述是否不够详细。
答案 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)
也会遇到同样的问题。