apache日志分析

摘要:
1、 日志分析如果使用默认配置安装apache,那么将在/logs目录中生成两个文件,即access_Log和error_log1)。access_logaccess_Log是一个访问日志,记录对apache服务器的所有访问请求。其位置和内容由CustomLog命令控制。LogFormat命令可用于简化日志的内容和格式。例如,我的一个服务器配置如下:复制代码如下:自定义

一.日志分析 
如果apache的安装时采用默认的配置,那么在/logs目录下就会生成两个文件,分别是access_log和error_log 
1).access_log 
access_log为访问日志,记录所有对apache服务器进行请求的访问,它的位置和内容由CustomLog指令控制,LogFormat指令可以用来简化该日志的内容和格式 
例如,我的其中一台服务器配置如下:

复制代码代码如下:

CustomLog "| /usr/sbin/rotatelogs /var/log/apache2/%Y_%m_%d_other_vhosts_access.log 86400 480" vhost_combined


-rw-r--r-- 1 root root 22310750 12-05 23:59 2010_12_05_other_vhosts_access.log 
-rw-r--r-- 1 root root 26873180 12-06 23:59 2010_12_06_other_vhosts_access.log 
-rw-r--r-- 1 root root 26810003 12-07 23:59 2010_12_07_other_vhosts_access.log 
-rw-r--r-- 1 root root 24530219 12-08 23:59 2010_12_08_other_vhosts_access.log 
-rw-r--r-- 1 root root 24536681 12-09 23:59 2010_12_09_other_vhosts_access.log 
-rw-r--r-- 1 root root 14003409 12-10 14:57 2010_12_10_other_vhosts_access.log

#通过CustomLog指令,每天一天生成一个独立的日志文件,同时也写了定时器将一周前的日志文件全部清除,这样可以显得更清晰,既可以分离每一天的日志又可以清除一定时间以前的日志通过制,LogFormat定义日志的记录格式

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined 
LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combinedproxy 
LogFormat "%h %l %u %t "%r" %>s %b" common 
LogFormat "%{Referer}i -> %U" referer 
LogFormat "%{User-agent}i" agent

随意的tail一个access_log文件,下面是一条经典的访问记录 

复制代码代码如下:

218.19.140.242 - - [10/Dec/2010:09:31:17 +0800] "GET /query/trendxml/district/todayreturn/month/2009-12-14/2010-12-09/haizhu_tianhe.xml HTTP/1.1" 200 1933 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)"

一共是有9项,将他们一一拆开来说明:

复制代码代码如下:

218.19.140.242 


[10/Dec/2010:09:31:17 +0800] 
"GET /query/trendxml/district/todayreturn/month/2009-12-14/2010-12-09/haizhu_tianhe.xml HTTP/1.1" 
200 
1933 
"-" 
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)"

1)  218.19.140.242 这是一个请求到apache服务器的客户端ip,默认的情况下,第一项信息只是远程主机的ip地址,但我们如果需要apache查出主机的名字,可以将 HostnameLookups设置为on,但这种做法是不推荐使用,因为它大大的减缓了服务器.另外这里的ip地址不一定就是客户主机的ip地址,如果 客户端使用了代理服务器,那么这里的ip就是代理服务器的地址,而不是原机. 
2) - 这一项是空白,使用"-"来代替,这个位置是用于标注访问者的标示,这个信息是由identd的客户端存在,除非IdentityCheck为on,非则apache是不会去获取该部分的信息(ps:不太理解,基本上这一项都是为空,奉上原文) 
The "hyphen" in the output indicates that the requested piece of information is not available. In this case, the information that is not available is the RFC 1413 identity of the client determined by identd on the clients machine. This information is highly unreliable and should almost never be used except on tightly controlled internal networks. Apache httpd will not even attempt to determine this information unless IdentityCheck is set to On.
3) - 这一项又是为空白,不过这项是用户记录用户HTTP的身份验证,如果某些网站要求用户进行身份雁阵,那么这一项就是记录用户的身份信息 
4) [10/Dec/2010:09:31:17 +0800] 第四项是记录请求的时间,格式为[day/month/year:hour:minute:second zone],最后的+0800表示服务器所处的时区为东八区 
5) "GET /..haizhu_tianhe.xml HTTP/1.1" 这一项整个记录中最有用的信息,首先,它告诉我们的服务器收到的是一个GET请求,其次,是客户端请求的资源路径,第三,客户端使用的协议时HTTP/1.1,整个格式为"%m %U%q %H",即"请求方法/访问路径/协议" 
6) 200 这是一个状态码,由服务器端发送回客户端,它告诉我们客户端的请求是否成功,或者是重定向,或者是碰到了什么样的错误,这项值为200,表示服务器已经成 功的响应了客户端的请求,一般来说,这项值以2开头的表示请求成功,以3开头的表示重定向,以4开头的标示客户端存在某些的错误,以5开头的标示服务器端 存在某些错误,详细的可以参见 HTTP specification (RFC2616 section 10).[http://www.w3.org/Protocols/rfc2616/rfc2616.txt] 
7) 1933 这项表示服务器向客户端发送了多少的字节,在日志分析统计的时侯,把这些字节加起来就可以得知服务器在某点时间内总的发送数据量是多少 
8) - HTTP Referer:告诉服务器我是从哪个页面链接过来的,没有值时可能是直接打开网页的原因。
9) "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)" 这项主要记录客户端的浏览器信息 
2).error_log 
error_log为错误日志,记录下任何错误的处理请求,它的位置和内容由ErrorLog指令控制,通常服务器出现什么错误,首先对它进行查阅,是一个最重要的日志文件 
tail error_log,随意摘取一个记录 

