0

我无法理解我在循环数据库中保存的值。我做一个转储,rrdtool dump mydatabase我得到一个数据的转储。我找到了最新的更新,并将其与我的rrd update命令相匹配:

$rrdupdate --template=var1:var2:var3:var4:var5 N:15834740:839964:247212:156320:13493356

在匹配时间戳的转储中,我找到了以下值:

<!-- 2016-12-01 10:30:00 CST / 1480609800 --> <row><v>9.0950245287e+04</v><v>4.8264158237e+03</v><v>1.4182428703e+03</v><v>8.9785764359e+02</v><v>7.7501969607e+04</v></row>

第一个值应该是var1。超出科学计数法,即 90,950.245287,与我的输入值完全不匹配。(它们都不是十进制的。)

为了能够从我的转储中转换值以获得我输入的标准值,我需要做些什么特别的事情吗?

4

1 回答 1

3

我无法为您提供具体情况,因为您没有显示 RRD 文件的完整定义(内部、DS 定义等),但是......

存储在 RRDTool 数据库中的值受数据规范化的影响,然后转换为速率(除非 DS 是 Gauge 类型,在这种情况下它们已经被假定为速率)。

归一化是在线性基础上调整值以使它们完全符合间隔定义的时间序列(通常为 300 秒)。

如果您想查看与写入时完全一样存储的值,则需要将 DS 类型设置为“gauge”,并使 Normalization 成为 null 步骤。执行后者的唯一方法是将值精确地存储在时间边界上。因此,如果间隔为 300 秒,则存储在 12:00:00、12:05:00 等 - 否则将调整值。

在Alex van den Bogaerdt 的教程中有更多关于规范化的信息——它是什么,以及为什么这样做

于 2016-12-04T19:57:15.680 回答