利用rrdtool 进行数据的收集绘图统计,网页显示

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. 1 先yum安装所要的库文件: 
  2. [root@hmg2 yum.repos.d]#yum install cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel 
  3. 然后下载rrdtool包,安装: 
  4. [root@hmg2 src]#wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3.1.tar.gz 
  5. [root@hmg2 src]#tar -zxvf rrdtool-1.3.1.tar.gz  
  6. [root@hmg2 src]#./configure --prefix=/usr/local/rrdtool && make && make install 
  7. 运行rrdtool –v测试安装成功没有: 
  8. [root@hmg2 src]#rrdtool -v //可以看到RRDTool的用法以及版本信息 
  9. 另一种yum安装 
  10. [root@hmg2 src]#wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm 
  11. [root@hmg2 src]#rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm 
  12. [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]#  

 

 

建立图片~

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

同时使用 –S 和 :step 

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

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

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

模板的过程~   

 
 
  1. #!/bin/bash 
  2. SNMPNETSTAT=/usr/bin/snmpnetstat 
  3.  
  4. kk=`$SNAMPNETSTAT -v 2c -c $2 -Can -Cp tcp $1|grep -i 'established'|wc -l` 
  5.  
  6. echo -n "established:$kk" 
  7.  
  8.  
  9. sh 123.sh 10.10.10.1 pubic 
  10.  
  11.  
  12. cact 左面的面板 
  13. data input methods 
  14.  
  15. name snmp_tcp lianjie 
  16.  
  17. /bin/bash <path_cacti>/scripts/123.sh <hostname> <snmp_community> 
  18.  
  19. add 
  20. hostname 
  21.  
  22.  
  23. cacti 左面的面板 
  24.  
  25. data templates  这个是创建数据源 
  26.  
  27.  
  28.  
  29. cacti 左面的面板 
  30.  
  31. 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调取列表~

转自
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值