Nginx日志处理

今天对线上nginx access.log日志进行了如下处理,以便分析

每5分钟统计访问次数,并加入ganglia监控,通过web展示,做法如下:


1. 首先nginx的日志需要做日志切割,切割脚本如下:

cat nginx_log.sh
#!/bin/sh
#2014-06-06 by wu
savepath_log=/home/buddy/logs/
nglogs=/usr/local/nginx/logs/
mkdir -p $savepath_log/$(date +%Y)/$(date +%m)
mv $nglogs/access.log $savepath_log/$(date +%Y)/$(date +%m)/access.log.$(date +%Y%m%d)
mv $nglogs/error.log $savepath_log/$(date +%Y)/$(date +%m)/error.log.$(date +%Y%m%d)
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`



加入crontab,每天零点执行:

0 0 * * * (sh /root/admin/nginx_log.sh &>/dev/null)



2. 统计日志,并通过gmetric加入ganglia监控,脚本如下:

cat ganglia_access_count.sh
#!/bin/sh
#2014-06-18 by wu
#Statistical number of accessing nginx every 5 minutes
#得出5分钟之前的小时数
hour=`date -d '-5 minute' +%H`
#得出5分钟之前的分钟数
minute=`date -d '-5 minute' +%M`
#以空格,/,:3个符号作为分隔符,当小时和分钟大于等于上面定义的变量时,输出结果并计算行数,每一行代表一次访问
Num=`awk -F'[ ]|[/]|:' -v hour=$hour -v minute=$minute '$7>=hour && $8>=minute{print}' /usr/local/nginx/logs/access.log | wc -l`
#使用gmetric加入ganglia监控
gmetric -n Nginx_access_counts -v $Num -t uint8 -u num



写入crontab,每5分钟执行一次

*/5 * * * * (sh /root/admin/ganglia_gmetric/ganglia_access_count.sh &> /dev/null)



效果展示


你可能感兴趣的:(nginx,Web)