Apache日志解析

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

例:127.0.0.1 - - [03/Apr/2014:14:16:04 +0800] "GET / HTTP/1.1" 200 344970 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"

1、127.0.0.1:这是一个请求到apache服务器的客户端ip,默认的情况下,第一项信息只是远程主机的ip地址,但我们如果需要apache查出主机的名字,可以将 HostnameLookups设置为on,但这种做法是不推荐使用,因为它大大的减缓了服务器.另外这里的ip地址不一定就是客户主机的ip地址,如果 客户端使用了代理服务器,那么这里的ip就是代理服务器的地址,而不是原机.

2、- 这一项是空白,使用"-"来代替,这个位置是用于标注访问者的标示,这个信息是由identd的客户端存在,除非IdentityCheck为on,否则apache是不会去获取该部分的信息(ps:不太理解,基本上这一项都是为空,奉上原文)

3、- 这一项又是为空白,不过这项是用户记录用户HTTP的身份验证,如果某些网站要求用户进行身份验证,那么这一项就是记录用户的身份信息

4、[03/Apr/2014:14:16:04 +0800]第四项是记录请求的时间,格式为[day/month/year:hour:minute:second zone],最后的+0800表示服务器所处的时区为东八区

5、"GET / HTTP/1.1"这一项整个记录中最有用的信息,首先,它告诉我们的服务器收到的是一个GET请求,其次,是客户端请求的资源路径,第三,客户端使用的协议时HTTP/1.1,整个格式为"%m %U%q %H",即"请求方法/访问路径/协议"

6、200 这是一个状态码,由服务器端发送回客户端,它告诉我们客户端的请求是否成功,或者是重定向,或者是碰到了什么样的错误,这项值为200,表示服务器已经成 功的响应了客户端的请求,一般来说,这项值以2开头的表示请求成功,以3开头的表示重定向,以4开头的标示客户端存在某些的错误,以5开头的标示服务器端 存在某些错误

7、344970这项表示服务器向客户端发送了多少的字节,在日志分析统计的时侯,把这些字节加起来就可以得知服务器在某点时间内总的发送数据量是多少

8、"-" 布吉岛

9、"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"这项主要记录客户端的浏览器信息

2.error_log
error_log为错误日志,记录下任何错误的处理请求,它的位置和内容由ErrorLog指令控制,通常服务器出现什么错误,首先对它进行查阅,是一个最重要的日志文件

例如:
[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的提示错误

二、日志格式定义
很 久以前,日志文件只有一种格式,这就是“公共格式”,许多人已经习惯于使用这种格式。随后出现了定制日志格式,而且看起来定制日志格式更很受欢迎,即使公 共日志格式本身也重新用定制日志格式定义。本文介绍的就是如何随心所欲地定制日志文件的格式、如何让日志文件记录自己想要的信息。 
  定制日志文件的格式涉及到两个指令,即LogFormat指令和CustomLog指令。默认httpd.conf文件提供了关于这两个指令的几个示例。 
  LogFormat指令:定义格式并为格式指定一个名字,以后我们就可以直接引用这个名字。
  CustomLog指令:设置日志文件,并指明日志文件所用的格式(通常通过格式的名字)。 
 
  LogFormat指令的功能是定义日志格式并为它指定一个名字。例如,在默认的httpd.conf文件中,我们可以找到下面这行代码: 
    LogFormat "%h %l %u %t \"%r\" %>s %b" common 
  该指令创建了一种名为“common”的日志格式,日志的格式在双引号包围的内容中指定。格式字符串中的每一个变量代表着一项特定的信息,这些信息按照格式串规定的次序写入到日志文件。   Apache文档已经给出了所有可用于格式串的变量及其含义,下面是其译文: 
     %a: 远程IP地址 
     %A: 本地IP地址 
     %B: 已发送的字节数,不包含HTTP头 
     %b: CLF格式的已发送字节数量,不包含HTTP头。例如当没有发送数据时,写入‘-’而不是0。 
      %{FOOBAR}e: 环境变量FOOBAR的内容 
      %f: 文件名字 
      %h: 远程主机 
      %H 请求的协议 
      %Foobar}i: Foobar的内容,发送给服务器的请求的标头行。 
      %l: 远程登录名字(来自identd,如提供的话) 
      %m: 请求的方法 
      %{Foobar}n: 来自另外一个模块的注解“Foobar”的内容 
      %{Foobar}o: Foobar的内容,应答的标头行 
      %p: 服务器响应请求时使用的端口 
      %P: 响应请求的子进程ID。 
      %q: 查询字符串(如果存在查询字符串,则包含“?”后面的部分;否则,它是一个空字符串。) 
      %r: 请求的第一行 
      %s: 状态。对于进行内部重定向的请求,这是指*原来*请求的状态。如果用%...>s,则是指后来的请求。 
      %t: 以公共日志时间格式表示的时间(或称为标准英文格式) 
     %{format}t: 以指定格式format表示的时间 
      %T: 为响应请求而耗费的时间,以秒计 
      %u: 远程用户(来自auth;如果返回状态(%s)是401则可能是伪造的) 
      %U: 用户所请求的URL路径 
      %v: 响应请求的服务器的ServerName 
      %V: 依照UseCanonicalName设置得到的服务器名字 
  分 析前面来自默认httpd.conf文件的LogFormat指令示例,可以看出它创建了一种名为“common”的日志格式,其中包括:远程主机,远程 登录名字,远程用户,请求时间,请求的第一行代码,请求状态,以及发送的字节数。      LogFormat " %V %h %l %u %t \"%r\" %>s %b" common
    【补充】"<"和">"修饰符可以用来指定对于已被内部重定向的请求是选择原始的请求还是选择最终的请求。默认情况下,%s, %U, %T, %D, %r 使用原始请求,而所有其他格式串则选择最终请求。例如,%>s 可以用于记录请求的最终状态,而 %<u 则记录一个已经被内部重定向到非认证资源的请求的原始认证用户。
  如果在“%”和变量之间放入了一个或者多个HTTP状态代码,则只有当请求返回的状态代码属于指定的状态代码之一时,变量所代表的内容才会被记录。例如,如果我们想要记录的是网站的所有无效链接,那么可以使用: 
     LogFormat %404{Referer}i BrokenLinks 
  反之,如果我们想要记录那些状态代码不等于指定值的请求,只需加入一个“!”符号即可:
   LogFormat %!200U SomethingWrong  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值