首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Web 服务器日志 -1 Apache 日志剖析

使用 Web 服务器日志 -1 Apache 日志剖析

一名用户在浏览器中输入站点的 URL。该用户从 http://cool.si.te/ 定向到 http://cool.si.te/index.html,这导致 HTML 的加载,接着又导致 CSS、JavaScript 和图像的加载。Web 服务器监视所有这些活动,甚至还能监视大多数用户不知道的一些细微之处。如果出现任何错误,从看上去不合常理的模式到缺少图像文件,您已经知道如何从日志文件中发现踪迹。也许您还使用 Web 流量分析器查看日志文件,以监视站点上的流量趋势。但是,大部分情况下,系统管理员都没有使用 Web 服务器日志,这是很可惜的,因为这些日志能够在许多方面发挥作用。在本文中,我将探索从 Web 服务器日志中获取额外价值的一些思想和技巧。我将在流行的 Apache 服务器上测试这些技巧。由于很多其他的工具也使用相同的格式,所以本文中的信息的适用范围应该要广阔得多。
Apache 日志剖析错误日志报告 Apache 配置或操作中的主要错误,但是在本文中,我将主要讨论访问日志。对于每个 HTTP 请求,访问日志都有一个条目。经典的格式源于美国国家超级计算中心(National Center for Supercomputing Applications,NCSA),这也是一些关键的 Web 革新,例如 Mosaic(后来成为 Netscape 浏览器)、HTTPd(第一个 Apache 发行版的主代码基)和公共网关接口(Common Gateway Interface,CGI)的发源地,其中 CGI 是第一个用于动态 Web 内容的机制。NCSA HTTPd 默认使用所谓的 Common 日志格式,这种格式后来被 Apache 采用。很多 Web 工具仍然在使用 Common 日志格式。
Common 日志格式            清单 1 是 Common 日志格式中的一行:
清单 1. Common 日志格式中的一行
1
2
    125.125.125.125 - uche [20/Jul/2008:12:30:45 +0700] "GET /index.html HTTP/1.1" 200
2345




表 1 解释这些字段。
表 1. common 日志格式一行中的字段字段名例值描述host125.125.125.125发送请求的 HTTP 客户机的 IP 地址或主机名identd-客户机的 Authentication Server Protocol(RFC 931)标识符;该字段很少使用。如果不使用,则以 “-” 的形式给出usernameucheHTTP 认证的用户名(通过 401 响应握手);这是您在某些网站上看到的登录和密码对话框,而不是嵌入在 Web 页面中的登录表单,ID 信息存储在服务器端会话中。如果不使用(例如,请求无限制的资源),则以 “-” 的形式给出date/time[20/Jul/2008:12:30:45 +0700]日期、时间和时区,格式为 [dd/MMM/yyyy:hh:mm:ss +-hhmm]request line"GET /index.html HTTP/1.1"HTTP 请求的首行,包括方法(“GET”)、请求的资源和 HTTP 协议版本status code200响应中用于表明对请求的处置的数字代码,例如表明成功、失败、重定向或认证需求bytes
响应主体中传输的字节数
组合日志格式           很多工具现在默认使用一种更丰富的变体,即组合日志格式。清单 2 是这种格式的一个例子。
清单 2. 组合日志格式的一行
1
2
3
4
5
    125.125.125.125 - uche [20/Jul/2008:12:30:45 +0700] "GET /index.html HTTP/1.1" 200
2345
"http://www.ibm.com/" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9a8)
Gecko/2007100619
GranParadiso/3.0a8" "USERID=Zepheira;IMPID=01234"




这应该都在同一行,但是由于本文排版的限制,我将它拆分成几行。combined 日志格式是 common 格式加上 3 个附加的字段 —— referrer、user agent 和 cookie。可以省略 cookie 字段,或者省略 cookie 和 user agent,甚至还可以省略所有这 3 个字段。表 2 更详细地描述了这几个附加的字段。
表 2. combined 日志格式中附加的字段字段名例值描述referrer"http://www.ibm.com/"当一个用户代理从一个站点中指向另一个站点的链接时,它通常向第二个站点报告哪个 URL 引用它user agent"Mozilla/5.0 (X11; U; Linux x86_64; en-US;                     rv:1.9a8) Gecko/2007100619 GranParadiso/3.0a8"一个字符串,提供关于发出请求的用户代理的信息(例如浏览器版本或 Web crawler)cookie"USERID=Zepheira;IMPID=01234"HTTP 服务器发送的任何 cookie 的实际键/值对可以在响应中发送回客户机
大多数人使用 Web 服务器的默认格式,但是也可以轻松地定制 Apache 日志的格式。显然,如果对日志格式进行定制,那么必须做相应的调整,包括调整本文显示的代码中的很多部分。
返回列表