在 RRDTOOL 中绘制图表周期之前的数据

问题描述 投票:0回答:1

我正在使用 RRDTOL 在图表上绘制过去 36 小时的温度。它看起来很酷:

在 rrd 本身,我每分钟都在保存温度,并且已经这样做了几个星期。我想做的是将过去 36 小时与之前 24 小时进行比较(比较昨晚凌晨 2 点,与前一天凌晨 2 点等)。

我正在使用 BASH 绘制图表。这是我用来绘制图表的代码:

# DRAW 36-Hour  graph
/usr/bin/rrdtool graph "$PWD"/outday.png \
--start now-36h --end now \
--alt-autoscale \
-w 425 -h 200 \
--full-size-mode \
--title "Last 36 hours" \
--color CANVAS#36393f00 \
--color BACK#36393f00 \
--color FONT#5b80e0 \
--color GRID#888888 \
--color MGRID#888888 \
--color SHADEA#36393f00 \
--color SHADEB#36393f00 \
--border 0 \
--x-grid HOUR:6:HOUR:80:HOUR:6:0:"%H:%M" \
--left-axis-format %2.0lf \
--watermark "$(date +'%a %b %d %H:%M %Z %Y')" \
DEF:tempo=/usr/local/bin/temp/tempo.rrd:tempo:AVERAGE \
CDEF:up=tempo,0,*,0,EQ,0,1,IF \
TICK:up#3b455e:1.0 \
LINE2:tempo#5b80e0 \
GPRINT:tempo:AVERAGE:"            Average\:%2.1lf" \
GPRINT:tempo:MAX:"Maximum\:%2.0lf            " >/dev/null

我喜欢它的外观(在深色背景下看起来更好)。

这是我尝试过的(运行时不会产生任何错误):

/usr/bin/rrdtool graph "$PWD"/outday2.png \
--start now-36h --end now \
--alt-autoscale \
-w 425 -h 200 \
--full-size-mode \
--title "Last 36 hours" \
--color CANVAS#36393f00 \
--color BACK#36393f00 \
--color FONT#5b80e0 \
--color GRID#888888 \
--color MGRID#888888 \
--color SHADEA#36393f00 \
--color SHADEB#36393f00 \
--border 0 \
--x-grid HOUR:6:HOUR:80:HOUR:6:0:"%H:%M" \
--left-axis-format %2.0lf \
--watermark "$(date +'%a %b %d %H:%M %Z %Y')" \
DEF:tempo=/usr/local/bin/temp/tempo.rrd:tempo:AVERAGE:end=now \
DEF:tempo2=/usr/local/bin/temp/tempo.rrd:tempo:AVERAGE:end=now-24h:start=now-60h \
CDEF:up=tempo,0,*,0,EQ,0,1,IF \
TICK:up#3b455e:1.0 \
LINE2:tempo#5b80e0 \
LINE2:tempo2#5b80e0 \
GPRINT:tempo:AVERAGE:"            Average\:%2.1lf" \
GPRINT:tempo:MAX:"Maximum\:%2.0lf            " >/dev/null

显然我要更改的行是

DEF:tempo2
LINE2:tempo2
。但即使我没有错误地运行它,预期的第二行也不存在。

我怀疑我遇到的问题是时间框架以某种方式搞砸了我,我需要“编辑”时间以某种方式将第二行向右移动。但我不确定该怎么做。

bash rrdtool
1个回答
1
投票

你快到了,你只需要按时间移动你的数据,否则它会显示在图表的左侧(这就是你看不到它的原因)

首先,确保您的 RRA 确实包含数据。您没有显示 RRA 的定义,但我们假设您在最高粒度 RRA 中存储了至少 60 小时的数据。如果你不这样做,那么图表将变得块状或消失。

接下来,您正确地定义了第二个数据集

tempo2
选择昨天的数据,但需要将其时移一天以使其与图形时间窗口重叠:

DEF:tempo=/usr/local/bin/temp/tempo.rrd:tempo:AVERAGE:end=now \
DEF:tempo2=/usr/local/bin/temp/tempo.rrd:tempo:AVERAGE:end=now-24h:start=now-60h \
SHIFT:tempo2:86400 \

SHIFT
指令告诉 RRDTool 将该数据集的时间偏移 24 小时,因此它将覆盖图形时间窗口。有了这个,你应该能够看到它。我建议使用不同的颜色,以免造成混淆。

LINE2:tempo#5b80e0:Temperature \
LINE2:tempo2#abf0ff:Yesterday \

您可能还想看看 RRDTool 提供的

TREND
PREDICT
函数。这些可以让您更好地了解数据集的“正常”情况。

© www.soinside.com 2019 - 2024. All rights reserved.