shell利用rrdtool 进行数据的收集绘图统计及运维平台显示

关于shell调用RRDTOOL的绘图


所谓的“Round Robin” 其实是一种存储数据的方式,使用固定大小的空间来存储数据,并有一个指针指向最新的数据的位置。我们可以把用于存储数据的数据库的空间看成一个圆,上面有很多刻度。这些刻度所在的位置就代表用于存储数据的地方。所谓指针,可以认为是从圆心指向这些刻度的一条直线。指针会随着数据的读写自动移动。要注意的是,这个圆没有起点和终点,所以指针可以一直移动,而不用担心到达终点后就无法前进的问题。在一段时间后,当所有的空间都存满了数据,就又从头开始存放。这样整个存储空间的大小就是一个固定的数值。所以RRDtool 就是使用类似的方式来存放数据的工具,  RRDtool 所使用的数据库文件的后缀名是‘.rrd’。


我想要的是效果是:


113447799.png


参考 http://www.blogjava.net/ruoyoux/articles/257138.html

参考 http://rrdtool.cs.pu.edu.tw/doc/index.en.html

参考 http://blog.163.com/liulianyixin@126/blog/static/85483924201172353055261/


先安装rrdtool

1 先yum安装所要的库文件:
[root@hmg2 yum.repos.d]#yum install cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel
然后下载rrdtool包,安装:
[root@hmg2 src]#wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3.1.tar.gz
[root@hmg2 src]#tar -zxvf rrdtool-1.3.1.tar.gz  
[root@hmg2 src]#./configure --prefix=/usr/local/rrdtool && make && make install
运行rrdtool �Cv测试安装成功没有:
[root@hmg2 src]#rrdtool -v //可以看到RRDTool的用法以及版本信息
另一种yum安装
[root@hmg2 src]#wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
[root@hmg2 src]#rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
[root@hmg2 src]#yum -y install rrdtool*
xiaorui.cc

建立rrdtool的rra库


[root@dns1 root]# rrdtool create eth0.rrd \

> --start $(date �Cd ‘1 days ago’ +%s) \

> --step 300 \

> DS:eth0_in:COUNTER:600:0:12500000 \        #  600 是 heartbeat;0 是最小值;12500000 表示最大值;

> DS:eth0_out:COUNER:600:0:12500000 \        # 如果没有最小值/最大值,可以用 U 代替,例如 U:U

> RRA:AVERAGE:0.5:1:600 \        # 1 表示对1个 PDP 取平均。实际上就等于 PDP 的值

> RRA:AVERAGE:0.5:4:600 \        # 4 表示每4个 PDP 合成为一个 CDP,也就是20分钟。方法是对4个PDP取平均,

> RRA:AVERAGE:0.5:24:600 \  # 同上,但改为24个,也就是24*5=120分钟=2小时。

> RRA:AVERAGE:0.5:288:730        # 同上,但改为288个,也就是 288*5=1440分钟=1天

[root@dns1 root]#  




建立图片~

[root@dns1 bob]# rrdtool graph 1.png \        > --start now-120000 \        # 表示起始时间是当前时间往前 120000 秒,也就是 33 个小时左右>DEF:value1=eth0.rrd:eth0_in:AVERAGE \         # 从eth0.rrd 中取出 eth0_in 的数据,CF 类型为 AVERAGE> AREA:value1#ff0000        # 用“方块”的形式来绘制 value1 ,注意这里是用 value1 ,不是用 eth0_in481x154                        # 如果 RRDtool 有绘图方面的语句,则这里显示图片大小,否则为 0x0。[root@dns1 bob]#

同时使用 �CS 和 :step

[root@dns1 bob]# rrdtool graph 5.png  > -S 1200 \                                # -S 指定 resolution=1200> --start now-120000 \>DEF:value1=eth0.rrd:eth0_in:AVERAGE:step=300 \        # :step 指定 resolution=300> AREA:value1#ff0000      481x154[root@dns1 bob]#

让两个对象显示不同时间段的数据

[root@dns1 bob]# rrdtool graph 1.png \> --start now-2h \                # 规定时间为2小时内>DEF:value1=eth0.rrd:eth0_in:AVERAGE:end=now:start=end-1h \        # 规定时间为1小时内                >DEF:value2=eth0.rrd:eth0_out:AVERAGE \        # 没有指定 :start 和 :end,默认和 �C-start 一样也是2小时> AREA:value1#00ff00:in \> LINE2:value2#ff0000:out:STACK  475x168[root@dns1 bob]#

模板的过程~  

#!/bin/bashSNMPNETSTAT=/usr/bin/snmpnetstatkk=`$SNAMPNETSTAT -v 2c -c $2 -Can -Cp tcp $1|grep -i 'established'|wc -l`echo -n "established:$kk"sh 123.sh 10.10.10.1 pubiccact 左面的面板data input methodsname snmp_tcp lianjie/bin/bash <path_cacti>/scripts/123.sh <hostname> <snmp_community>addhostnamecacti 左面的面板data templates  这个是创建数据源cacti 左面的面板graph templates


一个简单的rrdtool绘图测试~


##########测试#################


rrdtool create mysql.rrd --step 3 DS:myselect:COUNTER:5:0:U RRA:AVERAGE:0.5:1:28800 RRA:AVERAGE:0.5:10:2880 RRA:LAST:0.5:10:2880


mysql --batch -e "show GLOBAL STATUS LIKE 'com_select'"|awk '/Com_select/{print $2}'



vim 123.sh


while true

do

kkk=`mysql --batch -e "show GLOBAL STATUS LIKE 'com_select'"|awk '/Com_select/{print $2}'`

rrdtool update mysql.rrd N:$kkk

sleep 3

done




rrdtool fetch -r 5  mysql.rrd LAST


有最大和当前   但是最大出点问题

rrdtool graph mysql.png -s 1328989986 -t "mysql select " -v "selects/3" DEF:select30=mysql.rrd:myselect:AVERAGE:step=30 DEF:max30=mysql.rrd:myselect:MAX:step=30 DEF:last30=mysql.rrd:myselect:LAST:step=30 LINE1:select30#FF0000:"SELECT" GPRINT:max30:MAX:"MAXIMUM\: %6.2lf" GPRINT:last30:LAST:"CURRENT\: %10.2lf"  


修改   把GPRINT 改成别的函数  倒是可以了

rrdtool graph mysql.png -s 1328989986 -t "mysql select " -v "selects/3" DEF:select30=mysql.rrd:myselect:AVERAGE:step=30 DEF:max30=mysql.rrd:myselect:AVERAGE:step=30 DEF:last30=mysql.rrd:myselect:LAST:step=30 LINE1:select30#FF0000:"SELECT" GPRINT:max30:MAX:"MAXIMUM\: %6.2lf" GPRINT:last30:LAST:"CURRENT\: %10.2lf"




这个可以查看当前 CURRENT

rrdtool graph mysql.png -s 1328989986 -t "mysql select " -v "selects/3" DEF:select30=mysql.rrd:myselect:AVERAGE:step=30 DEF:last30=mysql.rrd:myselect:LAST:step=30 LINE1:select30#FF0000:"SELECT" GPRINT:last30:LAST:"CURRENT\: %10.2lf"





215436378.png


网页显示,可以简单写个html的页面,试图多的话,也可以用php调取列表~

<imgsrc="1.gif"width="396"height="325"border="0"alt=""><imgsrc="mysql.png"width="497"height="173"border="0"alt=""><imgsrc="a.png"width="497"height="173"border="0"alt="">


你可能感兴趣的:(python,python,图表,cacti,rrdtool,rrdtool,rrdtool)