zoukankan      html  css  js  c++  java
  • LogParser的IIS网站分析技

    LogParser介绍

    LogParser是微软的一个免费的日志分析工具,它支持许多格式的文件类型。主要有如下几类:

    · IIS 文件格式

    Ø IISW3C: IIS产生的W3C扩展格式

    Ø IIS: IIS专有格式.

    Ø BIN: IIS的BIN格式.

    Ø IISODBC: IIS可以把日志存储在数据库中。LogParser可以分析存储在数据库中的IIS日志.

    Ø HTTPERR: Http.sys日志格式.

    Ø URLSCAN: URLScan 日志格式.

    · 通用文本格式

    Ø CSV: 逗号分隔符文件.

    Ø TSV: 以空格或者以制表符分隔的文件.

    Ø XML: XML格式.

    Ø W3C: W3C格式.

    Ø NCSA: NCSA格式.

    Ø TEXTLINE: 普通文件文件. LogParser可以按行返回内容

    Ø TEXTWORD: LogParser可以把按字返回内容.

    · 系统信息

    EVT: 事件日志文件.

    FS: 文件目录.

    REG: 注册表格式.

    ADS: AD信息.

    另外还有一些其它格式,如NetMon, ETW等,在此不详述了。

    LogParser原理

    LogParser架构如下图所示:

    clip_image001

    注:图片引自http://e-mojo.net/wp-content/uploads/2009/11/logparser_architecture.gif

    LogParser的核心为类SQL引擎,主要用于LogParser的SQL解析。使用LogParser我们可以把日志文件转换为很多格式,然后,我们可以用自己顺手的工具对其进行分析。

    需要注意的是,如果我们要输出图形格式,必须安装Office Web组件。

     

    IIS高级日志分析

    本文主要介绍一些高级IIS日志分析功能,基本的分析功能请参考这些BLOG:

    http://hi.baidu.com/tpxc/blog/item/b6e4561060f2ecf9c2ce7931.html

    http://www.cnblogs.com/yonglun/archive/2007/02/20/652929.html

     

    每天用户访问数

    logparser "SELECT To_Date(TO_LOCALTIME(TO_TIMESTAMP(date, time))) AS [Date1], c-ip AS CIP INTO IISHC_DistinctClientIPPerDay.csv FROM *.log GROUP BY [Date1], CIP" -i:IISW3C -o:CSV -recurse:-1

    我们按日期进行汇总,主要是利用Group by 实现。由于IIS日志中时间为UTC格式,因此,我们需要使用To_Date(TO_LOCALTIME(TO_TIMESTAMP(date, time)))把其转换为本地时间。

    recurse:-1参数使LogParser对子目录下所有文件进行统计。

    本例中产生一个CSV文件,我们可以使用Excel进行处理,得出每天用户数曲线(当然,我们也可以直接用LogParser产生图形)。如下是一个例子:

    clip_image003

    每小时用户访问数

    logparser "SELECT TO_LOCALTIME(QUANTIZE(TO_TIMESTAMP(date, time),3600)) AS Hours, COUNT(*) AS Hits INTO IISHC_RequestsPerHour.csv FROM *.log where To_Date(TO_LOCALTIME(TO_TIMESTAMP(date, time)))=TIMESTAMP('10/08/2010','MM/dd/yyyy' ) GROUP BY Hours ORDER BY Hours" -i:IISW3C -o:CSV -recurse:-1

    主要用法与上例类似。不过我们需要指定日期。指定日期在where To_Date(TO_LOCALTIME(TO_TIMESTAMP(date, time)))=TIMESTAMP('10/08/2010','MM/dd/yyyy' )中实现。

    clip_image005

    拆分文件

    缺省情况下,IIS每天产生一个日志文件。对于一些特别繁忙的网站来说,IIS日志文件可能会非常大。我曾经有一个客户,每个日志文件有2个G之多。这么大的文件用LogParser进行分析时会非常慢,同时也很容易报错。

    解决办法是把日志文件进行拆分成许多小文件分别进行分析。如下命令可以把一个IIS日志按小时分成24个文件:

    logparser "SELECT REPLACE_CHR(REPLACE_CHR(TO_STRING(TO_LOCALTIME(QUANTIZE(TO_TIMESTAMP(date, time), 3600)), 'yyyy-MM-dd hh:mm:ss'), ':', '_'), ' ', '_'), date, time, c-ip, cs-uri-stem, cs-uri-query, sc-status, sc-substatus, sc-win32-status, sc-bytes, cs-bytes, time-taken FROM ex080114.log TO ex080114_*.log" -i:IISW3C -o:W3C

    这里边的技巧请大家自己去理解J 怎么样?

    附录

    1. LogParser下载地址

    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en

    2. Office 2003 Web Component

    http://www.microsoft.com/downloads/en/details.aspx?FamilyId=7287252C-402E-4F72-97A5-E0FD290D4B76&displaylang=en

    3. Security Update for Microsoft Office Web Components

    http://www.microsoft.com/downloads/en/details.aspx?familyid=95c94c9a-6aca-42fb-9679-3234f06c72f7&displaylang=en

    Robert

  • 相关阅读:
    zookeeper集群搭建2.7
    hadoop集群环境搭建
    Kettle(6.0) 参数方式连接数据库
    kettle数据同步的5中方案
    kettle 合并记录步骤中的 关键字段和 比较字段的说明
    KETTLE常见问题和优化
    Hbase与Oracle的比较
    EHCache
    hdu2014 青年歌手大奖赛_评委会打分【C++】
    hdu2013 蟠桃记【C++】
  • 原文地址:https://www.cnblogs.com/symphonygcr/p/4060763.html
Copyright © 2011-2022 走看看