繁体   English   中英

使用rrdtool记录家庭天然气使用量

[英]Logging home natural gas usage using rrdtool

我正在从家里的电表中提取家庭用气,并尝试将其保存到RRD数据库中,然后使用rrdtool从那里创建图表。

我一直在使用GAUGE db类型针对不同的数据源执行此操作,这些数据源都可以更新/绘图。 由于某种原因,我似乎无法使用COUNTER类型的数据源来使事情正常运行。

这就是我一直在使用的。

rrdtool create db/gas.rrd --step 300 \
      DS:gas_in:COUNTER:600:0:U  \
      RRA:AVERAGE:0.8:1:300    \
      RRA:AVERAGE:0.8:12:200   \
      RRA:MAX:0.8:1:300        \
      RRA:MAX:0.8:12:200

这些是rrdtool更新语句:

rrdtool update db/gas.rrd N:0
rrdtool update db/gas.rrd N:52
rrdtool update db/gas.rrd N:64
rrdtool update db/gas.rrd N:458
etc.

创建图

rrdtool graph \
-E -R light \
-t "Gas" \
-v "cm^3" \
gas.png \
--start 21600  \
DEF:gas=db/gas.rrd:gas_in:AVERAGE \
LINE1:gas#99ff00:"Gas (cm^3)\t" \
GPRINT:gas:LAST:"last %3.0lf%s" \
GPRINT:gas:AVERAGE:"avg. %3.0lf%s\n"

结果图像示例:

在此处输入图片说明

rrdtool的输出获取db / gas.rrd MAX -e1564217220 -s $((1564217220-21600))

--%<--
1564217100: -nan
1564217400: -nan
--%<--

如果我运行带有调试选项的更新:

$ rrdtool updatev /home/arne/scripts/rrd/db/gas.rrd N:900
return_value = 0
[1564131900]RRA[AVERAGE][1]DS[gas_in] = NaN
[1564132500]RRA[AVERAGE][1]DS[gas_in] = NaN
[1564132800]RRA[AVERAGE][1]DS[gas_in] = NaN
----%<--- (more NaN's)

第二次运行只会返回

return_value = 0

(不确定表示什么,可能是“因为相同的值而不允许?”)

看起来数据没有进入RRD。 我究竟做错了什么? (恐怕答案会包含有关“比率”的内容)。

[更新]我已经将一些实际数据记录到一个单独的文件中:

20190811_165002 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_165502 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_170003 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_170504 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_171004 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_171505 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_172005 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_172506 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_173007 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_173507 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_174008 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_174508 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_175009 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_175510 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_180010 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5284
20190811_180511 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_181002 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_181502 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_182003 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_182503 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_183004 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_183505 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_184005 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_184506 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_185006 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_185507 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_190008 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_190508 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_191009 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_191509 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_192010 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_192511 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_193011 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_193502 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_194002 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_194503 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_195004 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_195504 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_200005 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5321
20190811_200505 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5710
20190811_201006 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5710
20190811_201507 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5710
20190811_202007 /usr/bin/rrdtool update /home/arne/scripts/rrd/db/gas.rrd N:5710

该图仍未显示任何数据(仅nan)。 数据每小时更新一次,因此我可能应该更改rrd创建方案。 但是仍然应该捕获这些数据,对吗?

您没有在示例数据中指定两次更新之间的等待时间,但是我怀疑它太短了。

由于DS的类型为COUNTER,因此您需要有两个完整的时间窗口,才能使RRA每秒更新增量值。 由于您的更新不太可能完全在窗口边界上,因此这意味着您需要3个样本。 由于步数为300,这意味着每个样本之间需要5分钟的延迟。

您的数据正在单调增加,因此尽管每秒的速率非常小,但它似乎适用于COUNTER。

确保输入样本数据时有延迟:

rrdtool updatev db/gas.rrd N:0
sleep 300
rrdtool updatev db/gas.rrd N:52
sleep 300
rrdtool updatev db/gas.rrd N:64
sleep 300
rrdtool updatev db/gas.rrd N:458

我希望这会在第三次更新之后开始在RRA中显示一些值。

请注意,您在RRA定义中使用了较高的XFF,因此粒度较低的RRA更有可能隐藏丢失的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM