- 论坛徽章:
- 0
|
前段时间一直在搞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高手解决~ |
|