zoukankan      html  css  js  c++  java
  • IIS日志分析

    Web服务事件查看器

      IIS服务器是我们常用的Web站点部署工具,而我们有时可能遇到IIS服务器的应用程序池莫名其妙的关闭了,或者是其他未知原因等等,我们这是可以通过微软提供的WebServer(Web服务事件查看器),来帮助我们查找原因。

    参考:事件查看器

    IIS日志文件 

      默认情况下,IIS会产生日志文件,有些参数值得我们关注。参考:IIS日志字段详解

    IIS的设置界面如下(本文以 IIS 8 的界面为例)。在IIS管理器中,选择某个网站,双击【日志】图标,请参考下图:

    将里面的日志文件拷贝出来分析。

    日志文件是txt格式,我们可以通过两种方法处理它:直接复制在excel中;用log parser工具将txt文件导入到sql数据库中

    本文以后者(因为可以通过查询刷选做更好的分析)讲述如何处理。

    IIS日志文件处理步骤:

    1、安装软件log parser2.2。(专门解析IIS日志)
    2、在CMD中 进入到安装目录下,执行以下命令

    logparser "SELECT * FROM C:Usersyong-hDesktoplogu_ex18051010.log TO IISLog_table" -o:SQL -server:localhost -driver:"SQL Server" -database:hy -username:sa -password:1127 -createtable:ON

    或者
    logparser "SELECT * FROM 'C:Usersyong-hDesktoplogu_ex18051010.log' to WebLog" -i:IISW3C -o:SQL -oConnString:"Driver={SQL Server};server=localhost;database=hy;Integrated Security=true" -createtable:ON


    3、在sql数据库中将日期和时间合成一列
    alter table [IISLog_table] add RequestTime datetime

    update [IISLog_table] set RequestTime=dateadd(hh,8,convert(varchar(10),date,120) + ' ' + convert(varchar(13),time,114))

    --DATEADD() 函数在日期中添加或减去指定的时间间隔。DATEADD(datepart,number,date)
    --CONVERT() 函数可以用不同的格式显示日期/时间数据。CONVERT(data_type(length),data_to_be_converted,style)

    注意:IIS日志的时间与计算机的系统时间不符,比如在中国时区就会相差8小时。
    是因为:W3C 扩展日志文件定义日志采用GMT时间(即格林尼治标准时间),而中国在GMT +8时区,自然就相差八个小时了。


    4、分析数据

    • 查找耗时操作

    SELECT RequestTime,LogRow ,cIp as 客户端ip,sIp as 服务器ip,sPort,csMethod,csUriStem,timeTaken,scStatus as 协议状态 ,scWin32Status as Win32状态,csUriQuery,scBytes as 发送的字节数 ,csBytes as 接收的字节数据,csUserAgent
    FROM [hy].[dbo].[IISLog_table]
    where timeTaken>1000
    GO

    • 查找协议状态不为200(ok)的

    SELECT RequestTime,LogRow ,cIp as 客户端ip,sIp as 服务器ip,sPort,csMethod,csUriStem,
    timeTaken,scStatus as 协议状态 ,scWin32Status as Win32状态,csUriQuery,scBytes as 发送的字节数 ,
    csBytes as 接收的字节数据,csUserAgent
    FROM [hy].[dbo].[IISLog_table]
    where scStatus<>200

    • 统计协议状态

    select scStatus, count(*) AS count
    from [IISLog_table] with(nolock)
    group by scStatus

    • 统计Win32状态(它记录了在处理请求过程中,发生的系统级别错误,例如网络传输错误。0:正常)

    select scWin32Status, count(*) AS count
    from [IISLog_table] with(nolock)
    group by scWin32Status

    --所有状态码都可以通过下面的cmd命令来获取对应的解释:
    net helpmsg 64

    其中
    2 系统找不到指定的文件
    64 客户端连接已关闭(或者断开)。。换句话说:可以从scwin32status=64的统计结果看出网站的响应速度是否能让用户满意。
    121 传输超时
    1236 本地网络中断

    关于scwin32status与scStatus,我还想补充说明一下:它们没有关联。
    比如请求这个地址:http://www.abc.com/test.aspx
    有可能scStatus=200,但scwin32status=64,此时表示ASP.NET已成功处理请求,但是IIS在发送响应结果时,客户端的连接断开了。
    另一种情况是:scStatus=500,但scwin32status=0,此时表示,在处理请求过程中发生了未捕获异常,但异常结果成功发送给客户端。

    参考:IIS日志-网站运维的好帮手

  • 相关阅读:
    课堂作业04 2017.10.27
    课程作业 03 动手动脑 2017.10.20
    课程作业 03 2017.10.20
    HDU 3974 Assign the task
    POJ 2155 Matrix
    POJ 2481 Cows
    HDU 3038 How Many Answers Are Wrong
    CS Academy Array Removal
    POJ_1330 Nearest Common Ancestors LCA
    CF Round 427 D. Palindromic characteristics
  • 原文地址:https://www.cnblogs.com/peterYong/p/9023248.html
Copyright © 2011-2022 走看看