问题=====>基本上有三个.rrd是为三个部门生成的。 从中我们获取三个值(最小值、最大值、当前值(并打印 ins 3x3 格式。有一个python脚本可以做到这一点。
例如 -
部门 1: 最小=10 最大值=20 cur=15
部门 2: 最小=0 最大=10 cur=5
部门3: 最小=10 最大=30 cur=25
现在我想将值(最小值、最大值、Cur(相加并在一行中打印。
例如 -
部门:最小=20 最大=60 cur=45
我面临的问题=====>无论我写什么CDEF,我都在破坏图表。 :( 这是我讨厌的部分,因为我没有收到任何错误消息。
据我了解(如果我错了,请纠正我(我绝对不能在返回图形时将值存储在程序中的任何位置。 在这种情况下添加值的正确方法是什么。
如果我描述的问题缺乏更多细节,请告诉我。
您可以使用 VDEF 而不是 CDEF'd 总和来执行此操作。
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)
。