我正在阅读我的能量表的输出,以跟踪所用的实际能量,等等。能量成本是用tarif计算的,并且在白天从一个状态变为另一种状态(1或2)。当我随着时间的推移将Tarif绘制出塔里夫(Tarif)的绘制时,塔里夫(Tarif)状态的锋利边缘被锯齿状,可能是由平均造成的。
我使用了DS:TARIF:量规:...设置DB,我正在使用DEF:TARIF:XX.RRD:TARIF:平均图。
。我如何记录和绘制具有尖锐边缘的"数字"信号?
您可能会引用两件事。<<<<<<<<<</p>
首先,请确保您不使用--slope-mode
。该选项使用图中的斜率而不是步骤。这听起来像是您错误的选择。
接下来,您有一个问题是您的tariff
DS在两个值之间有所不同(假设a
和b
),但是当您查看高级图时,这开始平均且看起来错误。
查看您的高粒度(即,特写)图时,每个RRA数据点有一个(或更多)像素,每个RRA数据点一个样本。因此,您将看到a
或b
。但是,当您移动到较低的粒度(即更远)图时,rrdtool将开始每个像素有多个数据点。根据您的rrd文件定义,rrdtool将即时合并,或者使用不同的RRA,每个DATAPOINT都有更多示例。
因此,这意味着您每个像素有多个样本,并且需要以某种方式组合它们。默认情况下,rrdtool将平均它们,这可能导致锯齿状的行为。
但是,您想发生什么?如果与单个像素相对应的时间间隔具有2个实例的a
和三个b
的实例,则该图应显示什么?
以下是关于您如何做的一些建议。
- 使用背景。
由于您的关税只有两个值,因此您可以使用它来为背景着色 - 例如,根据关税制作红色或绿色背景,然后在此上面绘制使用图形线。背景颜色可以通过使用半透明颜色(例如#ff808080
inf
来完成。- 使用特殊最大(或最小)RRA
也许您只想在此期间显示最大关税。因此,您可以为每个合并间隔创建一个附加的最大类型RRA,并绘制最大值。当然,这意味着当您有1个像素= 1天时,您将仅将较高的值视为直线。我想"中值"合并在这里很有用,但是出于明显的原因,rrdtool没有这个。
- 更大的图
一个大图意味着更多的像素,这意味着所需的平均。
- 以不同的方式显示您的数据
您想可视化什么?可能您不需要在此时间窗口中看到平均每个单元的成本,并且计算出的单位X关税总和会更好地工作 - 特别是因为这可以无问题地平均。
- 不要使用rrdtool
rrdtool旨在随着时间的推移逐步规范,总结和过期定期的时间序列数据,并且非常有效。但是,如果您有兴趣永远拥有确切的数据,那么也许您需要其他数据库。
- 预先简单的抽样时间
如果您的数据经常更改,则数据归一化可能正在更改它们。确保您始终将数据存储在时间步长边界上 - 如果您的RRD步骤为300(5分钟),请确保将数据存储在时间戳300的倍数上,并且不使用N
(无论时间是什么,现在')。
谢谢您的这个非常精心的答案。因为我无法找到解决我的问题的适当答案,您的摘要和我的情况,希望也可能会帮助他人。
回顾过去,我应该包含更多信息,在解决您的观点之前,让我现在就这样做:
这是我数据库定义脚本的片段:
# 5 min sample rate = 300 step rate
# 1D report: 1 step every 5 minutes (5 min sample rate=1), 20 per hr, 24hrs = 480 slots
# 1Wk report: 1 step every hour (20 x 5 min samples=20), 24 hrs, 7 days = 168 slots
# 1M report: 1 step every hour (20 x 5 min samples=20), 24 hrs, 30 days = 720 slots
# 1Y report: 1 step every day (24 Hr * 20 samples=480), 365 days = 365 slots
rrdtool create energy_mon.rrd --step 300 --start 1480943366
DS:meter_total:COUNTER:600:U:U
DS:meter_low:COUNTER:600:U:U
DS:meter_hi:COUNTER:600:U:U
DS:energy:GAUGE:600:U:U
DS:tarif:GAUGE:600:U:U
RRA:AVERAGE:0.5:1:480
RRA:AVERAGE:0.5:20:168
RRA:AVERAGE:0.5:20:720
RRA:AVERAGE:0.5:480:365
这是我的图形脚本的片段:
#daily
rrdtool graph $GDIR/energy_daily.png --start -1d
-w 675 -h 250
--vertical-label "KWatt"
--lower-limit=0
--watermark "`date`"
DEF:energy=$DIR/energy_mon.rrd:energy:AVERAGE
LINE1:energy$GREEN_COLOR:"Energie"
DEF:tarif=$DIR/energy_mon.rrd:tarif:AVERAGE
LINE1:tarif$BLACK_COLOR:"Tarief"
#two days
rrdtool graph $GDIR/energy_2days.png --start -2d
-w 675 -h 250
--vertical-label "KWatt"
--lower-limit=0
--watermark "`date`"
DEF:energy=$DIR/energy_mon.rrd:energy:AVERAGE
LINE1:energy$GREEN_COLOR:"Energie"
DEF:tarif=$DIR/energy_mon.rrd:tarif:AVERAGE
LINE1:tarif$BLACK_COLOR:"Tarief"
这是" 1天"结果的图:1天这是"最后48小时"的图:2天
为了在图表上看到我的" tarif"以及夸瓦中的实际能量使用情况,我将1(low)或2(正常)设置乘以100并将该数字存储在数据库中。在工作日,关税在23:00小时更改为"低",并在07:00 hrs恢复正常。在"每日"图上,这是正确报告的,尽管有5分钟。样本分辨率"错误"。
您可以看到,图形指令中设置为" -2d"的"最后48小时"应使用数据库中相同的RRA数据,但是Tarif Line不会从100变为200,而是从数据库中使用。坐着大约一半。时间为1-1/2小时,或超过30个样本。这不是基于像素级别分辨率(;-)的舍入。
我目前唯一的解释是" -2d"图使用了第二个RRA,实际上是用于一周的数据。如果这是答案,那么一个人如何影响图形指令中的" -D/W/M/Y"设置与预期的RRA之间的关系?我看不到两者之间的连接,因此它可能是自动选择的,并且很可能会根据数据点的量(如果是智能的话)。第一个RRA没有足够的时间,因此可以切换以使用第二个RRA。似乎是合理的,但这是真的吗?
btw,使用" -1W"," -1M"one_answers" -1Y",用于我使用的其他图,在Tarif"信号上显示相同的怪异结果。
与此同时,我能够通过添加CDEF来"修复"图形而无需重新定义数据库。这是我用于除" 1D"以外的所有图。
以外的所有图形DEF:tarif=$DIR/energy_mon.rrd:tarif:AVERAGE
CDEF:normaal=tarif,100,GT,200,100,IF
LINE1:normaal$BLACK_COLOR:"Tarief"
解释CDEF,如果关税> 100(或实际1 =低),则将结果设置为" Normaal",这是高关税。如果不是,请将关税设置为" dal"或Low。
您使用背景颜色作为关税的建议是非常好的,因为我可以在当前数据库上使用它,所以我也尝试过。
您的最小/最大解决方案也是如此,我提前考虑了,但是将其推迟了,因为这将需要设置一个新的数据库并用以前的数据填充该数据库。(我以.csv形式使用的是,我以前经历了这种乏味的练习 - 这就是为什么我在rddtool create中启动 -
,但是,我想解决这个问题的底层。您或其他任何人都有更多的智慧词可以共享,或者可以验证/解释RRA&lt; ==> DEF关系或选择的工作?