免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3643 | 回复: 1
打印 上一主题 下一主题

share几个rrd的脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-08 03:48 |只看该作者 |倒序浏览
前段时间一直在搞rrd的一些东西,花了段时间,搞出来的东西却在最后被砍了。。。
哎。。。放着也是放着,还不如share出来,各位将就着看看吧,能用上的就用吧,也算为open source做点自己的贡献。。。

闲话少说,主要share如下脚本

如何安装:
环境要求:
1. rrdtool安装,版本>= 1.3
2. perl>=5.8
3. perl moduls: Getopt::Std

脚本修改:
修改每个脚本的这个参数:
第一行的perl路径
#!/usr/bin/perl #如果各位的perl不在这个路径下,请修改为实际路径
$bin_path="/usr/local/rrdtool-1.3.5/bin"  #这个为rrdtool的安装路径,各位改成自己机器上实际的rrd路径即可

脚本如下:
一。graph脚本
1. 任意rrd画图的脚本。 脚本名:graph_single.pl
功能:对指定的任意rrd脚本画图。画图方式都为line1,每个DS的颜色无法自己定义,只能顺序从@color数组里面取。

BUG: @color数组长度有限制,当某个rrd文件中DS数量超过@color数组的个数会报错,说color未定义,解决办法为修改脚本,添加@color数组元素。。。
        
如何看图?
    两种方式: 1.直接生成png图。
                      2.通过html的img src="xxxx"调用,至于怎么调用,就看大家的了。。。

如何使用:

graph_single.pl -f filename -t title -s start-time -e end-time -h NUMBER -w NUMBER -Y Y-axis-descriptions -L [Y|N] -N [Y|N] -d [Y|N] -F Font-size -b base-number[1000|1024]
参数说明:
-f filename,文件名,使用全路径
-s start-time 取值开始的时间,请使用`date +%s`的格式
-e end-time 取值结束时间,使用`date +%s`格式
-h height 图片高度,单位为 pixel像素
-w wideth 图片宽度,单位为像素
-Y Y轴说明
-L lazy参数,这个是个开关,当为N的时候,不显示comment
-N notification 报警参数。。当打开后,图片背景变红
-d debuy参数。当打开后,不画图,只显示rrdtool graph后面的所有参数。。
-F Font-size 。这个字体大小,注意,只影响title的字体。
-b base-number。这个参数很重要,涉及到取值的基数,也就是常说的1K=1024还是1k=1000的。。这个影响到数值的显示。

OK,就以上几个参数,不明白的运行脚本不带任何参数就可以显示帮助!!

运行示例:
./graph_single.pl -f /data/rra_internal/localhost_load_1min_5.rrd -t "local_load" -b 1000 -s `date -d "1 days ago" +%s` -e `date +%s`>/usr/local/apache/htdocs/1.png
这个命令,就在/usr/local/apache/htdocs/下生成了1.png图,图的内容为 localhost_load_1min_5.rrd的内容,时间为距当前时间24小时到现在,title为local_load
如何看图??
http://ip/1.png 就可以看到你刚才的图了。。。

2. 对多个同类型rrd叠加脚本.脚本名:graph_add.pl
功能:对同一类型的rrd文件进行叠加。for example: 你有10个disk的rrd文件,你可以将这10个disk的rrd文件进行叠加,得出10个rrd文件中,disk的总容量和总的usage
如何使用:
usage: graph_add.pl -f filename1,filename2 -t title -s start-time -e end-time -h NUMBER -w NUMBER -Y Y-axis-descriptions -L [Y|N] -N [Y|N] -d [Y|N] -F Font-size -b base-number[1000|1024]
参数说明:
-f filename1,filename2  每个文件都带全路径,多个文件用逗号分隔
其他参数同

3. 对多个同类型的rrd脚本求平均。脚本名: graph_average.pl
功能:对同一类型的rrd文件进行算数平均。for example: 你有10个机器的load.rrd文件,通过这个脚本,可以得出这10台机器的平均usage,尤其针对集群特别有用,可以得出这个集群的平均load。
如何使用:
usage: graph_average.pl -f filename1,filename2 -t title -s start-time -e end-time -h NUMBER -w NUMBER -Y Y-axis-descriptions -L [Y|N] -N [Y|N] -d [Y|N] -F Font-size -b base-number[1000|1024]

参数解释同上

二。 fetch脚本。
1. 取单个rrd文件详细数据脚本。脚本名:fetch.pl
功能: 对单个rrd文件取指定时段,指定RRA的详细数据(不能指定DS),输出为text
usage: ./rrd_fetch.pl -f filename1,filename2 -R RRA -r resolution -s starttime -e endtime
-f filename,带全路径
-R RRA,使用AVERAGE,MIN,MAX
-r resolution。解析度。这个就不解释啦,不懂的可以去网上搜。注意,这个resolution如果你指定的在那个rrd文件中不存在,rrdtool会自动找一个合适的进行匹配。至于什么条件下自动匹配,自己去看文档啦,这里就不详细解释了。。
-s start-time,同上面的graph参数
-e endtime,同上面graph参数

示例:
./fetch.pl -f /data/var/rrdb/10.0.98.239_if1.rrd -R AVERAGE -r 300


2. 对多个同类型rrd文件取叠加后的详细数据。脚本名:fetch_average.pl
功能: 对多个同类型rrd文件,取叠加后的详细数据
usage: ./fetch_add.pl -f filename1,filename2 -R RRA -r resolution -s starttime -e endtime
-f filename1,filename2 ,同样全路径,2个以上的文件使用逗号分隔

3. 对多个同类型rrd文件求平均。脚本名:fetch_average.pl
功能: 对多个同类型的rrd文件,叠加后算数平均,取得平均值。
usage: ./fetch_average.pl -f filename1,filename2 -R RRA -r resolution -s starttime -e endtime
参数解释同上。。。

以上3个fetch脚本其实是根据上面的同样的graph脚本而来。。。为了满足graph脚本看详细数据的需求。。。

如何获得帮助?

上述6个脚本,运行不带任何参数,会print详细的参数以及解释。。。E文不是很好,各位将就着看吧。。。


三。graph脚本中的特殊情况处理
众所周知,在多个rrd文件进行叠加的时候,如果其中一个rrd文件中某个时段的值为NAN,所有的图都为NAN了。。。为了避免这个情况,在graph_add,graph_average脚本中,对NAN通过RPN做了过滤,凡是NAN数据都换成0,所以大家在看到叠加后的图,某时段突然掉下去的时候,就应该知道是在那个时段有某个RRD文件出现NAN情况~


脚本在附件中,有啥问题就留言吧~不一定随时在线,会抽空上来看看!也可以请教下其他的perl高手解决~

rrd1.tar.gz

7.15 KB, 下载次数: 127

rrd画图fetch脚本

论坛徽章:
0
2 [报告]
发表于 2009-07-08 09:38 |只看该作者

回复 #1 realgod 的帖子

顶,希望能看到续集,细节优化,图更漂亮些,呵呵

[ 本帖最后由 exp07 于 2009-7-8 09:39 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP