RRDTOOL的绘图~
所谓的“Round Robin” 其实是一种存储数据的方式,使用固定大小的空间来存储数据,并有一个指针指向最新的数据的位置。我们可以把用于存储数据的数据库的空间看成一个圆,上面有很多刻度。这些刻度所在的位置就代表用于存储数据的地方。所谓指针,可以认为是从圆心指向这些刻度的一条直线。指针会随着数据的读写自动移动。要注意的是,这个圆没有起点和终点,所以指针可以一直移动,而不用担心到达终点后就无法前进的问题。在一段时间后,当所有的空间都存满了数据,就又从头开始存放。这样整个存储空间的大小就是一个固定的数值。所以RRDtool 就是使用类似的方式来存放数据的工具, RRDtool 所使用的数据库文件的后缀名是‘.rrd’。
我想要的是效果是:
参考 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 –v测试安装成功没有:
- [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*
建立rrdtool的rra库
[root@dns1 root]# rrdtool create eth0.rrd \ > --start $(date –d ‘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_in
- 481x154 # 如果 RRDtool 有绘图方面的语句,则这里显示图片大小,否则为 0x0。
- [root@dns1 bob]#
同时使用 –S 和 :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,默认和 –-start 一样也是2小时
- > AREA:value1#00ff00:in \
- > LINE2:value2#ff0000:out:STACK
- 475x168
- [root@dns1 bob]#
模板的过程~
- #!/bin/bash
- SNMPNETSTAT=/usr/bin/snmpnetstat
- kk=`$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 pubic
- cact 左面的面板
- data input methods
- name snmp_tcp lianjie
- /bin/bash <path_cacti>/scripts/123.sh <hostname> <snmp_community>
- add
- hostname
- cacti 左面的面板
- 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"
|
网页显示,可以简单写个html的页面,试图多的话,也可以用php调取列表~
转自