rrdtool实例

这是我自己的rrdtool实例,从rrdtool安装到把mysql数据库里数据监控到网页。很详细的一个例子啦!

转载请注明http://www.cnblogs.com/juandx/articles/3864113.html

 

要学习rrdtool请关注http://www.cnblogs.com/juandx/articles/3854324.html

实例

1.    安装rrdtool和mysql

Sudo apt-get install rrdtool

 

Sudo apt-get install mysql-client

Sudo apt-get install mysql-server

2.    Create

我是在下面这个目录进行工作的

 

在shell窗口直接执行create命令

 

rrdtool create test2.rrd \

--step 5 \

DS:traffic_in:COUNTER:10:0:1250000 \

DS:traffic_out:COUNTER:10:0:1250000 \

RRA:AVERAGE:0.5:1:600 \

RRA:AVERAGE:0.5:12:600 \

RRA:AVERAGE:0.5:720:600 \

RRA:AVERAGE:0.5:17280:600 \

RRA:AVERAGE:0.5:535680:600

 

如下图

 

这样就会在目录test2下生成一个test2.rrd文件

 

 

在test2目录下新建目录html来放html文件,在html里新建images来存放图片。

 

 

 

建一个数据库和表

进入mysql

 

 

建数据库

Create database rrd_test;

 

 

建一个表flow

create table flow(

    id int(4) primary key not null,

    traffic_in double,

    traffic_out double,

name varchar(30));

 

 

 

插入一些数据

建一个shell脚本,initial_table.sh

 

 

#!/bin/bash

#生成数据库原始数据

mysql -uroot -p123 -e "truncate table rrd_test.test2_flow"

for((I=1;I<=4;I++));do

    random1=$RANDOM%10

    random2=$RANDOM%10

    sw=s$I

    echo random1

    echo random2

    echo $sw

    mysql -uroot -p123 -e "INSERT INTO rrd_test.test2_flow(id,traffic_in,traffic_out,name) VALUES ($I,$random1,$random2,'$sw')"

    mysql -uroot -p123 -e "SELECT * FROM rrd_test.test2_flow" &> /dev/null

done

 

 

然后sh –x initial.sh

 

 

然后在数据库里可以看到有数据了:

 

 

 

 

3.    插入随机数据到mysql,更新rrdtool数据库,画图

 

 

以下shell脚本是如下内容:

1、  更新rrdtool数据库

2、  随机插入数据岛mysql数据库

3、  画图

 

直接vi graph.sh

 

#!/bin/bash

#定时刷新生成图片

