一点背景知识 我有一个 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知识?
添加
我编写了一个脚本来获取DS
我感兴趣的索引。然后我解析 a 的输出rrdtool fetch
以根据每个时间间隔的索引找到请求的值。我发现这些值实际上正在更新并存储在 RRD 中。有趣的是,时间戳显示在分配的时间段后 7 分钟(步长为 3600,因此数据应按小时存储)。我现在认为这是一个插值问题?