Linux系统下安装rrdtool工具,对网站进行统计流量。虽然现在CPU,内存,流量等已经在使用snmp进行监控,但觉得还需要加一项监控,就是网站的PV和IP的监控,这样可以快速知道服务器负载上升是否是网站访问量增加的原因。

1、安装rrdtool    

centos: yum install rrdtool

ubuntu: sudo apt-get install rrdtool

2.创建ttdtool数据库    

rrdtool create /var/www/test.rrd             \

-s 300      \

DS:pv:GAUGE:600:U:U   \

DS:ip:GAUGE:600:U:U   \

RRA:AVERAGE:0.5:1:288

这里创建一个test.rrd数据文件,相关参数说明如下:

-s 300 300秒存储一次数据

DS:pv:GAUGE:600:U:U

DS:ip:GAUGE:600:U:U 指定两个数据源DS,字段分别为pv和ip

RRA:AVERAGE:0.5:1:288 指定RRA,相当于数据表,存储一天的数据。

3.创建更新脚本    

#!/bin/bash

becur=`date -d "5 minute ago" +%H%M%S`

list=`tac /var/log/apache2/access.log |  awk  -v a="$becur"  -F [' ':] '{t=$5$6$7;if (t>=a) {print;} else {exit;} }' | egrep -v "\.(gif|jpg|jpeg|png|css|js)" `

#获取五分钟内PV

pv=`echo "$list" | wc -l`

#获取五分钟内IP

ip=`echo "$list" | awk '{print $1}' | sort | uniq | wc -l `

#每五分钟更新数据库

rrdtool update /var/www/test.rrd N:${pv}:${ip}

#每五分钟更新图片

rrdtool graph /var/www/1h-pv.png \

-t "PV and IP statistics in an hour"  \

--start now-3600 \

--watermark "`date`" \

--no-gridfit \

--slope-mode \

-l 0 \

-y 1000:5 \

-X 0  \

DEF:mypv=/var/www/test.rrd:pv:AVERAGE \

DEF:myip=/var/www/test.rrd:ip:AVERAGE \

AREA:mypv#9F35FF:"PV Num"  \

AREA:myip#00DB00:"IP Num"

把此脚本添加进计划任务,每五分钟执行一次。

这是一个包含数据更新和图片生成的脚本,相关参数说明如下:

-t "PV and IP statistics in an hour" 指定图表标题

--start now-3600 获取近一小时数据

-l 0 Y轴从0开始

-y 1000:5 定义y轴分隔线为1000,5条显示一刻度

03-15 13:22