1.1 配置apache

1)DocumentRoot “/home/shanks/apache2/htdocs”

2)建立/home/shanks/apache2/htdocs/rrdtool

3)建立p_w_picpaths、rrd目录在/home/shanks/apache2/htdocs/rrdtool下面

4)在/home/shanks/apache2/htdocs/rrdtool下面编辑create_test.sh 、graph_test.sh、update_graph.sh、update_test.sh、index.html

1.2 编辑首页和脚本

1.2.1 vim index.html

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>

<HTML>

<HEAD>

<TITLE>RRDTool</TITLE>

<META HTTP-EQUIV=”Refresh” CONTENT=”300″>

<META HTTP-EQUIV=”Cache-Control” content=”no-cache”>

<META HTTP-EQUIV=”Pragma” CONTENT=”no-cache”>

<META HTTP-EQUIV=”Expires” CONTENT=”Tue, 09 Aug 2005 12:37:33 GMT”>

</HEAD>


<BODY bgcolor=”#ffffff” text=”#000000″ link=”#000000″ vlink=”#000000″ alink=”#000000″>

<!– commandline was: indexmaker firewall_1.cfg –>



<H1>Total Traffic – TEST</H1>


<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=10>

<TR>

<TD><DIV><B>Day view </B></DIV>

<DIV><IMG BORDER=1 ALT=”total_watch_dayly” SRC=”./p_w_picpaths/total_watch_day.png”></A><BR>

</DIV>

</TD></tr>


<tr><TD><DIV>Week view<B></B></DIV>

<DIV><IMG BORDER=1 ALT=”total_watch_weekly” SRC=”./p_w_picpaths/total_watch_week.png”></A><BR>

</SMALL></DIV>

</TD></TR>


<TR>

</TR>



<tr><TD><DIV>Month view<B></B></DIV>

<DIV><IMG BORDER=1 ALT=”total_watch_monthly” SRC=”./p_w_picpaths/total_watch_month.png”></A><BR>

</SMALL></DIV>

</TD></TR>


<TR>

</TR>


<tr><TD><DIV>year view <B></B></DIV>

<DIV><IMG BORDER=1 ALT=”total_watch_yearly” SRC=”./p_w_picpaths/total_watch_year.png”></A><BR>

</SMALL></DIV>

</TD></TR>


<TR>

</TR>

</TABLE>


<BR>

1.1.1 vim graph_test.sh

#!/bin/bash

DIR=/home/rrddtool/http_web

p_w_picpath_path=”${DIR}/p_w_picpaths”

set 192.168.100.1 192.168.100.2

RRDFILE=”${DIR}/rrd/watch_”

DATE=`date “+%F %H:%M” `

for t in day week month year

do

rrdtool graph ${p_w_picpath_path}/total_watch_${t}.png \

-t “Total Traffic –TEST ($DATE)” \

-s `date -d “-1 $t” +%s` \

-e `date -d “-5 minute” +%s` \

DEF:in1=$RRDFILE$1.rrd:in:AVERAGE \

DEF:out1=$RRDFILE$1.rrd:out:AVERAGE \

DEF:in2=$RRDFILE$2.rrd:in:AVERAGE \

DEF:out2=$RRDFILE$2.rrd:out:AVERAGE \

CDEF:IN1=in1,8,* \

CDEF:OUT1=out1,8,* \

CDEF:IN2=in2,8,* \

CDEF:OUT2=out2,8,* \

CDEF:IN1_UN=IN1,UN,0,IN1,IF \

CDEF:OUT1_UN=OUT1,UN,0,OUT1,IF \

CDEF:IN2_UN=IN2,UN,0,IN2,IF \

CDEF:OUT2_UN=OUT2,UN,0,OUT2,IF \

CDEF:IN_Total=IN1_UN,IN2_UN,+ \

CDEF:OUT_Total=OUT1_UN,OUT2_UN,+ \

COMMENT:”OUT MAX AVG MIN NOW \n” \

AREA:OUT1#8020c0:”OUT $1 ” \

GPRINT:OUT1:MAX:”%12.2lf%s” \

GPRINT:OUT1:AVERAGE:”%12.2lf%s” \

