欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

apache 常用日志分析工具

shiping1 的头像
Apache日志分析工具汇总
2013-04-11 23:47:53
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://tywangpanpan.blog.51cto.com/6264315/1176447

【杂谈】日志对于任何一个服务器来说都是至关重要的,对于我们今天要介绍的Apache 亦是如此。当服务器运行正常时,维护人员可以通过运行日志来观察服务器的运行状态(流量分析、数据统计、日常维护等),当服务器出现一些运行错误时,我们 也可以通过日志来查看那些地方出现的什么类型的错误,以便我们的网站维护人员来及时,准确的定位错误,及时恢复,来保证用户的正常的网络访问。详细的日志 分析工具对于网站的快速分析问题,解决问题来说更是至关重要的,今天给大家介绍几种现在使用比较多的日志分析工具。

【日志简介】

1、日志格式类型

目前常见的WEB日志格式主要由两类:一 类是Apache的NCSA日志格式,另一类是IIS的W3C日志格式。NCSA格式又分为NCSA普通日志格式(CLF)和NCSA扩展日志格式 (ECLF)两类,目前最常用的是NCSA扩展日志格式(ECLF)及基于自定义类型的Apache日志格式;而W3C扩展日志格式(ExLF)具备了更 为丰富的输出信息,但目前的应用并不广泛,所以这里主要介绍的是NCSA扩展日志格式(ECLF)。

2、常见日志格式的组成

访问主机(remotehost)显示主机的IP地址或者已解析的域名。

标识符(Ident) 由identd或直接由浏览器返回浏览者的EMAIL或其他唯一标示,因为涉及用户邮箱等隐私信息,目前几乎所有的浏览器就取消了这项功能。

授权用户(authuser)用于记录浏览者进行身份验证时提供的名字,如果需要身份验证或者访问密码保护的信息则这项不为空,但目前大多数网站日志这项也都是为空的。

日期时间(date)一般的格式形如[22/Feb/2010:09:51:46 +0800],即[日期/月份/年份:小时:分钟:秒钟 时区],占用的的字符位数也基本固定。

请求(request)即在网站上通过何种方式获取了哪些信息,也是日志中较为重要的一项,主要包括以下三个部分:请求类型(METHOD)常见的请求类型主要包括GET/POST/HEAD这三种;请求资源(RESOURCE)显示的是相应资源的URL,可以是某个网页的地址,也可以是网页上调用的图片、动画、CSS等资源;协议版本号(PROTOCOL)显示协议及版本信息,通常是HTTP/1.1或HTTP/1.0。

状态码(status)用于表示服务器响应状态,通常1xx的状态码表示继续消息;2xx表示请求成功;3xx表示请求的重定向;4xx表示客户端错误;5xx表示服务器错误。

传输字节数(bytes)即该次请求中一共传输的字节数。

来源页面(referrer)用于表示浏览者在访问该页面之前所浏览的页面,只有从上一页面链接过来的请求才会有该项输出,如果是新开的页面则该项为空。上例中来源页面是google,即用户从google搜索的结果中点击进入。

用户代理(agent)用于显示用户的详细信息,包括IP、OS、Bowser等。

3、日志格式扩展

apache日志格式可以自定义来配置其输出格式,常见的基于NCSA扩展日志格式(ECLF)自定义添加的包括域名(domain)和cookie。其中域名在一个网站拥有二级域名或者子域名时,可以更好地区分日志;而cookie可以作为用户的身份标识。

【日志分析工具】

系统环境:Red Hat Enterprise Linux Server release 5.4 

基本环境:Httpd-2.2.3-31.el5

一、Webalizer

Webalizer 是一个高效的、免费的web服务器日志分析程序。其分析结果以HTML文件格式保存,从而可以很方便的通过web服务器进行浏览。Internet上的很多站点都使用webalizer进行web服务器日志分析。

①用C写的程序,所以其具有很高的运行效率。在主频为200Mhz的机器上,webalizer每秒钟可以分析10000条记录,所以分析一个40M大小的日志文件只需要15秒。

