`
weiyinchao88
  • 浏览: 1187451 次
文章分类
社区版块
存档分类
最新评论

Apche日志系列(1):访问日志

 
阅读更多

想要知道什么人在什么时候浏览了网站的哪些内容吗?查看Apache的访问日志就可以知道。访问日志是Apache的标准日志,本文详细解释了访问日志的内容以及相关选项的配置。

一、访问日志的格式

  Apache内建了记录服务器活动的功能,这就是它的日志功能。这个《Apache日志》系列文章介绍的就是Apache的访问日志、错误日志,以及如何分析日志数据,如何定制Apache日志,如何从日志数据生成统计报表等内容。

  如果Apache的安装方式是默认安装,服务器一运行就会有两个日志文件生成。这两个文件是access_log(在Windows上是access.log)和error_log(在Windows上是error.log)。采用默认安装方式时,这些文件可以在/usr/local/apache/logs下找到;对于Windows系统,这些日志文件将保存在Apache安装目录的logs子目录。不同的包管理器会把日志文件放到各种不同的位置,所以你可能需要找找其他的地方,或者通过配置文件查看这些日志文件配置到了什么地方。

  正如其名字所示,访问日志access_log记录了所有对Web服务器的访问活动。下面是访问日志中一个典型的记录:



216.35.116.91--[19/Aug/2000:14:47:37-0400]"GET/HTTP/1.0"200654





  这行内容由7项构成,上面的例子中有两项空白,但整行内容仍旧分成了7项。

  第一项信息是远程主机的地址,即它表明访问网站的究竟是谁。在上面的例子中,访问网站的主机是216.35.116.91。随便说一句,这个地址属于一台名为si3001.inktomi.com的机器(要找出这个信息,可以使用nslookup工具查找DNS),inktomi.com是一家制作Web搜索软件的公司。可以看出,仅仅从日志记录的第一项出发,我们就可以得到有关访问者的不少信息。

  默认情况下,第一项信息只是远程主机的IP地址,但我们可以要求Apache查出所有的主机名字,并在日志文件中用主机名字来替代IP地址。然而,这种做法通常不值得推荐,因为它将极大地影响服务器记录日志的速度,从而也就减低了整个网站的效率。另外,有许多工具能够将日志文件中的IP地址转换成主机名字,因此要求Apache记录主机名字替代IP地址是得不偿失的。

  然而,如果确实有必要让Apache找出远程主机的名字,那么我们可以使用如下指令:



HostNameLookupson





  如果HostNameLookups设置成double而不是on,日志记录程序将对它找到的主机名字进行反向查找,验证该主机名字确实指向了原来出现的IP地址。默认情况下HostNameLookups设置为off。

  上例日志记录中的第二项是空白,用一个“-”占位符替代。实际上绝大多数时候这一项都是如此。这个位置用于记录浏览者的标识,这不只是浏览者的登录名字,而是浏览者的email地址或者其他唯一标识符。这个信息由identd返回,或者直接由浏览器返回。很早的时候,那时Netscape0.9还占据着统治地位,这个位置往往记录着浏览者的email地址。然而,由于有人用它来收集邮件地址和发送垃圾邮件,所以它未能保留多久,很久之前市场上几乎所有的浏览器就取消了这项功能。因此,到了今天,我们在日志记录的第二项看到email地址的机会已经微乎其微了。

  日志记录的第三项也是空白。这个位置用于记录浏览者进行身份验证时提供的名字。当然,如果网站的某些内容要求用户进行身份验证,那么这项信息是不会空白的。但是,对于大多数网站来说,日志文件的大多数记录中这一项仍旧是空白的。

  日志记录的第四项是请求的时间。这个信息用方括号包围,而且采用所谓的“公共日志格式”或“标准英文格式”。因此,上例日志记录表示请求的时间是2000年8月19日星期三14:47:37。时间信息最后的“-0400”表示服务器所处时区位于UTC之前的4小时。

  日志记录的第五项信息或许是整个日志记录中最有用的信息,它告诉我们服务器收到的是一个什么样的请求。该项信息的典型格式是“METHODRESOURCEPROTOCOL”,即“方法资源协议”。

  在上例中,METHOD是GET,其他经常可能出现的METHOD还有POST和HEAD。此外还有不少可能出现的合法METHOD,但主要就是这三种。

  RESOURCE是指浏览者向服务器请求的文档,或URL。在这个例子中,浏览者请求的是“/”,即网站的主页或根。大多数情况下,“/”指向DocumentRoot目录的index.html文档,但根据服务器配置的不同它也可能指向其他文件。

  PROTOCOL通常是HTTP,后面再加上版本号。版本号或者是1.0,或者是1.1,但出现1.0的时候比较多。我们知道,HTTP协议是Web得以工作的基础,HTTP/1.0是HTTP协议的早期版本,而1.1是最近的版本。当前大多数Web客户程序仍使用1.0版本的HTTP协议。

  日志记录的第六项信息是状态代码。它告诉我们请求是否成功,或者遇到了什么样的错误。大多数时候,这项值是200,它表示服务器已经成功地响应浏览器的请求,一切正常。此处不准备给出状态代码的完整清单以及解释它们的含义,请参考相关资料了解这方面的信息。但一般地说,以2开头的状态代码表示成功,以3开头的状态代码表示由于各种不同的原因用户请求被重定向到了其他位置,以4开头的状态代码表示客户端存在某种错误,以5开头的状态代码表示服务器遇到了某个错误。

  日志记录的第七项表示发送给客户端的总字节数。它告诉我们传输是否被打断(即,该数值是否和文件的大小相同)。把日志记录中的这些值加起来就可以得知服务器在一天、一周或者一月内发送了多少数据。




二、配置访问日志

  访问日志文件的位置实际上是一个配置选项。如果我们检查httpd.conf配置文件,可以看到该文件中有如下这行内容:



CustomLog/usr/local/apache/logs/access_logcommon





  注意,对于版本较早的Apache服务器,这行内容可能略有不同。它使用的可能不是CustomLog指令,而是TransferLog指令。如果你的服务器属于这类情况,建议你尽可能地早日升级服务器。

  CustomLog指令指定了保存日志文件的具体位置以及日志的格式。至于如何定制日志文件的格式以及内容,我们将在这个《Apache日志》系列文章的后面几篇讨论。上面这行指令指定的是common日志格式,自从有了Web服务器开始,common格式就是它的标准格式。由此我们也可以理解,虽然几乎不再有任何客户程序向服务器提供用户的标识信息,但访问日志却还保留着第二项内容。

  CustomLog指令中的路径是日志文件的路径。注意,由于日志文件是由HTTP用户打开的(用User指令指定),因此必须注意这个路径要有安全保证,防止该文件被随意改写。

  《Apache日志》系列文章的后面几篇将继续介绍:Apache错误日志,定制日志的格式和内容,如何将日志内容写入指定的程序而不是文件,如何从日志文件获得一些非常有用的统计信息,等等。
分享到:
评论

相关推荐

    apache日志文件说明

    apache日志文件说明

    Python程序设计:python apache日志分析.pptx

    python apache日志分析 INTERNATIONAL MEDICAL SUMMIT FORUM python apache日志分析 任务背景 操作系统和许多程序会产生各种错误信息、警告信息和其他的提示信息,这种信息会记录到日志里面。系统日志里面有很多东西...

    APACHE日志分析工具

    很多apache日志分析工具都是要安装到服务器上的,而且安装非常麻烦,于是我写了一个单机版(exe,Windows),方便大家分析apache访问日志,绿色版的,直接解压就可以用。 功能: 1、导入apache访问日志; 2、访问...

    Web应用安全:apache日志配置.pptx

    在kali,访问日志被记录在”/var/log/apache2/”中,在这个文件夹中三个后缀名为“.log”的文件中(windows则保存在后缀名为“.txt”的文件中)。 日志文件 查看日志文件 apache日志配置 远程主机IP E-mail(常为空白...

    Web应用安全:apache日志配置(实验).doc

    实验一:apache日志配置 实验目的 修改apache主配置文件中的日志配置 实验内容 在kali中找到主配置文件 修改日志配置 访问服务器产生日志 查看日志 实验环境 Kali系统 实验步骤 1.在kali中找到apache的主配置文件...

    天智Apache日志分析器

    天智Apache日志分析器是一款免费的Apache日志分析工具,使用VC++开发,专用于分析Apache网站日志,可监视、查看和分析Apache服务器日志,统计日志中正常访问和错误日志等信息。

    Apache访问日志分析(含源代码)

    一个分析Apache服务器访问日志的工具, 基于C#开发. 可以分析用户访问所在地, 访问次数, UserAgent等信息.

    apache日志分析

    windows端日志分析软件,支持FTP远程获取linux,NT,OS日志

    Apache 访问日志分析工具

    java 读取apache访问日志并将IP和时间入库,另一个线程分析数据记录,指定时间内超过规定的访问次数,将IP添加进防火墙。以防止ddos攻击。

    Linux下apache日志分析与状态查看方法

    假设apache日志格式为:118.78.199.98 – – [09/Jan/2010:00:59:59 +0800] “GET /Public/...问题1:在apachelog中找出访问次数最多的10个IP。awk ‘{print $1}’ apache_log |sort |uniq -c|sort -nr|head -n 10 aw

    apache-log2:Nodejs 的 ApacheCLF 访问日志记录

    Nodejs 的 Apache/CLF 访问日志记录 添加一名作者 许可证: GNU GENERAL PUBLIC LICENSE 版本 3 依赖: 基于: Robert Edward Steckroth II aka Surgemcgee / Bustout 描述: 以 Apache/CLF 格式输出 NodeJs ...

    linux的Apache用户认证、域名跳转、Apache访问日志介绍1

    linux的Apache用户认证、域名跳转、Apache访问日志介绍原创Gary_加油涛2017-12-20 21:32:03评论(0)321人阅读Apache

    pypache:Python 3 中的 Apache 访问日志解析器

    Python 3 中的 Apache 访问日志解析器。 2.0 版发布。 暂时不支持颜色。 为简单起见,如果您想使用pypache ,请将以下行添加到/etc/apache2/apache2.cfg : LogFormat "%h %l %u %t %r %>s %O | %{Referer}i | %{...

    python分析apache访问日志脚本分享

    # Purpose: 此脚本只用来分析Apache的访问日志 # Version: 2.0 # Author: LEO # Created: 2013-4-26 # Modified: 2013-5-4 # Copyright: (c) LEO 2013 #----------------------------------------

    在Linux系统上查看Apache服务器的错误日志

    错误日志和访问日志文件为系统管理员提供了有用的信息,比如,为 Web 服务器排障,保护系统不受各种各样的恶意活动侵犯,或者只是进行各种各样的分析以监控 HTTP 服务器。根据你 Web 服务器配置的不同,其错误/访问...

    pilgrimaz#learn-linux#配置apache的访问日志1

    配置apache的访问日志在虚拟主机配置文件httpd-vhsot中虚拟主机配置中加入:

    apache-log-parser:流式Apache日志解析器

    apache日志解析器 用于Apache组合访问日志的流解析器。 例子 解析日志并将每一行作为一个对象: var LogParser = require ( 'apache-log-parser' ) ; var lp = LogParser ( { format : false } ) ; fs . ...

    Apache日志的一些操作命令技巧

    假设apache日志格式为: ...“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;...问题1:在apachelog中找出访问次数最多的10个IP。 awk ‘{print $1}’ apache_log |sort |uniq -c|sort -nr|head -n

    apache虚拟主机访问日志配置例子.docx

    apache虚拟主机访问日志配置例子.docx

    易语言E2EE/Apache高性能日志分析工具源码

    1:使用纯真IP数据库查询用户IP归属地。2:鉴定是否为爬虫(非简单查询UA,而是根据行为鉴定)。3:健康评估(根据正常页面,404页面,计算百分比得到健康状态)。4:来源分析(查看用户通过XX网站打开你的网址..)。5:状态码统计...

Global site tag (gtag.js) - Google Analytics