GPRINT:OUT1:MIN:”%12.2lf%s” \

GPRINT:OUT1:LAST:”%12.2lf%s\n” \

STACK:OUT2#80ffc0:”OUT $2 “ \

GPRINT:OUT2:MAX:”%12.2lf%s” \

GPRINT:OUT2:AVERAGE:”%12.2lf%s” \

GPRINT:OUT2:MIN:”%12.2lf%s” \

GPRINT:OUT2:LAST:”%12.2lf%s\n” \

COMMENT:”IN MAX AVG MIN NOW \n” \

STACK:IN1_UN#800060:”IN $1″ \

GPRINT:IN1:MAX:”%12.2lf%s” \

GPRINT:IN1:AVERAGE:”%12.2lf%s” \

GPRINT:IN1:MIN:”%12.2lf%s” \

GPRINT:IN1:LAST:”%12.2lf%s\n” \

STACK:IN2_UN#0000ff:”IN$2 ” \

GPRINT:IN2:MAX:”%12.2lf%s” \

GPRINT:IN2:AVERAGE:”%12.2lf%s” \

GPRINT:IN2:MIN:”%12.2lf%s” \

GPRINT:IN2:LAST:”%12.2lf%s\n” \

COMMENT:”\n” \

COMMENT:”OUT_TOTAL MAX AVG MIN NOW \n” \

LINE2:OUT_Total#ff0000:”OUT Total ” \

GPRINT:OUT_Total:MAX:”%12.2lf%s” \

GPRINT:OUT_Total:AVERAGE:”%12.2lf%s” \

GPRINT:OUT_Total:MIN:”%12.2lf%s” \

GPRINT:OUT_Total:LAST:”%12.2lf%s\n” \

COMMENT:”IN_TOTAL MAX AVG MIN NOW \n” \

LINE2:IN_Total#000000:”IN Total ” \

GPRINT:IN_Total:MAX:”%12.2lf%s” \

GPRINT:IN_Total:AVERAGE:”%12.2lf%s” \

GPRINT:IN_Total:MIN:”%12.2lf%s” \

GPRINT:IN_Total:LAST:”%12.2lf%s\n” \

-w 700 -h 350

done

1.1.2 vim update_graph.sh

#!/bin/sh

DIR=/home/rrddtool/http_web

${DIR}/update_test.sh

${DIR}/graph_test.sh

1.1.3 vim update_test.sh

DIR=/home/rrddtool/http_web

host=”192.168.100.1 192.168.100.2″

for ip in $host

do


#OUT_OCTETS=`snmpget -v 1 -c public $ip .1.3.6.1.2.1.2.2.1.16.2 |cut -d ” “ -f 4`

#IN_OCTETS=`snmpget -v 1 -c public $ip .1.3.6.1.2.1.2.2.1.10.2 |cut -d ” “ -f 4`


IN_OCTETS=`date +%H%M%S`

OUT_OCTETS=`date +%H%M%S`


RRD_PATH=”${DIR}/rrd/watch_${ip}.rrd”

now=`date +%s`

rrdtool update $RRD_PATH ${now}:${IN_OCTETS}:${OUT_OCTETS}

done

1.1.4 vim create_test.sh

ip=”192.168.100.1 192.168.100.2″

for ip in $ip

do

DIR=/home/rrddtool/http_web

RRDFILE=”${DIR}/rrd/watch_$ip.rrd”

rrdtool create $RRDFILE -s 300 \

DS:in:COUNTER:600:0:1000000000 \

DS:out:COUNTER:600:0:100000000 \

RRA:AVERAGE:0.5:1:14400 \

RRA:AVERAGE:0.5:6:4800 \

RRA:AVERAGE:0.5:24:1200 \

RRA:AVERAGE:0.5:288:600 \

RRA:MAX:0.5:1:14400 \

RRA:MAX:0.5:6:4800 \

RRA:MAX:0.5:24:1200 \

RRA:MAX:0.5:288:600

Done

2 写个crontab吧

*/5 * * * * /bin/bash /home/rrddtool/http_web/update_graph.sh

3 注意事项

1、apache和rrdtool的权限问题