使用 RRDtool 记录总值的最佳方法?
Posted
技术标签:
【中文标题】使用 RRDtool 记录总值的最佳方法?【英文标题】:The best approach to log total values with RRDtool? 【发布时间】:2017-10-31 19:56:47 【问题描述】:我正在开发一个能耗图表系统。该脚本正在提取能量计的当前 Kwh,然后使用 DS COUNTER 将其推送到 rrd 数据库。我曾尝试使用 VDEF 来计算 DEF 的平均值,但我似乎找不到用这种方法制作“步骤”的好方法。
我的目标是能够从数据库中获取一周的数据,然后计算每天的总数。我似乎找不到最好的方法来做到这一点。 RRDtool 是执行此操作的推进方式吗?如果是,正确的做法是什么?
【问题讨论】:
【参考方案1】:RRDTool 在记录速率时效果最佳。因此,通过使用COUNTER
DS 类型,您可以将周期性 kWh 总计更改为数据库中的时间点 W 值。
例如,如果您每分钟采样一次,则可以将 kWh 乘以 3600000(得到瓦秒或焦耳)并让 RRDTool 使用 COUNTER 类型将其转换为每秒速率或瓦特(为了清晰和简单,最好以 SI 单位存储数据)。
然后您可以通过乘以步长来显示或计算它。
例如,如果您希望查看每天使用的千瓦时图表,则需要定义 1 天粒度的 RRA。然后,您可以从中获取数据(使用rrdtool fetch
或具有特定数据粒度的rrdtool graph
)并获得通过将平均瓦特乘以间隔,然后除以3600000 得到kWh 的计算值。
这会创建一个采样率为 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
JOULES=`expr $KWH \* 3600000`
rrdtool update power.rrd N:$JOULES
这将绘制一个月内的每日使用量(以千瓦时为单位)
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、图表步骤或摘要。
【讨论】:
这不是""本月过去天数的总千瓦时:%.0lf kWh"以上是关于使用 RRDtool 记录总值的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章