②webalizer 支持标准的一般日志文件格式(Common Logfile Format);除此之外,也支持几种组合日志格式 (Combined Logfile Format)的变种,从而可以统计客户情况以及客户操作系统类型。并且现在webalizer已经可以支持wu- ftpd xferlog日志格式以及squid日志文件格式了。

③支持命令行配置以及配置文件。

④可以支持多种语言,也可以自己进行本地化工作。

⑥支持多种平台,比如UNIX、linux、NT, OS/2 和 MacOS等。

配置详细步骤:

Red Hat光盘上自带版本(webalizer-2.01_10-30.1.i386)

我们用的是最新源码(webalizer-2.23-05-src.tgz)

Step1:

tar zxvf webalizer-2.23-05-src.tgz -C /usr/local/src/

cd  /usr/local/src/webalizer-2.23-05

./configure  --sysconfdir=/etc

make && make install 

Step2:编辑Apache配置脚本,添加测试域(www.wpp.com

vim /etc/httpd/conf/httpd.cnf

Step3:编辑计划任务,监控Apache的日志(/var/log/httpd/目录)

vim  /etc/crontab(为了实验效果,任务为给分钟执行一次)

创建新计划任务的目录cron.web,并编写可执行计划任务脚本web。

mkdir /etc/cron.web    cd  /etc/cron.web      

vim  web(内容如下图)

chmod  a+x  web  

service  crond  restart(重启计划任务服务,让新计划任务生效)

创建监控日志存放目录. mkdir /var/www/html/alog

Step4:Web方式测试访问流量情况.

修改主机的Hosts文件,添加www.wpp.com域,用于域名解析.

(C:\Windows\System32\drivers\etc\hosts)

浏览器地址栏输入(http://www.wpp.com/alog

注意:第一次访问时,可能只会出现目录浏览,原因是还没有人访问过该站点。此时可以先访问站点主目录,过一分钟后刷新后,再次访问alog目录,即出现访问流量统计信息.(下图)

给过一分钟刷新页面,数值都会有所变化,点击日期有详细的说明.

二、AWStatus

Awstats 是在Sourceforge上发展很快的一个基于Perl的WEB日志分析工具,是一个免费非常简洁而且强大有个性的网站日志分析工具。它可以统计您站点的如下信息:①访问量,访问次数,页面浏览量,点击数,数据流量等②精确到每月、每日、每小时的数据 ③访问者国家 ④访问者IP ⑤Robots/Spiders的统计⑥访客持续时间⑦对不同Files type 的统计信息⑧Pages-URL的统计⑨访客操作系统浏览器等信息⑩其它信息(搜索关键字等等)

相对于刚才介绍的日志分析工具Webalizer,AWStats的优势在于:

①界面友好:可以根据浏览器直接调用相应语言界面(有简体中文版)

②基于Perl:并且很好的解决了跨平台问题,系统本身可以运行在GNU/Linux上或Windows上(安装了ActivePerl后);分析的日志直 接支持Apache格式 (combined)和IIS格式(需要修改)。Webalizer虽然也有Windows平台版,但目前已经缺乏 维 护;AWStats完全可以实现用一套系统完成对自身站点不同WEB服务器:GNU/Linux/Apache和Windows/IIS服务器的统一统 计。

③效率比较高:AWStats输出统计项目比Webalizer丰富了很多,速度仍可以达到Webalizer的1/3左右,对于一个日访问量 百万级的站点,这个速度都是足够的;

④配置/定制方便:系统提供了足够灵活但缺省也很合理的配置规则,需要修改的缺省配置不超过3,4项就可以开始运行,而且修改和扩展的插件 比较多;

⑤AWStats的设计者是面向精确的"Human visits"设计的,因此很多搜索引擎的机器人访问都被过滤掉了,因此有可能比其他日志统计工具统计的数字要低,来自公司内部的访问也可以通过IP过滤 设置过滤掉。

⑥提供了很多扩展的参数统计功能:使用ExtraXXXX系列配置生成针对具体应用的参数分析会对产品分析非常有用。

配置详细步骤:

我们用的是最新版源码:awstats-7.1.1.tar.gz

Step1:

tar -zxvf awstats-7.1.1.tar.gz -C /usr/local/src/

cd  /usr/local/src/awstats-7.1.1/tools/

perl  awstats_configure.pl 

Step2:编辑生成的主配置文档.

vim  /etc/awstats/awstats.www.wpp.com.conf

Step3:创建Web方式查看流量的主目录test,拷贝显示网页需要的图形工具(icon、css)

mkdir  /var/www/html/test

cd   /usr/local/src/awstats-7.1.1/wwwroot/

cp -R  icon  /var/www/html/test/

cp -R  css  /var/www/html/test/

Step4:编辑原来的计划任务脚本(/etc/cron.web/web)添加如下;

service  crond  restart(重启计划任务服务,让新计划任务生效)

至于目录访问安全性问题,在此不作详述,根据安全需要,自行添加.

Step4:进行Web方式的流量监控测试.(记得修改主机Hosts文件)

浏览器地址栏输入(http://www.wpp.com/test

 

 

三、ApacheTop

ApacheTop可以动态的查看apache的日志文件,还可以直观的看到访问的每个地址的请求数、速度及流量等信息。

配置详细步骤:

我们用的是最新版源码:apachetop-0.12.6.tar.gz

Step1:

tar zxvf  apachetop-0.12.6.tar.gz -C /usr/local/src/

cd /usr/local/src/apachetop-0.12.6

./configure && make && make install 

Step2:使用参数说明.

Step3:启动监控(T 值设定大一点,d 值小一点,用于监控)

apachetop -f /var/log/httpd/access_log -T 1000 -d  2

Step4:q键退出监控.

四、GoAccess

GoAccess 是一个用来统计 Apache Web 服务器的访问日志的工具,可即时生成统计报表,速度非常快。

配置详细步骤:

我们用的是最新版源码:goaccess-0.5.tar.gz

Step1:

tar zxvf  goaccess-0.5.tar.gz -C /usr/local/src/

cd /usr/local/src/goaccess-0.5

./configure && make && make install 

Step2:使用参数说明.(goaccess回车/ man  goaccess)

Step3:启动监控

①Common Log Format (CLF) 格式的日志显示结果:

②NCSA Combined Log Format 格式的日志显示结果:

Step4:q键退出监控.

 

 

来自 http://tywangpanpan.blog.51cto.com/6264315/1176447

 

 

WEB日志格式及分析工具

作者: seasun  发布时间: 2010-09-26 22:14  阅读: 973 次  推荐: 0   原文链接   [收藏]  
摘要:了解WEB日志的格式和组成将有利于更好地进行数据的收集、处理和分析,是网站分析和网站数据数据整理最基础的数据。

  WEB日志是网站分析和网站数据数据整理最基础的数据,了解其格式和组成将有利于更好地进行数据的收集、处理和分析。

  一、日志格式类型

  目前常见的WEB日志格式主要由两类,一类是Apache的NCSA日志格式,另一类是IIS的W3C日志格式。NCSA格式又分为NCSA普 通日志格式(CLF)和NCSA扩展日志格式(ECLF)两类,目前最常用的是NCSA扩展日志格式(ECLF)及基于自定义类型的Apache日志格 式;而W3C扩展日志格式(ExLF)具备了更为丰富的输出信息,但目前的应用并不广泛,所以这里主要介绍的是NCSA扩展日志格式(ECLF)。

  二、常见日志格式的组成

  这是一个最常见的基于NCSA扩展日志格式(ECLF)的Apache日志样例:

1
58.61.164.141 – – [22/Feb/2010:09:51:46 +0800] “GET / HTTP/1.1″ 206 6326 ” http://www.google.cn/search?q=webdataanalysis” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)”

  可以看到这个日志主要由以下几个部分组成:

  访问主机(remotehost)显示主机的IP地址或者已解析的域名。

  标识符(Ident)由identd或直接由浏览器返回浏览者的EMAIL或其他唯一标示,因为涉及用户邮箱等隐私信息,目前几乎所有的浏览器就取消了这项功能。

  授权用户(authuser)用于记录浏览者进行身份验证时提供的名字,如果需要身份验证或者访问密码保护的信息则这项不为空,但目前大多数网站的日志这项也都是为空的。

  日期时间(date)一般的格式形如[22/Feb/2010:09:51:46 +0800],即[日期/月份/年份:小时:分钟:秒钟时区],占用的的字符位数也基本固定。

  请求(request)即在网站上通过何种方式获取了哪些信息,也是日志中较为重要的一项,主要包括以下三个部分:

  •  请求类型(METHOD)常见的请求类型主要包括GET/POST/HEAD这三种;
  •  请求资源(RESOURCE)显示的是相应资源的URL,可以是某个网页的地址,也可以是网页上调用的图片、动画、CSS等资源;
  •  协议版本号(PROTOCOL)显示协议及版本信息,通常是HTTP/1.1或HTTP/1.0。

  状态码(status)用于表示服务器的响应状态,通常1xx的状态码表示继续消息;2xx表示请求成功;3xx表示请求的重定向;4xx表示客户端错误;5xx表示服务器错误。

  传输字节数(bytes)即该次请求中一共传输的字节数。

    来源页面(referrer)用于表示浏览者在访问该页面之前所浏览的页面,只有从上一页面链接过来的请求才会有该项输出,如果是新开的页面则该项为空。上例中来源页面是google,即用户从google搜索的结果中点击进入。

  用户代理(agent)用于显示用户的详细信息,包括IP、OS、Bowser等。

  三、日志格式扩展

  apache日志格式可以自定义来配置其输出格式,常见的基于NCSA扩展日志格式(ECLF)自定义添加的包括域名(domain)cookie。其中域名在一个网站拥有二级域名或者子域名时,可以更好地区分日志;而cookie可以作为用户的身份标识。其他具体的自定义信息详见:Custom Log Formats

  四、导入日志数据到MySQL中

  访问分析是SEO的一项重要工作,但统计、分析工具毕竟功能是针对大众的,很多时候SEO需要一些特定的数据,是统计分析软件、程序所不能提供 的。这样,直接的Web日志分析就是最合适的了,日志中会记录每一个访问情况,只要按自己的意愿提取、组合,就能得到想要的数据。使用SQL语句分析是最 方便的,需要什么样的数据,只要使用相应的SQL命令就能实现。

  导入Web日志到MySQL数据库的实现

  1、修改Apache日志格式

  修改Web日志格式为:

1
Logformat combined %>a,%ui,%un,[%tl],”%rm %ru HTTP/%rv”,%Hs,%h”,”%{User-Agent}>h”,%Ss:%Sh

SQL需要导入的内容有特定的分隔符,Apache的日志默认是以空格分隔的,而有些内容(如状态码中的 200 610)也包含空格,这就无法准确的导入。将日志格式修改为以逗号分隔,就能准确的导入了。还可以根据自己的需要,取消日志格式中不需要的内容,减少日志 文件大小。

  2、建立MySQL数据表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
drop table if exists weblog;
create table weblog (
id int unsigned auto_increment PRIMARY KEY not null,
l_date date,
l_time time,
c_ip varchar(15),
s_ip varchar(15),
s_port varchar(5),
method varchar(10),
path varchar(255),
query varchar(255),
status varchar(3),
domain varchar(50),
system varchar(200)
);

  注:上面只是一个MySQL数据表结构范例,没有与上一步日志格式对应,请勿直接复制使用!

  新建一个数据库,数据表结构与日志格式对应起来。

  3、导入日志到MySQL中

1
LOAD DATA INFILE  ’/日志位置/日志文件’  INTO TABLE weblog FIELDS TERMINATED BY ‘,’;

  weblog 对应上面的数据表名。

  另外,乐思蜀从网上找到一个将IIS日志导入到MySQL数据库的.pl程序,需要的点这里下载(Readme.txt为使用说明)。

  五、常用日志分析工具

  1.awstats

  2.analog

  3.webalizer

  4.PHPMyVisites

  本文参考:

  http://webdataanalysis.net/reference-and-source/weblog-format/

  http://www.lesishu.com/net/import-weblog-to-mysql/

来自 http://kb.cnblogs.com/page/75570/

 

普通分类: