使用RRDtool记录总值的最佳方法是什么?

时间:2017-10-31 19:56:48

标签: graphing rrdtool energy

我正在开发一个能耗图表系统。该脚本正在拉动能量计的当前Kwh,然后使用DS COUNTER将其推送到rrd数据库。我试图使用VDEF来计算平均DEF的总数,但我似乎找不到用这种方法制定“步骤”的好方法。

我的目标是能够从数据库中获取一周的数据,然后计算每天的总数。我似乎找不到最好的方法来做到这一点。 RRDtool是推动这种方式吗?如果是这样,那么正确的方法是什么?

感谢。

1 个答案:

答案 0 :(得分:0)

RRDTool在录制速率时效果最佳。因此,通过使用COUNTER DS类型,您可以将数据库中的定期kWh总数更改为时间点W值。

例如,如果您每分钟采样一次,那么您可以将您的kWh乘以3600000(得到瓦特秒或焦耳)并让RRDTool使用COUNTER类型将其转换为每秒速率,或瓦特(为了清晰和简单,最好以SI单位存储数据)。

然后,您可以通过乘以步长来显示或计算它。

例如,如果您希望查看每天使用的kWh图表,则需要定义1天的粒度RRA。然后,您可以从中获取数据(使用具有特定数据粒度的rrdtool fetchrrdtool graph)并获得通过将平均瓦数乘以间隔获得的计算值,然后除以3600000得到千瓦时。

这会创建一个采样率为1分钟的RRD文件来存储瓦特。

rrdtool create power.rrd --step 60 \
  DS:watts:COUNTER:120:0: \
  RRA:AVERAGE:0.5:1:86400 \
  RRA:AVERAGE:0.5:1440:400

这将更新RRD,给出您最新的kWh样本

JOULES=`expr $KWH \* 3600000`
rrdtool update power.rrd N:$JOULES

这将绘制一个月内的每日使用量(以kWh为单位)

rrdtool graph graph.png \
  --end now  --start "end-1month"  --step 86400 \
  --title "Power usage per day"  --vertical-label "kWh" \
  --units-exponent 0 \
  DEF:watts=power.rrd:watts:AVERAGE:step=86400 \
  CDEF:kwh=watts,STEPWIDTH,*,3600,/,1000,/ \
  VDEF:totkwh=watts,TOTAL,3600000,/ \
  GRPINT:totkwh:"Total kWh this month: %.0lf kWh"

当然,您可以根据需要对其进行修改。您可能需要不同的RRA,图形步骤或摘要。