簡體   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