一点背景 我有一个RRD存在,可以保存1500多个单独RRD的聚合值(我正在监控1500多个设备)。我这样做是为了当我希望从包含我正在寻找的数据的每个受监视设备获取值时,我没有达到1500+ RRD。我不断发展这组受监控的设备,所以我做了一些xml编辑(很像contrib perl脚本,它将新的数据源添加到已经存在的RRD)来计算我的新设备。 RRD的更新每小时发生一次。
RRD是使用此
创建的--step 3600
--start now
DS: [$cabinet-totalw] :GAUGE:7200:U:U"
RRA:AVERAGE:0.5:1:4392
RRA:AVERAGE:0.5:24:366
RRA:AVERAGE:0.5:744:36
RRA:MIN:0.5:24:732
RRA:MAX:0.5:24:732
仅供参考 - $ cabinet-totalw实际上是for循环中的变量。最初的构建通过1300个橱柜循环。我不想在这里列出所有内容。
问题
当新设备添加到受监视组时,数据源将添加到聚合RRD文件中。但是,当更新触发时,它实际上并不会因某种未知原因更新RRD。当我手动执行此操作时updatev
存在零。如果我查看xport
输出,我有NAN
任何新的数据源数据。但是,所有现有的数据源似乎都没有问题地更新。
目前我迷失了为什么会发生这种情况。事情似乎是有序的,但新的RRD数据源的更新不需要。更有意思的是,我过去曾将数据源添加到此文件中并且没有问题地进行了更新。它似乎是最近的更新不采取。
我还应该补充一点,lastupdate
确实显示了...正确的最后更新。所以我认为我缺乏RRD知识?
ADDITION
我写了一个脚本来抓取我感兴趣的DS
的索引。然后我解析rrdtool fetch
的输出,根据每个时间间隔的索引找到所请求的值。我发现这些值实际上正在更新并存储在RRD中。有趣的是,时间戳在分配的时间段后显示7分钟(步长为3600,因此数据应存储在小时内)。我现在相信这是一个插值问题?
答案 0 :(得分:1)
我发现了我的问题。当我更新xml文件中的rrd数据时(在它被转储之后),我错误地将错误的默认值添加到ds值和最小/最大值。需要将节点值从NaN
更改为0.0000000000e+00
,将最小/最大值从0.0000000000e+00
更改为NaN
。
感谢有人试图提供帮助。