while true; do

 

        traffic_in=`mysql -uroot -p123 rrd_test --batch -e "select * from test2_flow where id=1"|awk 'NR==2{print $2}'`

        traffic_out=`mysql -uroot -p123 rrd_test --batch -e "select * from test2_flow where id=1"|awk 'NR==2{print $3}'`

        rrdtool updatev /home/wb/testmysqlrrdtool/test2/test2.rrd N:$traffic_in:$traffic_out

 

        random1_in=$RANDOM%1000000

        random1_out=$RANDOM%1000000

        random2_in=$RANDOM%1000

        random2_out=$RANDOM%1000

        random3_in=$RANDOM%1000

        random3_out=$RANDOM%1000

        random4_in=$RANDOM%1000

        random4_out=$RANDOM%1000

        echo $random1_in

        echo $random1_out

        mysql -uroot -p123 -e "UPDATE rrd_test.test2_flow set traffic_in=traffic_in+$random1_in,traffic_out=traffic_out+$random1_out where rrd_test.test2_flow.name='s1'"

        mysql -uroot -p123 -e "UPDATE rrd_test.test2_flow set traffic_in=traffic_in+$random2_in,traffic_out=traffic_out+$random2_out where rrd_test.test2_flow.name='s2'"

        mysql -uroot -p123 -e "UPDATE rrd_test.test2_flow set traffic_in=traffic_in+$random3_in,traffic_out=traffic_out+$random3_out where rrd_test.test2_flow.name='s3'"

        mysql -uroot -p123 -e "UPDATE rrd_test.test2_flow set traffic_in=traffic_in+$random4_in,traffic_out=traffic_out+$random4_out where rrd_test.test2_flow.name='s4'"

 

 

        rrdtool graph /home/wb/testmysqlrrdtool/test2/html/images/second_s1.png -S 5 --start now-300 -t "traffic flow -second" -v "flow values" --lower-limit -5000 --upper-limit 20000 --rigid DEF:value1=test2.rrd:traffic_in:AVERAGE DEF:value2=test2.rrd:traffic_out:AVERAGE COMMENT:" \n" COMMENT:"              now------------average----------max-------------min                  \n" COMMENT:" \n" AREA:value1#00FF00:"in " GPRINT:value1:LAST:'%13.2lf'  GPRINT:value1:AVERAGE:%13.2lf  GPRINT:value1:MAX:%13.2lf  GPRINT:value1:MIN:%13.2lf  COMMENT:" \n" LINE2:value2#ff0000:"out":STACK GPRINT:value2:LAST:%13.2lf  GPRINT:value2:AVERAGE:%13.2lf  GPRINT:value2:MAX:%13.2lf  GPRINT:value2:MIN:%13.2lf  COMMENT:" \n" COMMENT:" \n" COMMENT:" \n" COMMENT:"LAST UPDATED \:$(date '+%Y-%m-%d %H\:%M')\n" -Y

         rrdtool graph /home/wb/testmysqlrrdtool/test2/html/images/minute_s1.png -S 60 --start now-3600 -t "traffic flow -minute" -v "flow values" --lower-limit -5000 --upper-limit 20000 --rigid DEF:value1=test2.rrd:traffic_in:AVERAGE DEF:value2=test2.rrd:traffic_out:AVERAGE COMMENT:" \n" COMMENT:"              now------------average----------max-------------min                  \n" COMMENT:" \n" AREA:value1#00FF00:"in " GPRINT:value1:LAST:'%13.2lf'  GPRINT:value1:AVERAGE:%13.2lf  GPRINT:value1:MAX:%13.2lf  GPRINT:value1:MIN:%13.2lf  COMMENT:" \n" LINE2:value2#ff0000:"out":STACK GPRINT:value2:LAST:%13.2lf  GPRINT:value2:AVERAGE:%13.2lf  GPRINT:value2:MAX:%13.2lf  GPRINT:value2:MIN:%13.2lf  COMMENT:" \n" COMMENT:" \n" COMMENT:" \n" COMMENT:"LAST UPDATED \:$(date '+%Y-%m-%d %H\:%M')\n" -Y

         rrdtool graph /home/wb/testmysqlrrdtool/test2/html/images/hour_s1.png -S 3600 --start now-86400 -t "traffic flow -hour" -v "flow values" --lower-limit -5000 --upper-limit 20000 --rigid DEF:value1=test2.rrd:traffic_in:AVERAGE DEF:value2=test2.rrd:traffic_out:AVERAGE COMMENT:" \n" COMMENT:"              now------------average----------max-------------min                  \n" COMMENT:" \n" AREA:value1#00FF00:"in " GPRINT:value1:LAST:'%13.2lf'  GPRINT:value1:AVERAGE:%13.2lf  GPRINT:value1:MAX:%13.2lf  GPRINT:value1:MIN:%13.2lf  COMMENT:" \n" LINE2:value2#ff0000:"out":STACK GPRINT:value2:LAST:%13.2lf  GPRINT:value2:AVERAGE:%13.2lf  GPRINT:value2:MAX:%13.2lf  GPRINT:value2:MIN:%13.2lf  COMMENT:" \n" COMMENT:" \n" COMMENT:" \n" COMMENT:"LAST UPDATED \:$(date '+%Y-%m-%d %H\:%M')\n" -Y

         rrdtool graph /home/wb/testmysqlrrdtool/test2/html/images/day_s1.png -S 86400 --start now-2678400 -t "traffic flow -day" -v "flow values" --lower-limit -5000 --upper-limit 20000 --rigid DEF:value1=test2.rrd:traffic_in:AVERAGE DEF:value2=test2.rrd:traffic_out:AVERAGE COMMENT:" \n" COMMENT:"              now------------average----------max-------------min                  \n" COMMENT:" \n" AREA:value1#00FF00:"in " GPRINT:value1:LAST:'%13.2lf'  GPRINT:value1:AVERAGE:%13.2lf  GPRINT:value1:MAX:%13.2lf  GPRINT:value1:MIN:%13.2lf  COMMENT:" \n" LINE2:value2#ff0000:"out":STACK GPRINT:value2:LAST:%13.2lf  GPRINT:value2:AVERAGE:%13.2lf  GPRINT:value2:MAX:%13.2lf  GPRINT:value2:MIN:%13.2lf  COMMENT:" \n" COMMENT:" \n" COMMENT:" \n" COMMENT:"LAST UPDATED \:$(date '+%Y-%m-%d %H\:%M')\n" -Y

         rrdtool graph /home/wb/testmysqlrrdtool/test2/html/images/month_s1.png -S 2678400 --start now-32140800 -t "traffic flow -month" -v "flow values" --lower-limit -5000 --upper-limit 20000 --rigid DEF:value1=test2.rrd:traffic_in:AVERAGE DEF:value2=test2.rrd:traffic_out:AVERAGE COMMENT:" \n" COMMENT:"              now------------average----------max-------------min                  \n" COMMENT:" \n" AREA:value1#00FF00:"in " GPRINT:value1:LAST:'%13.2lf'  GPRINT:value1:AVERAGE:%13.2lf  GPRINT:value1:MAX:%13.2lf  GPRINT:value1:MIN:%13.2lf  COMMENT:" \n" LINE2:value2#ff0000:"out":STACK GPRINT:value2:LAST:%13.2lf  GPRINT:value2:AVERAGE:%13.2lf  GPRINT:value2:MAX:%13.2lf  GPRINT:value2:MIN:%13.2lf  COMMENT:" \n" COMMENT:" \n" COMMENT:" \n" COMMENT:"LAST UPDATED \:$(date '+%Y-%m-%d %H\:%M')\n" -Y

 

        sleep 5

