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条显示一刻度