数据库转储中的 RRD 值如何转换为输入值?

How do RRD values in a database dump translate to the input values?

我无法理解保存在循环数据库中的值。我用 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,与我的输入值完全不匹配。 (None 其中是十进制。)

我需要做些什么才能将转储中的值转换为我输入的标准值吗?

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

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

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

如果您希望看到存储的值与您写入的值完全相同,您需要将 DS 类型设置为 'gauge',并将 Normalization 设置为空步骤。执行后者的唯一方法是将值准确地存储在时间边界上。因此,如果间隔为 300 秒,则存储在 12:00:00、12:05:00 等位置 - 否则将调整值。

Alex van den Bogaerdt's tutorial

中有更多关于规范化的信息 - 它是什么以及为什么要这样做