done

 

 

 

最后可以看到文件夹里的东西如下:

 

 

 

 

 

然后执行graph.sh

 

Sh –x graph.sh

 

 

 

 

 

4.    生成网页

安装python

Sudo apt-ge install python

 

在test2目录下执行python –m SimpleHTTPServer 8888启动服务器

 

 

 

 

在html目录下编辑文件second_s1.html

 

<html>

        <head>

                <title>jiankong</title>

                <meta http-equiv="refresh" content="60"/>

                                     <script type="text/javascript" src="script_s1.js"></script>

        </head>

        <body>

                            <div align="center">

                <form>

                        </br>

                        <select id="newLocation">

                                                                           <option selected="selected">Select a topic</option>

                                <option value="second_s1.html">second</option>

                                <option value="minute_s1.html" >minute</option>

                                <option value="hour_s1.html" >hour</option>

                                <option value="day_s1.html" >day</option>

                                <option value="month_s1.html" >month</option>

                        </select>

                                                        <input type="button" οnclick="location.reload()" value="fresh">

                                                        </br>

                                                        <img src="images/second_s1.png"></img>

                </form>

                            </div>

        </body>

</html>

同理对应生成minuti、hour、day、month的各个html文件,以便用来切换,只用更改红色标记的地方既可

 

这里的index.html和second_s1.html内容一样

 

 

在html目录下编辑script_s1.js

window.onload = initForm;

//window.onunload = function {};

 

function initForm() {

         document.getElementById("newLocation").selectedIndex = 0;

         document.getElementById("newLocation").onchange = jumpPage;

}

 

function jumpPage() {

         var newLoc = document.getElementById("newLocation");

         var newPage = newLoc.options[newLoc.selectedIndex].value;

 

         if(newPage !=""){

                   window.location = newPage;

         }

}

 

 

 

 

 

 

 

5.    大功告成!

 

打开浏览器,访问localhost:8888/html/second_s1.html即可成功!

 

转载请注明http://www.cnblogs.com/juandx/articles/3864113.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值