【问题标题】:RRDTool Value, Graph EmptyRRDTool 值,图为空
【发布时间】:2015-04-14 01:22:43
【问题描述】:

我正在处理很多 rrd 文件,我只是注意到尽管最近更新了一些 rrd 图,但我的一些 rrd 图显示空图。我刚刚对我的 rrd 文件做了一个 rrdtool 信息,发现了一些有趣的东西。在有空文件的rrd文件中,它们的值为0。下面是一个例子:

devserv161
rra[0].rows = 100000
ds[FLUSHER_READ].minimal_heartbeat = 480
ds[WRITE].last_ds = 2030.10630219402
rra[0].cdp_prep[1].unknown_datapoints = 0
ds[WRITE].type = GAUGE
ds[WRITE].index = 1
rra[0].cf = AVERAGE
ds[FLUSHER_READ].unknown_sec = 15
step = 80
rra[0].cdp_prep[2].unknown_datapoints = 0
ds[FLUSHER_READ].value =
ds[WRITE].max =
rra[0].pdp_per_row = 1
ds[FLUSHER_READ].index = 2
ds[READ].type = GAUGE
rrd_version = 0003
rra[0].cdp_prep[1].value =
ds[READ].unknown_sec = 15
ds[WRITE].minimal_heartbeat = 480
last_update = 1428948095
ds[READ].min =
header_size = 1208
ds[READ].minimal_heartbeat = 480
ds[WRITE].unknown_sec = 15
ds[FLUSHER_READ].type = GAUGE
ds[WRITE].value =
rra[0].cur_row = 53085
rra[0].cdp_prep[0].unknown_datapoints = 0
ds[READ].max =
ds[FLUSHER_READ].max =
ds[FLUSHER_READ].min =
ds[READ].index = 0
rra[0].cdp_prep[0].value =
rra[0].xff = 0.999
ds[READ].value =
ds[WRITE].min =
ds[READ].last_ds = 1417.90542990501
filename = devserv161.rrd
rra[0].cdp_prep[2].value =
ds[FLUSHER_READ].last_ds = 74.1351542318656

任何关于为什么 .values 为 0 而不是具有值的帮助将不胜感激。大约每 10 分钟添加一次新值。

【问题讨论】:

  • 请显示更新您的 rrd 文件的代码。

标签: perl rrdtool rrd


【解决方案1】:

如果 RRA 中的值为零(与 Unknown 相反),则这意味着您在 DS 中存储了零。

如果您的 DS 类型为“计数器”或“派生”,则当实际数据为“仪表”类型时,您需要存储零。但是,在您的情况下,您的 DS 属于 GAUGE 类型,因此并非如此。

如果您尝试在 DS 的最小值/最大值之外存储一个值,那么它将存储一个未知数。同样,如果您在两次更新之间留的时间过长并且心跳过期,那么它也会存储 Unknown。

虽然您的绘图功能可能设置为将未知数显示为零,从而导致图表为空,但您告诉我们您没有未知数据点,并且 RRA 中的值实际上为零。因此,您一定是不小心设置了零。

您应该检查您的更新代码,并可能将正在写入的值或 rrdupdate 命令行记录到单独的调试文本文件中。您可能会发现您正在使用零进行更新,或者对 rrdupdate 使用了不正确的语法导致零更新。

【讨论】:

  • 澄清一下,如果您看上面,RRA 中的值是空的,而不是零。对困惑感到抱歉。如果您查看上面的内容,您可以查看 rrd 文件的最近状态报告。
  • 在这种情况下,由于您的 RRA 有“未知”,我建议您检查您的更新是否在心跳超时窗口内,并使用有效值进行更新,因为您似乎正在存储未知数。