X

Apache的日志

为了有效的管理网站,日志是必须的。apache的日志包含access日志和错误日志。前者有助于重现用户的访问情景,来分析用户的行为,后者用于网站的错误判读。

安全提示:

对于access日志目录有写权限的人,能够获取apache的执行者的权限(默认root)。另一方面,原始日志中没有对特殊符号进行过滤,所有处理原始数据需要格外的小心。

错误日志

错误日志有助于我们分析网站的问题所在,通常如下的样式:

[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test

通常使用 tail -f error_log来定位最新的错误信息

access日志

access保存了所有的请求信息,CustomLog  他被这个东西定义。另外,你可以借助Open Directory or Yahoo.这些工具来分析日志。access日志一共包含两种日志 :

Common Log Format

其格式类似:127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326

Combined Log Format

这种日志,比common多了两个字段 :

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"

"http://www.example.com/start.html" (\"%{Referer}i\") ----referer 信息

"Mozilla/4.08 [en] (Win98; I ;Nav)" 客户端的信息

还有Multiple Access Logs和Conditional Logs详细查看:apache官网介绍

值得一提的是日志的轮转:

首先需要解决的问题是,如果网站访问量比较大,那么日志增加的会非常快,通常一天下来几百G都有可能,磁盘可能很快就满了,处理日志也比较麻烦,我们可能需要定时的将日志备份,打包,转移等等。当时,通常这么做需要重启服务器的,因为apache一直持续的在想文件中写入日志。通过优雅的重启,能够解决这个问题。apache在写入新的日志文件前,通常会等待几分钟,处理旧的请求,以及写入日志。因此通常需要将apache sleep一段时间,例如:

mv access_log access_log.old
mv error_log error_log.old
apachectl graceful
sleep 600
gzip access_log.old error_log.old

另一个更好的办法是:Piped Logs 他是将日志输出到一个接受标准输入的程序,让程序对日志进行处理,用的比较多的是cronolog ,例举几个常见的例子:

CustomLog "|bin/rotatelogs /var/logs/logfile 86400" common //每天一个文件

CustomLog "|bin/rotatelogs /var/logs/logfile 5M" common // 每5M一个

ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H" // 每小时存一次错误日志

CustomLog "|/usr/sbin/apache/bin/cronolog /usr/local/apache/logs/search/%Y/%m/%d/access-%Y-%m-%d_%H.log" combined

combined日志,每1小时存一次
ErrorLog "|grep -v 'tairclientapi_impl'  --line-buffered|/home/admin/apache/bin/cronolog /home/admin/apache/logs/search/%Y/%m/%d/error-%Y-%m-%d.log"

首先交给grep处理,然后刷新到log

 

 

 

Categories: 系统架构学习
Tags: Apache日志
龙安_任天兵: 不忘初心,方得始终!