首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rrdtool绘制无锯齿边缘的数字事件

Rrdtool绘制无锯齿边缘的数字事件
EN

Stack Overflow用户
提问于 2016-12-26 15:12:03
回答 2查看 464关注 0票数 0

我正在读取我的能量表输出,以跟踪实际使用的能源,等等。能源成本是用tarif计算的,它在一天中从一个状态变化到另一个状态(1或2)。当我将tarif与随时间变化的实际使用量一起绘制在一起时,tarif状态的锐边变得参差不齐,这可能是由平均引起的。

我已经使用了DS:tarif:GAUGE:...来设置数据库,我正在使用DEF:tarif:xx.rrd:tarif:AVERAGE来绘图。

如何记录和绘制具有锐边的“数字”信号?

EN

回答 2

Stack Overflow用户

发布于 2016-12-28 04:16:34

这里你可能指的是两件事。

首先,确保您没有使用--slope-mode。此选项在图形中使用坡度而不是步长;这听起来对您来说是错误的选项。

接下来,您会遇到tariff DS在两个值(假设是ab)之间变化的问题,但是当您查看更高级别的图时,这会开始取平均值并看起来是错误的。

查看高粒度(IE,close up)图时,每个RRA数据点有一个(或多个)像素,每个RRA数据点有一个样本。因此,您将看到ab。但是,当您向上移动到较低粒度(IE,更远)的图形时,RRDtool将开始具有每个像素的多个数据点。根据您的RRD文件定义,rrdtool将在运行时进行整合,或者使用不同的RRA,每个数据点具有更多的样本。

因此,这意味着每个像素有多个样本,它们需要以某种方式组合在一起。默认情况下,RRDTool将对它们进行平均,这可能会导致行为参差不齐。

然而,你希望发生什么呢?如果对应于单个像素的时间间隔有2个a实例和3个b实例,那么图形应该显示什么?

这里有一些关于如何做到这一点的建议。

  1. 使用背景。

由于您的资费只有两个值,您可以使用它来给背景着色-例如,根据资费设置一个红色或绿色的背景,然后在上面绘制您的使用图形线。背景颜色可以通过使用像#ff808080这样的半透明颜色从0到inf的区域来实现

  1. 使用特殊的最大(或最小) RRA

也许您只想显示该时段的最高资费。因此,您可以为每个合并间隔创建一个额外的MAX类型RRA,并用图形表示MAX。当然,这意味着当你有1个像素=1天时,你会看到更高的值作为一条直线。我想“中位数”调整在这里会很有用,但原因很明显,RRDTool没有这个功能。

  1. A bigger graph

一个大的图形意味着更多的像素,这意味着需要更少的平均。

  1. 以不同方式显示您的数据

你想要想象什么?您可能不需要查看此时间窗口内每个单位的平均成本,而计算出的单位x关税总和会更好-特别是因为这将能够毫无问题地平均起来。

  1. 不使用RRDTool

RRDTool旨在随着时间的推移逐步标准化、汇总和过期定期时间序列数据,并且非常有效。然而,如果你有兴趣永远拥有准确的数据,那么你可能需要一个不同的数据库。

  1. Pre-normalise your sampling

(采样时间和采样时间)

如果您的数据频繁更改,那么数据规范化可能会更改它们。确保你总是在时间步长边界上存储数据-如果你的RRD步长是300 (5分钟),那么确保你在时间戳上存储数据,这是300的倍数,并且不要使用N (意思是‘不管现在是什么时间’)。

票数 1
EN

Stack Overflow用户

发布于 2016-12-29 17:01:54

谢谢你的这个非常详细的回答。因为我找不到合适的答案来解决我的问题,你的总结和我的情况,希望也能帮助其他人。

回过头来看,我应该包括更多的信息,在讨论您的观点之前,让我现在就这样做:

下面是我的数据库定义脚本的一段代码:

代码语言:javascript
运行
复制
# 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

以下是我的绘图脚本的一段代码:

代码语言:javascript
运行
复制
#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 day这是”过去48小时“的图表:2 day

为了查看图形上的"tarif“和KWatts中的实际能源使用情况,我将1(低)或2(正常)设置乘以100,并将该数字存储在数据库中。在工作日,资费在23:00改为“低”,并在07:00恢复正常。在"daily“图表上,这是正确的报告,尽管有5分钟。示例分辨率“错误”。

正如您所看到的,在绘图说明中由"-2d“设置的”最后48小时“应该使用来自数据库的相同RRA数据,但tarif线不会从100切换到200,而是”坐“在大约一半的位置。1-1/2小时,或超过30个样本。这不是基于像素级别分辨率(;-)的舍入。

目前我唯一的解释是,"-2d“图使用了第二个RRA,这实际上是为了一周的数据。如果这是答案,那么如何影响绘图说明中的"-d/w/m/y“设置与预期的RRA之间的关系?我看不到两者之间的联系,所以它可能是自动选择的,并且最有可能(如果它是那么智能的话)基于数据点的数量。第一个RRA没有足够的,因此它切换到使用第二个RRA。看似合理,但这是真的吗?

顺便说一句,对于我使用的其他图形,使用"-1w“、"-1m”和"-1y“,在tarif”信号上显示了同样奇怪的结果。

同时,我已经能够通过添加CDEF来“修复”图形,而无需重新定义我的数据库。以下是我对除"1d“以外的所有图形所使用的。

代码语言:javascript
运行
复制
DEF:tarif=$DIR/energy_mon.rrd:tarif:AVERAGE \
CDEF:normaal=tarif,100,GT,200,100,IF \
LINE1:normaal$BLACK_COLOR:"Tarief"

为了解释CDEF,如果关税> 100 (或者实际上是1=low),则将结果设置为"normaal“,这是高关税。如果没有,请将关税设置为"dal“或”low“。

您的建议使用背景颜色的关税是一个非常好的建议,因为我可以使用它在当前的数据库,我也尝试过。

你的MIN/MAX解决方案也是如此,我之前考虑过,但后来推迟了,因为这将需要建立一个新的数据库,并用以前的数据填充它。(我在.csv表单中有,并且我以前已经经历过这个繁琐的练习--这就是为什么我在rddtool创建中有--开始)

但是,我想要弄清楚这个问题的真相。您或其他任何人还有更多的智慧之语要分享,或者可以验证/解释RRA <==> DEF关系或选择的工作原理吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41327683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档