复制代码代码如下:

[Fri Dec 10 15:03:59 2010] [error] [client 218.19.140.242] File does not exist: /home/htmlfile/tradedata/favicon.ico

同样也是分为几个项:

复制代码代码如下:

[Fri Dec 10 15:03:59 2010] 
[error] 
[client 218.19.140.242] 
File does not exist: /home/htmlfile/tradedata/favicon.ico

1) [Fri Dec 10 15:03:59 2010] 记录错误发生的时间,注意,它跟我们上面access_log记录的时间格式是不同的 
2) [error] 这一项为错误的级别,根据LogLevel指令来控制错误的类别,上面的404是属于error级别 
3) [client 218.19.140.242] 记录客户端的ip地址 
4) File does not exist: /home/htmlfile/tradedata/favicon.ico 这一项首先对错误进行了描述,例如客户端访问一个不存在或路径错误的文件,就会给出404的提示错误

二.实用的日志分析命令和脚本

了解日志的各种定义后,这里分享一下从网上淘来的一些对日志分析的脚本。

1.查看apache的进程数 
ps -aux | grep httpd | wc -l 
2.分析日志查看当天的ip连接数 
cat default-access_log | grep "10/Dec/2010" | awk '{print $2}' | sort | uniq -c | sort -nr 
3.查看指定的ip在当天究竟访问了什么url 
cat default-access_log | grep "10/Dec/2010" | grep "218.19.140.242" | awk '{print $7}' | sort | uniq -c | sort -nr 
4.查看当天访问排行前10的url 
cat default-access_log | grep "10/Dec/2010" | awk '{print $7}' | sort | uniq -c | sort -nr | head -n 10 
5.看到指定的ip究竟干了什么 
cat default-access_log | grep 218.19.140.242 | awk '{print $1" "$8}' | sort | uniq -c | sort -nr | less 
6.查看访问次数最多的几个分钟(找到热点) 
awk '{print $4}' default-access_log |cut -c 14-18|sort|uniq -c|sort -nr|head

免责声明:文章转载自《apache日志分析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQL Server索引webdriver与JS操作浏览器元素下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Qt封装QTcpServer参考资料--QT4中构建多线程的服务器

首先说一下对多线程这个名词的理解过程。以前听说过很多次多线程这个词,而且往往与服务器联系起来,因此一直把多线程误解为服务器特有的功能;直到这次课程设计,仔细学习了一下多线程的机制,才知道真正的意思。简单的来说,就是同时有多个线程一起运行,而不同的线程可以执行不同的操作。举个例子,一个图像处理工具,可以用鼠标一边移动图像,一边用快捷键缩放图像,此时,移动图像...

apache 使用 .htaccess 导致500错误

今天在win主机上配置了一个apache+mysql+php 的环境,一切看似正常了。结果将程序转移过来,打开网站的时候,出现了500错误。于是乎查原因: 首先,怀疑的是连接mysql出错了,找出配置文件,修改mysql的连接信息,错误依然出现 然后,看到网站根目录下面有个 .htaccess 文件,于是想到会不会是此文件导致的,先将其改名。再次打开网站,...

服务器压测、并发数、配置与资源消耗的关系研究

Linux下 Apache 下ab压力测试 1.ab的简介    ab是apachebench命令的缩写。    ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等 2.ab的原理    ab的原理:ab命令会创建多个并发访问...

关于linux或者mac apache重启服务

Mac OS 终端起动、关闭、重启apache的方法打开终端 重启apache:sudo /usr/sbin/apachectl restart 关闭apache:sudo /usr/sbin/apachectl stop 开启apache:sudo /usr/sbin/apachectl start apache文件存放位置: /etc/apache2...

解决The goal you specified requires a project to execute but there is no POM in this directory错误的一种方法!

解决The goal you specified requires a project to execute but there is no POM in this directory错误的一种方法! 在idea工作空间没有pom 我看了下我的项目确实没有再我指定的工作空间  抛异常咯 把该项目移进去就解决了 来源;https://blog.csdn.ne...

从浏览器输入网址到页面显示的全过程

【前言】从全局来讲,当键入一个url时,肯定是需要从服务器请求某个页面或某条数据然后显示到用户自己的电脑屏幕上。这个过程中其实包括:DNS对url域名的解析(在url中解析出服务器所在的IP地址,有的url也包括端口),计算机网络中的五层协议层传输,代理服务器的响应、缓存或者负载均衡、最终html/css/js文件的解析与展现。从后端到前端,这只是概括,接...