本文的作者是 Nikolay Koldunov,本文原文是
Apache log analysis with Pandas
注本文的图有问题,没法引用,还是去原文看下,这里作为一个引子。
%pylab inline
欢迎来到 pylab,一个基于 matplotlib 的 Python 环境【backend: module://IPython.kernel.zmq.pylab.backend_inline】。想要了解更多信息,请键入 'help(pylab)'。
在这个笔记中,我们将展示一个使用 pandas 分析 Apache 访问日志的简单示例。这是我第一次使用 pandas,并且我确定会有更好以及更有效率的方式来做这里展示的事情。所以评论,建议和修正我的蹩脚英语是非常欢迎的。你可以给我发送邮件或者是为这个笔记的 github 创建一个 PR。
加载和解析数据
我们将需要 apachelog 模块,用来解析日志。我们也需要知道设置在 Apache 配置中的日志格式。在我的案例中,我没有访问 Apache 配置,但是主机托管服务提供商在他的帮助页提供了日志格式的描述。下面是它自己的格式以及每个元素的简单描述:
format = r'%V %h %l %u %t \"%r\" %>s %b \"%i\" \"%{User-Agent}i\" %T'
这里(大部分拷贝自这个 SO 文章):
%V - 根据 UseCanonicalName 设置的服务器名字
%h - 远程主机(客户端 IP)
%l - identity of the user determined by identd (not usually used since not reliable)
%u - 由 HTTP authentication 决定的 user name
%t - 服务器完成处理这个请求的时间
%r - 来自客户端的请求行。 ("GET / HTTP/1.0")
%>s - 服务器端返回给客户端的状态码(200, 404 等等。)
%b - 响应给客户端的响应报文大小 (in bytes)
\"%i\" - Referer is the page that linked to this URL.
User-agent - the browser identification string
%T - Apache 请求时间
In [3]:import apachelog, sys
设置格式:
In [4]:fformat = r'%V %h %l %u %t \"%r\" %>s %b \"%i\" \"%{User-Agent}i\" %T'
创建一个解析器:
In [5]:p = apachelog.parser(fformat)
简单字符串:
koldunov.net 85.26.235.202 - - [16/Mar/2013:00:19:43 +0400]