`
fabulous
  • 浏览: 38569 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

apache日志分析详解

 
阅读更多

上次因工作的需求对一台apache的log做了一次整体的分析,所以顺便也对apache的日志分析做下简单的介绍,主要参考apache官网的Log Files,手册参照 http://httpd.apache.org/docs/2.2/logs.html

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

CustomLog "| /usr/sbin/rotatelogs /var/log/apache2/%Y_%m_%d_other_vhosts_access.log 86400 480" vhost_combined

-rw-r--r-- 1 root root 22310750 12-05 23:59 2010_12_05_other_vhosts_access.log
-rw-r--r-- 1 root root 26873180 12-06 23:59 2010_12_06_other_vhosts_access.log
-rw-r--r-- 1 root root 26810003 12-07 23:59 2010_12_07_other_vhosts_access.log
-rw-r--r-- 1 root root 24530219 12-08 23:59 2010_12_08_other_vhosts_access.log
-rw-r--r-- 1 root root 24536681 12-09 23:59 2010_12_09_other_vhosts_access.log
-rw-r--r-- 1 root root 14003409 12-10 14:57 2010_12_10_other_vhosts_access.log



通过CustomLog指令,每天一天生成一个独立的日志文件,同时也写了定时器将一周前的日志文件全部清除,这样可以显得更清晰,既可以分离每一天的日志又可以清除一定时间以前的日志通过制,LogFormat定义日志的记录格式

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedproxy
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent


随意的tail一个access_log文件,下面是一条经典的访问记录

101.226.168.195 - - [17/Oct/2014:16:46:11 +0800] "GET /actkaijiang/3dinfo.html HTTP/1.1" 200 9678 "http://www.yicp.com/actkaijiang/3dinfo.html" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1; 360Spider"

一共是有9项,将他们一一拆开

101.226.168.195
-
-
[17/Oct/2014:16:46:11 +0800]
"GET /actkaijiang/3dinfo.html HTTP/1.1"
200
9678
"http://www.yicp.com/actkaijiang/3dinfo.html"
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1; 360Spider"


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

2) - 这一项是空白,使用"-"来代替,这个位置是用于标注访问者的标示,这个信息是由identd的客户端存在,除非IdentityCheck为on,非则apache是不会去获取该部分的信息(ps:不太理解,基本上这一项都是为空,奉上原文)
The "hyphen" in the output indicates that the requested piece of information is not available. In this case, the information that is not available is the RFC 1413 identity of the client determined by identd on the clients machine. This information is highly unreliable and should almost never be used except on tightly controlled internal networks. Apache httpd will not even attempt to determine this information unless IdentityCheck is set to On.

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

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

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

6) 200 这是一个状态码,由服务器端发送回客户端,它告诉我们客户端的请求是否成功,或者是重定向,或者是碰到了什么样的错误,这项值为200,表示服务器已经成 功的响应了客户端的请求,一般来说,这项值以2开头的表示请求成功,以3开头的表示重定向,以4开头的标示客户端存在某些的错误,以5开头的标示服务器端 存在某些错误,详细的可以参见 HTTP specification (RFC2616 section 10).[http://www.w3.org/Protocols/rfc2616/rfc2616.txt]

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

8) - http://www.yicp.com/actkaijiang/3dinfo.html 表示请求来源

9) "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1; 360Spider" 这项主要记录客户端的浏览器信息





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

tail error_log,随意摘取一个记录

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



二.实用的日志分析脚本
了解日志的各种定义后,这里分享一下从网上淘来的一些对日志分析的脚本

1.查看apache的进程数
ps -aux | grep httpd | wc -l

2.分析日志查看当天的ip连接数
cat default-access_log | grep "10/Dec/2010" | awk '{print $2}' | sort | uniq -c | sort -nr

3.查看指定的ip在当天究竟访问了什么url
cat default-access_log | grep "10/Dec/2010" | grep "218.19.140.242" | awk '{print $7}' | sort | uniq -c | sort -nr

4.查看当天访问排行前10的url
cat default-access_log | grep "10/Dec/2010" | awk '{print $7}' | sort | uniq -c | sort -nr | head -n 10

5.看到指定的ip究竟干了什么
cat default-access_log | grep 218.19.140.242 | awk '{print $1"\t"$8}' | sort | uniq -c | sort -nr | less

6.查看访问次数最多的几个分钟(找到热点)
awk '{print $4}' default-access_log |cut -c 14-18|sort|uniq -c|sort -nr|head



三.使用awstats自动分析日志
当然啦,如果想最简单和最直观的分析日志还是用工具,现在网上较流行的工具是awstats,一个基于perl的web日志分析工具,功能很强大也支持IIS等服务器
下载地址 http://awstats.sourceforge.net
安装配置见 <安装配置整理之 awstats>

简单的界面

分享到:
评论

相关推荐

    记录一次ssh日志分析和apache日志分析

    ### SSH与Apache日志分析详解 #### 一、概述 在运维工作中,日志分析是一项重要的任务,通过分析系统产生的各种日志文件可以帮助我们更好地理解系统的运行状况,及时发现潜在的安全威胁并采取措施应对。本文将详细...

    apache配置文件详解

    ### Apache配置文件详解 #### 一、Apache简介 Apache是一款开放源码的Web服务运行平台,在几乎所有常用的计算机操作系统中都有其身影,因其多平台、安全、稳定的特点而被广泛使用,成为当前最主流的Web服务器软件...

    Apache Web应用详解及优化全攻略

    一、apache优化之保持连接、网页传输压缩、页面缓存时间; 二、apache优化隐藏版本号; ...五、apache 日志分析工具; 六、apache访问控制; 七、apache优化之日志分割; 八、apache实现虚拟主机;

    Apache配置文件详解

    ### Apache配置文件详解 #### 一、概述 Apache配置文件是Apache Web服务器的核心组成部分,用于定义服务器的行为方式、性能参数及安全策略等。通过合理的配置,可以极大地提高Apache的性能和安全性,使其能够更好...

    apache日志详解

    Apache日志详解主要关注的是Apache服务器如何记录和解析其访问日志和错误日志,以及如何根据这些日志进行分析和定制。Apache日志对于监控网站活动、追踪问题和优化性能至关重要。 访问日志(access_log)是Apache的...

    php apache mysql配置详解

    你可以在这里修改端口、数据存储位置、日志文件等设置。 4. **环境变量与路径**:确保Apache和PHP知道MySQL的位置,可能需要在环境变量中添加MySQL的bin目录。同时,确认PHP的mysqli或PDO扩展已启用,以便连接到...

    查看apache日志

    ### 查看Apache日志 #### 知识点一:Apache简介 Apache是一款广泛使用的Web服务器软件,支持多种操作系统,如Windows、Linux等。它通过高度模块化的结构来提供灵活的功能扩展性,支持动态加载模块,这使得Apache...

    apache日志文件详解和实用分析命令

    本文将深入解析Apache日志文件的结构,并介绍一些实用的日志分析命令。 首先,Apache日志主要分为两种类型:访问日志(access_log)和错误日志(error_log)。访问日志记录了所有对服务器的请求,而错误日志则记录了...

    Linux中Apache的配置详解

    ### Linux中Apache的配置详解 #### 一、Apache概述与特点 Apache是一款广泛使用的Web服务器软件,它在Linux操作系统上非常流行。Apache以其强大的功能、稳定性以及灵活性而著称,适用于多种平台,并支持HTTP 1.1...

    apache服务器手册详解

    对于日志管理和故障排查,手册会解释如何配置日志文件,分析访问日志以获取用户行为和服务器性能数据,以及如何识别和解决常见的错误和问题。 对于多站点托管,Apache支持虚拟主机功能,可以让一台服务器同时运行多...

    Apache配置详解(最好的APACHE配置教程)

    Apache的日志记录非常重要,它可以帮助我们诊断问题和分析流量。`ErrorLog`指令定义错误日志的位置,而`CustomLog`则控制访问日志的格式和位置。通过`LogLevel`,我们可以调整日志的详细程度。 九、性能优化 为了...

    apache 配置中文详解

    Apache 配置文件详解 Apache 配置文件是 Apache 服务器的核心组件之一,它控制着服务器的行为和性能。配置文件的正确设置对服务器的性能和安全性有着至关重要的影响。在这篇文章中,我们将深入探讨 Apache 配置文件...

    web服务器日志配置和分析详解整理.pdf

    分析Apache日志通常会使用各种工具,如AWStats、Webalizer、Logstash等,它们能将日志数据转换为可读的报告,提供统计图表和趋势分析。 实际操作中,可能会根据需要选择将所有日志信息合并到一个文件(如combined...

    CentOS Apache配置详解

    CentOS Apache 配置详解 Apache 是一个流行的网页服务器软件,CentOS 也是一个流行的 Linux 发行版。在本文中,我们将详细介绍如何在 CentOS 上配置 Apache,以便实现网页服务器的功能。 一、 Apache 的安装和...

    安装awstats分析apache日志.docx

    ### 安装与配置AWStats分析Apache日志 #### 一、AWStats简介 AWStats是一款免费、开源的日志分析工具,主要用于分析Web服务器产生的访问日志,从中提取有用的信息来帮助管理员更好地理解网站流量模式及用户行为。...

    详解如何使用Spark和Scala分析Apache访问日志

    通过本文,读者可以了解到使用Spark和Scala来分析Apache访问日志的优势,例如可以快速处理大量的数据、可以使用Spark的filter方法来统计Apache日志中404的行数、可以深入挖掘哪些URL是有问题的等等。 本文为读者...

    大数据--Apache Spark实用详解

    ### 大数据与Apache Spark实用详解 在当前的数据驱动时代,大数据已经成为企业成功的关键因素之一。随着数据量的不断增长,传统的数据处理方法已经无法满足需求。为了应对这些挑战,分布式计算框架应运而生,其中...

Global site tag (gtag.js) - Google Analytics