使用cronolog和webalizer分割和分析apache日志
web服务器的日志对于网站管理者来说有非常重要的作用,对于分析网站的访问情况、搜索引擎的抓取、图片盗链、非法抓取等有很大的帮助。目前apache是最为广泛应用的web服务器,apache的日志功能能通过访问日志可以比较详细的记录网站服务器的被请求情况,但是要更好的根据日志来维护和管理网站则需要其他的工具来分析日志,以生成便于查看的报表。
默认安装的apache在运行时会产生两个日志文件,access_log用于存放访问记录,error则存放出错记录。日志的生成格式可以定制的,需要在配置文件中定义
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
上面的配置是最常用的一种记录格式,产生的日志格式如下:
127.0.0.1 - - [02/Jan/2007:19:41:07 +0800] "GET /themes/original/img/s_error.png HTTP/1.1" 200 272
这是一条典型的apache访问记录,这条记录里面包含有远程访问IP( 127.0.0.1 )、访问者身份(现在一般缺省,以-代替)、访问者标识(缺省以-代替)、请求时间(02/Jan/2007:19:41:07 +0800)、请求方式(GET)、请求的协议(HTTP/1.1)、请求的资源(/themes/original/img/s_error.png)、响应情况(200,代表成功)、传输的字节数(272)。
还有一种比较常用的格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog log/access_log combined
127.0.0.1 - - [02/Jan/2007:19:41:07 +0800] "GET /themes/original/img/s_error.png HTTP/1.1" 200 272"http://www.example.org.cn" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1"
Referer标示记录下来源,User-Agent则会记录客户端浏览器提供的一些识别信息,比如操作系统类别、浏览器类型和版本等,当然也可能是爬虫的信息。记录这些日志对于一个访问量比较大的网站来说是需要很多空间的,而且我们也没必要去保存三个月前的日志。apache提供了日志滚动和管道日志的功能来解决这个问题。
CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log 86400" common
这条命令利用apache提供的rotatelogs每24小时滚动一次日志。当然,现在还有一个工具cronolog被广泛的应用
CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/access_log%m%d" combined
按天分割日志并且日志按照日期记录为access_log.0102的格式。然后可以写脚本定期使用gzip程序将日志压缩备份或者定期进行清理。
10 1 * * * /bin/rm -f /usr/local/apache/logs/`date --date "5 days ago" +access_log.\%m\%d`
加到crontab中,每天1点10分删除5天前的日志
apache帮我们记录一些重要的信息,现在就要对这些信息进行分析,这样日志才能对我们管理和维护网站有所帮助。webalizer是一个非常流行的日志分析工具。前面已经处理了apache的轮询,现在只要配置好webalizer就可以得到日志的分析结果。
0 1* * * /bin/cp -f /usr/local/apache/logs/`date -d yesterday +access_log.%m%d` usr/local/webalizer/logs/access.log
每天1点将日志拷贝一份供webzlizer分析使用
这还只是单机的日志分析,如果需要分析多台服务器的日志可以参考
http://www.chedong.com/tech/rotate_merge_log.html
参考文档:
apache日志文档
http://man.lupaworld.com/content/manage/Apache2.2_chinese_manual/logs.html
webalizer
http://www.mrunix.net/webalizer/
cronolog
http://cronolog.org/
Apache日志的cronolog轮循和webalizer合并统计
http://www.chedong.com/tech/rotate_merge_log.html
