分享

rrdtool fetch的理解

 昵称15513772 2014-01-15



你们还为看不懂rrd中那些生涩的timestamp格式的时间和科学计数法的数值而郁闷么??嘿嘿,这个时代终于快终结了...为啥,因为俺刚搞了个rrd_fetch.pl脚本了...
闲话少说,还是看看脚本能做甚吧!
1.用法和路径:
/root/longwei/project/rrdtest/rrd_fetch.pl -f localhost_load_1min_5.rrd -R AVERAGE -r 6400
参数解释:
-f 文件名.当然了,内网我指定在/data/rra_internal目录下了,不需要指定路径
-R RRA的名称,必须在rrd文件中存在的RRA
-r resolution,也就是rra的解释度. 这个跟你的step和rra[0].pdp_per_row = 1 这个参数有关,如果你指定的resolution不属于rra文件中定义的任意一个resolution,比如你指定-r 1234 ,则rrdtool将选择一个满足时间跨度

的最小resolution来画图!!

其实还有2个参数我没有指定,就是
-s starttime,开始时间,格式为timestamp格式
-e endtime,结束时间,格式同样为timestamp格式
不指定,默认为1day ago---now-10s的时间跨度

好了,介绍了用法,现在俺截图来show一下我的这个rrd_fetch脚本和官方的rrdtool fetch脚本有啥不一样吧...
1.官方rrdtool fetch使用如下命令后的结果:

从上面的图可以看出,官方的rrdtool fetch脚本可以显示出时间和具体的数值,但是时间为timestamp格式,数值为科学计数法显示的,比较难懂..

2.我写的rrd_fetch.pl脚本运行结果如下:


嘿嘿,大家看到了吧,将前面的timestamp格式的时间转化成了比较通俗易懂的时间,后面的科学计数法表示的数值转化成了普通格式的数值,这样就比较方便啦~~~
(PS:最后的NAN让我郁闷了N久...我将nan作为数值来做运算了,变成了一个超大的数值!!!!导致结果数值上跟rrdtool fetch的结果不一样,让偶排查了N久!!!!)

其实这个脚本也是为了实现咱新监控系统中的一个功能而做的,但是对于我们现在也是有一点用处滴...尤其对于大家在排查rrd出图的问题时尤其有用...可以非常方便的知道rrd文件中各个不同resolution下的数值为多少!!

在这里,我写一下我个人对rrdtool里面resolution的理解!

rrd里面的resolution决定着rrd里面如何取值,同样也就影响这rrd的数值了,所以说如何选择rrd的resolution对于数据的准确性来说非常重要.但是我们如何知道rrd在画图或者fetch的时候选择的那个resolution呢??又或者说

当我们指定了resolution后,rrd就会按照我们指定的resolution去画图么???

答案是否定的!! rrd在画图的时候,选择那个resolution来画图,必须依据以下几个原则:
1.resolution的选择,如果未指定resolution,则选择符合条件的最小resolution.
2.当你指定了resolution以后,如果指定的时间跨度满足,则会使用你指定的resolution来画图,如果时间跨度不满足条件,则会在满足时间跨度的resolution中选择较小的来画图.

以上说的太抽象,举例说明:
有一个rrd文件,内容如下:
filename:test.rrd
step:300
ds1=in_bound
ds2=out_bound
#RRA1 每5分钟存一个纪录,共存48笔,也就是距当前4个小时内的数据
rra1 CF=AVERAGE
rra1 ROWS=48
rra1 pdp_per_row = 1
#每30分钟存一笔,共存336笔,也就是距当前时间一周内的数据
rra2 CF=AVERAGE
rra2 ROWS=336
rra2 pdp_per_row = 6
#每1天存一笔,共存365笔,也就是距当前一年内的数据
rra3 CF=AVERAGE
rra3 ROW=365
rra3 pdp_per_row = 288
第一笔纪录开始时间:
2008年10月1号

好了,有了以上的示例,那我们要画以下的几个图,看看rrdtool会使用哪个resolution来画图吧...
Q1 如果我要画距离当前时间2小时的图,2天的图,2个月的图,分别用哪个RRA(未指定resolution的情况)??
A1. 画2小时的图用RRA1,resolution为300s,画2天的图用RRA2,resolution为300*6=1800s,画2月的图用RRA3,resolution=300*288
这个很好解释.满足条件的最小resolution来画图

Q2.如果我要画从距离当前时间9天前到距离当前时间7天前共3天时间的图,rrdtool会使用哪个RRA来画呢??
A2. 使用RRA3来画图.
why??不是rra2也满足时间跨度的么??rra都存放了1week的图了,而且rra2的粒度比RRA3要细为啥要用RRA3呢??
因为rra2里面最早的数据是距当前时间前1周的数据,也就是说,RRA2里面,最早的纪录应该是距离当前时间7天前的数据,虽然跨度满足要求,粒度也较小,但是时间不满足,因为没有9天前的数据..所以必须使用RRA3

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多