我的RRD文件没有更新,原因是什么?
该图显示了图例,如下所示: -nanv
我使用以下语法创建了 RRD 文件:
rrdtool create ups.rrd --step 300
DS:input:GAUGE:600:0:360
DS:output:GAUGE:600:0:360
DS:temp:GAUGE:600:0:100
DS:load:GAUGE:600:0:100
DS:bcharge:GAUGE:600:0:100
DS:battv:GAUGE:600:0:100
RRA:AVERAGE:0.5:12:24
RRA:AVERAGE:0.5:288:31
然后我用下面的语法更新了文件:
rrdtool update ups.rrd N:$inputv:$outputv:$temp:$load:$bcharge:$battv
并用这个图表绘制它:
rrdtool graph ups-day.png
-t "ups "
-s -1day
-h 120 -w 616
-a PNG
-cBACK#F9F9F9
-cSHADEA#DDDDDD
-cSHADEB#DDDDDD
-cGRID#D0D0D0
-cMGRID#D0D0D0
-cARROW#0033CC
DEF:input=ups.rrd:input:AVERAGE
DEF:output=ups.rrd:output:AVERAGE
DEF:temp=ups.rrd:temp:AVERAGE
DEF:load=ups.rrd:load:AVERAGE
DEF:bcharge=ups.rrd:bcharge:AVERAGE
DEF:battv=ups.rrd:battv:AVERAGE
LINE:input#336600
AREA:input#32CD3260:"Input Voltage"
GPRINT:input:MAX:" Max %lgv"
GPRINT:input:AVERAGE:" Avg %lgv"
GPRINT:input:LAST:"Current %lgvn"
LINE:output#4169E1:"Output Voltage"
GPRINT:output:MAX:"Max %lgv"
GPRINT:output:AVERAGE:" Avg %lgv"
GPRINT:output:LAST:"Current %lgvn"
LINE:load#FD570E:"Load"
GPRINT:load:MAX:" Max %lg%%"
GPRINT:load:AVERAGE:" Avg %lg%%"
GPRINT:load:LAST:" Current %lg%%n"
LINE:temp#000ACE:"Temperature"
GPRINT:temp:MAX:" Max %lgc"
GPRINT:temp:AVERAGE:" Avg %lgc"
GPRINT:temp:LAST:" Current %lgc"
您至少需要 13 次更新,每次更新间隔 5 分钟(IE,12 个 PDP(主数据点)),然后才能将单个 CDP(合并数据点)写入 RRA,从而使您能够在图形上获取数据点。 这是因为您的最小分辨率 RRA 是计数 12,这意味着您需要 12 个 PDP 才能制作一个 CDP。
在你有足够的数据来编写CDP之前,你没有什么可以绘制的,你的图将始终有未知的数据。
或者,添加较小的分辨率 RRA(可能是计数 1),这样您就不需要在获得完整的 CDP 之前收集数据太久。
更新脚本需要以与数据库中定义的完全相同的时间间隔运行。我看到它的步长值为 300,因此数据库应每 5 分钟更新一次。只需将更新脚本放在 cron 作业中(您也可以为图形脚本执行此操作)
例如
sudo crontab -e
如果是第一次运行,请选择您喜欢的编辑器(我通常使用 Vim)并添加脚本的完整路径位置并每 5 分钟运行一次。所以添加这个(不要忘记重命名路径):
*/5 * * * * /usr/local/update_script > /dev/null && /usr/local/graph_script > /dev/null
保存它,然后等待几分钟。我通常会将输出重定向到/dev/null
,以防脚本可以生成输出。因此,如果将要执行的脚本给出输出crontab
则会失败并发送通知。