【问题标题】:Adding values from multiple .rrd file从多个 .rrd 文件添加值
【发布时间】:2018-08-21 09:51:19
【问题描述】:

问题 =====> 基本上有为三个部门生成的三个.rrd。 我们从中获取三个值(MIN、MAX、CURRENT)并以 3x3 格式打印。 有一个 python 脚本可以做到这一点。

例如 -

Dept1:Min=10 Max=20 Cur=15

Dept2:Min=0 Max=10 Cur=5

Dept3: Min=10 Max=30 Cur=25

现在我想将这些值(Min、Max、Cur)相加并打印在一行中。

例如-

部门:Min=20 Max=60 Cur=45

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

据我了解(如果我错了,请纠正我)当返回图表时,我绝对不能将值存储在程序中的任何位置。 在这种情况下添加值的正确方法是什么。

如果我对问题的描述不够详细,请告诉我。

【问题讨论】:

    标签: rrdtool rrd


    【解决方案1】:

    您可以使用 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
    

    但是,您应该注意,除了最高粒度的形式之外,Min 和 Max 的总数是错误的!这是因为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)

    【讨论】:

      猜你喜欢
      • 2015-12-03
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-29
      相关资源
      最近更新 更多