【问题标题】:RRDTool: RRD file not updatingRRDTool:RRD 文件未更新
【发布时间】:2014-04-09 12:25:57
【问题描述】:

我的RRD file没有更新,是什么原因?

图表显示的图例为:-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 %lgv\n" 
LINE:output#4169E1:"Output Voltage" 
GPRINT:output:MAX:"Max %lgv" 
GPRINT:output:AVERAGE:" Avg %lgv" 
GPRINT:output:LAST:"Current %lgv\n" 
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" 

【问题讨论】:

  • 您每小时只存储一个值...您是否已经运行更新超过一个小时?

标签: rrdtool rrd


【解决方案1】:

您将需要至少 13 次更新,每 5 分钟间隔一次(IE,12 个 PDP(主要数据点)),然后才能将单个 CDP(合并数据点)写入 RRA,使您能够在图表。这是因为您的最小分辨率 RRA 是 Count 12,这意味着您需要 12 个 PDP 才能制作一个 CDP。

在您有足够的数据来编写 CDP 之前,您没有任何东西可以绘制,并且您的图表将始终包含未知数据。

或者,添加一个更小分辨率的 RRA(可能是 Count 1),这样您就不需要在获得完整的 CDP 之前收集数据这么长时间。

【讨论】:

    【解决方案2】:

    更新脚本需要以与数据库中定义的完全相同的时间间隔运行。 我看到它的步长值为 300,因此数据库应每 5 分钟更新一次。 只需将更新脚本放在 cron 作业中(您也可以为图形脚本执行此操作)

    例如,

    sudo crontab -e
    

    如果第一次运行,请选择您最喜欢的编辑器(我通常使用Vim)并添加脚本的完整路径位置并每 5 分钟运行一次。所以添加这个(不要忘记重命名路径):

    */5 * * * *  /usr/local/update_script > /dev/null && /usr/local/graph_script > /dev/null
    

    保存,然后等待几分钟。如果输出可以由脚本生成,我通常会将输出重定向到/dev/null。因此,如果将要执行的脚本给出输出 crontab 将失败并发送通知。

    【讨论】:

      猜你喜欢
      • 2015-07-02
      • 2013-10-06
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 2018-04-23
      • 1970-01-01
      相关资源
      最近更新 更多