IBM HTTP Server 是基于 ">Apache Web Server 之上开发的一个多功能 Web 服务器。IBM HTTP Server 扩展了 Apache 的功能,引入了一些 Apache 没有的功能。比如,能够使用 IBM 快速响应高速缓存加速器,以及更方便的与 IBM WebSphere 其他产品进行集成。为了了解 IBM HTTP Server 的运行状况,需要对 IBM HTTP Server 的日志进行快速有效的分析。虽然现在有很多商业、或开源软件提供图形化用户界面的方式,辅助分析服务器的访问日志,但是他们大多需要事先在服务器端安装和配置。使用 awk 命令,在很多特殊情形下,可以更快速从日志中捕获所需要的信息。本文从 IBM HTTP Sever 访问日志格式说起,进而简单介绍了 AWK 的语言基础,最后列举了一些典型的使用场景。
IBM HTTP Server 访问日志的格式
定义日志的格式
我们可以在 IBM HTTP Server 的配置文件中,使用预定义的经典格式,或者自定义访问日志的格式。下文中如无特别说明,将假设日志使用名称为 combined的经典格式。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
以下是每个域的简单介绍:
%h = 发起请求的客户端 IP 地址。这里记录的 IP 地址并不一定是真实用户客户机的 IP 地址,它可能是私网客户端的公网映射地址或代理服务器地址。
%l = 客户机的 RFC 1413 标识 ( 参考 ) ,只有实现了 RFC 1413 规范的客户端,才能提供此信息。 %u = 访问用户的 ID %t = 收到请求的时间 %r = 来自客户端的请求行 %>s = 服务器返回客户端的状态码 %b = 返回给客户端的字节
大小,但不包括响应头的大小 %{Referer}i = 引用页 %{User-Agent}i = 浏览器的类型
以下三行为样例日志:
202.189.63.115 - - [31/Aug/2008:15:42:31 +0800] "GET / HTTP/1.1" 200 1365 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1"
设置滚动日志
由于 Web 服务器每天的访问量可能巨大,我们需要把访问日志分别写到不同的日志文件中,这样可以避免单个文件太大,无法使用编辑器打开的情况。比如,我们可以在配置文件中定义每 5 M 生成一个日志文件。
Linux 服务器:
TransferLog "|/opt/IBM/HTTPServer/bin/rotatelogs /opt/IBM/HTTPServer/logs/access_log 5M"
Windows 服务器:
CustomLog "|C:/IBM/HTTPServer/bin/rotatelogs.exe C:/IBM/HTTPServer/logs/access%Y_%m_%d_%H_%M_%S.log 5M" combined