Cacti数据提取方式RRDtool浅析(下)

  在上一篇我们分析了Cacti的数据存储方式,以及操作员在web页面查询过程中rrdtool生成数据的步骤。然而,Cacti在web页面上自带的查询功能对于同一个目标,只能一次查询出一个值。当我们对同一个监控目标进行历史状态回溯,需要查询多个值时,只能不断地重复点击查询;而且我们之前提到过,历史记录的精度存在逐渐下降的情况。

  那么,当我们需要对网络设备的某项监控指标进行过去某段时间的历史状态的精确分析时,会很不方便。这个时候,怎样掌握数据的自定义查询,从而以脚本的形式做成计划任务定时运行,就很有意义(当然,如果你喜欢每天人工手动去查询并记录,而且能够接受当需要统计的目标数目很大的查询,并且能够保证人工不出错,就不用自动化了,笑~)。

  我们再搬出之前那2张图,下面第2张图里的命令代表了第1张图里Cacti页面上数据图案的绘制方式:

  既然这一系列参数最终可以生成我们需要的整块图形,那么,反过来,进行自动化统计的时候,我们并不需要生成图形,将上面的这组命令进行精简,即可获得我们只需要的数值结果。这个时候,我们可以仅使用:

rrdtool graphv - 
--start=手动指定的开始时间 --end=手动指定的结束时间 
DEF:b="手动指定的rrd文件存放位置":traffic_out:AVERAGE 
CDEF:cdefe=b,8,* 
PRINT:cdefe:MAX:"白天最大\:%8.2lf %s "

  在该命令后面跟一个重定向 > result,即可在文本文件result中得到上图右下角的最大值25.03!

再举个例子验证一下我们的结论

  例如,下面这条命令得到的就是2016年8月1日白天段(00:00~18:00)下载最大值,并在桌面的test文本文件中可以查看数据结果:

rrdtool graphv - --start=20160801 --end=start+18h DEF:b="/root/Desktop/rrd/804.rrd":traffic_out:AVERAGE 
CDEF:cdefe=b,8,* 
PRINT:cdefe:MAX:"白天最大\:%8.2lf %s " > /root/Desktop/test

  打开test查看效果:

  跟我们在网页上看到的值是一样的:

  前面作了这么多铺垫,至此,我们就可以根据这种方式,提取我们需要的指定时间段的数据。然后,将其写脚本做成计划任务,批量实现每天自动记录指定时间段的精确结果!当然,实际编写部署的过程中,还需要考虑单位转换、突发值过滤、异常判断、大小排序、批量调度等细节,这里就不给出我写的脚本了,感兴趣的话可以留言或者联系我。


发表评论

评论列表,共 0 条评论

    暂无评论