如何分析iis日志
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何分析iis日志相关的知识,希望对你有一定的参考价值。
如果你的网站也不定时的出现连接超时,打开超慢的情况,而服务商又说没有问题,不妨跟着本文学着分析IIS日志,自己来解决问题。IIS日志通常情况下存在于虚拟主机根目录下的logfiles文件夹(有些服务商是WebLog,不同的主机有不同的名称)中,按日期形成的txt文件或log.gz文件。它完整的记录着每一次网站的HTTP请求,包括200,404等。 参考技术A 虽然Log
Parser支持将解析的IIS日志以表格形式供人阅读,但是有时候我们需要再做一些细致分析时,可能会按不同的方式进行【多次】查询,
对于这种需求,如果每次查询都直接运行Log Parser,你会浪费很多时间。 幸运的是,Log
Parser支持将解析结果以多种格式导出(以下为帮助文档截图):
在此,我建议选择输出格式为 SQL 。 注意:这里的SQL并不是指SQLSERVER,而是指所有提供ODBC访问接口的数据库。 我可以使用下面的命令将IIS日志导入到SQLSERVER中(说明:为了不影响页面宽度我将命令文本换行了):
"C:\Program Files\Log Parser 2.2\logparser.exe"
"SELECT * FROM 'D:\Temp\u_ex130615.log' to MyMVC_WebLog" -i:IISW3C -o:SQL
-oConnString:"Driver=SQL Server;server=localhost\sqlexpress;database=MyTestDb;Integrated Security=SSPI" -createtable:ON
导入完成后,我们就可以用熟悉的SQLSERVER来做各种查询和统计分析了,例如下面的查询:
SELECT cip,csmethod,sport,csuristem,scstatus,scwin32status,scbytes,csbytes,timetaken
FROM dbo.MyMVC_WebLog
如果如下:
1.
IIS日志在将结果导出到SQLSERVER时,字段名中不符合标识符规范的字符将会删除。 例如:c-ip 会变成 cip, s-port
会变成 sport 。 2. IIS日志中记录的时间是UTC时间,而且把日期和时间分开了,导出到SQLSERVER时,会生成二个字段:
date, time这二个字段看起来很不舒服,对吧? 我也很反感这个结果,下面来说说的二种解决方法:
1. 在SQLSERVER中增加一列,然后把UTC时间换成本地时区的时间,T-SQL脚本如下:
alter table MyMVC_WebLog add RequestTime datetime
goupdate MyMVC_WebLog set RequestTime=dateadd(hh,8,convert(varchar(10),date,120)
+ ' ' + convert(varchar(13),time,114))
2. 直接在导出IIS日志时,把时间转换过来,此时要修改命令:
"C:\Program Files\Log Parser 2.2\logparser.exe"
"SELECT TO_LOCALTIME(TO_TIMESTAMP(ADD(TO_STRING(date, 'yyyy-MM-dd '), TO_STRING(time, 'hh:mm:ss')),
'yyyy-MM-dd hh:mm:ss')) AS RequestTime, * FROM 'D:\Temp\u_ex130615.log' to MyMVC_WebLog2" -i:IISW3C -o:SQL
-oConnString:"Driver=SQL Server;server=localhost\sqlexpress;database=MyTestDb;Integrated Security=SSPI"-createtable:ON
再看这三列:
select RequestTime, date, time from MyMVC_WebLog2
这样处理后,你就可以直接把date, time这二列删除了(你也可以在导出IIS日志时忽略它们,但要明确指出每个字段名)。
IIS日志中的UTC时间问题就说到这里,但愿每个人都懂了~~~~~~~~~~~
IIS日志中的异常记录
IIS日志中记录了每个请求的信息,包括正常的响应请求和有异常的请求。
这里所说的【异常】与 .net framework 中的异常没有关系。 对于一个ASP.NET程序来说,如果抛出一个未捕获异常,会记录到IIS日志中(500),但我所说的异常不仅限于此。
本文所说的异常可分为四个部分: 1. (ASP.NET)程序抛出的未捕获异常,导致服务器产生500的响应输出。 2. 404之类的请求资源不存在错误。 3. 大于500的服务器错误,例如:502,503 4. 系统错误或网络传输错误。
前三类异常可以用下面的查询获得:
select
scStatus, count(*) AS count, sum(timetaken * 1.0) /1000.0 AS
sum_timetaken_secondfrom MyMVC_WebLog with(nolock)group by scStatusorder
by 3 desc
IIS日志中有一列:sc-win32-status ,它记录了在处理请求过程中,发生的系统级别错误,例如网络传输错误。 正常情况下,0 表示正常,出现非零值意味着出现了错误。我们可以这样统计这类错误:
declare
@recCount bigint;select @recCount = count(*) from MyMVC_WebLog
with(nolock)select scWin32Status, count(*) AS count, (count(*) * 100.0 /
@recCount) AS [percent]
from MyMVC_WebLog with(nolock)where scWin32Status > 0group by
scWin32Statusorder by 2 desc
如何查看及分析网站IIS日志文件
IIS查看分析网站日志需要找到日志目录,下面小编在Win10系统演示一下:
1、打开开始界面,点击左下角的设置图标,如下图所示
2、搜索管理工具,点击进入,如下图所示
3、双击IIS管理器,进入IIS管理界面,如下图所示
4、左侧选择要查看日志的网站,如下图所示
5、右侧找到日志图标,双击进入,如下图所示
6、在日志界面找到目录,点击浏览进入日志文件夹,如下图所示
7、最后在日志文件夹找到日志进行查看分析即可,如下图所示
参考技术A网站IIS日志分析是一个专业的SEO必备的工作技能之一,服务器的一些状况和访问IP的来源都会记录在IIS日志中,所以IIS日志对每个服务器管理者非常的重要,这点同时也可方便网站管理人员查看网站的运营情况。
通过分析查看网站IIS日志可以让我们知道分析出网站的死链接,301,202,等等,可让我们知道网站那些链接是搜索引擎经常爬取的,每天那些页面是被搜索引擎爬取过,可以分析出网站是否被降权、哪些页面被收录等,今天,马海祥就跟大家分享一下如何查看IIS日志,以及如何分析IIS日志?希望对大家有所帮助。
一、IIS日志是什么?
IIS日志主要用于记录用户和搜索引擎蜘蛛对网站的访问行为。
简单来说,网站IIS日志就是指记录各种搜索引擎蜘蛛来访并抓取网站的行为状态码,并已文件的方式生成IIS日志。
我们可以通过IIS日志来让我们知道蜘蛛来访的记录,而且可以让我们知道网站的死链接,301等,让我们及时的分析好网站的收录和快照更新情况。
IIS日志中,包括客户端访问时间、访问来源、来源IP、客户端请求方式、请求端口、访问路径及参数、Http状态码状态、返回字节大小等信息(具体可查看马海祥博客《如何通过iis日志分析网站的隐形信息》的相关介绍)。
二、如何查看IIS日志文件?
Windows2003环境中,IIS日志默认存储路径:C:\\WINDOWS\\system32\\LogFiles\\,在LogFiles文件夹下,存在多个IIS日志文件夹,每个IIS日志文件夹对应一个站点日志,当然IIS日志文件存储位置也可以根据自己的实际情况,在IIS管理器中重新设定,具体的步骤如下:
1、进入服务器的管理之后,打开“Internet 信息服务(IIS)管理器”,图标如下图所示:
2、双击信息服务(IIS)管理器,进入管理以后打开信息服务(IIS)管理器,选中要查看的网站,在网站栏目那里右键单击,选择“属性”,如下图所示:
3、在弹出的窗口里面,点击“网站”栏目,查看日志记录中的“属性”,
4、通过日志记录属性栏目,即可看到日志文件目录了
上面的日志文件目录即是iis的文件存放位置了,IIS日志文件便在C:\\WINDOWS\\system32\\LogFiles\\文件夹内。
IIS日志文件存储格式是后缀名为log的文本文件,如下面这些文件就是网站的iis日志了。
要查看对应站点的IIS日志,只需要打开对应IIS日志文件夹找到相对应日志文件即可,也可借助IIS日志分析工具提供查看IIS日志的效率!
三、如何分析IIS日志?
知道了IIS日志的位置了,也看到了IIS日志的文件了,接下来我们就应该对日志文件进行分析了,那么,我们该如果分析IIS日志呢?
1、如何查看IIS日志信息
IIS日志可以用IIS日志分析工具去大概的去查一查,一般工具都能查出有各种蜘蛛来到网站的总数,以及有没有失败,不会把各种的信息都给你,工具分析只是简单的告诉你一个概况,马海祥在此就拿出一条信息来为大家具体的分析一下,如下面的截图所示:
我们可以分段对这个IIS日志进行分析:
2010-10-22 05:04:53 表示的是时间;
W3SVC151800 P-0YMR9WW8YX4U9是机器编号;
222.76.213.49为网站的IP;
GET是触发事件;
80是端口号;
61.135.186.49是搜索引擎蜘蛛的IP;
Baiduspider是百度的蜘蛛(另外,谷歌蜘蛛:Googlebot;360搜索蜘蛛:360Spider,更多的可查看马海祥博客《解读iis日志中搜索引擎蜘蛛名称代码及爬寻返回代码》的相关介绍);
200 0 0是访问成功的返回代码;
41786 193 6968是蜘蛛与网站对话的时间与下载的数据以及花了多少时间。
连在一起就是2010.10.22的早上5点4分53秒的时候一个编号为W3SVC151800 P-0YMR9WW8YX4U9的蜘蛛通过80端口进入网站成功访问并下载了47186B的数据,花费了193MS。
2、用excel表格分析网站的iis日志
先新建一个excel表格,把刚才的ex121129.log文件里的文件粘贴到新建的excel表格里面,,如下图所示:
复制之后,选定A,在工具栏里选择数据→分列,如下图所示:
选择分隔符号,点击下一步:
选择空格,去掉Tab键前面的钩,点击完成,如下图所示:
网站的iis日志就这样被拆分出来了,之后自己再调整一下表格的列宽、升降序等即可。
四、详解IIS日志参数
一般情况下,IIS日志文件代码格式如下所示:
#Software: Microsoft Internet Information Services 6.0
#Version: 1.0
#Date: 2009-11-26 06:14:21
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status
2009-11-26 06:14:21 W3SVC692644773 125.67.67.* GET /index.html - 80 - 123.125.66.130 Baiduspider+(+http://www.baidu.com/search/spider.htm) 200 0 64
2009-11-26 06:14:21 W3SVC692644773 125.67.67.* GET /index.html - 80 - 220.181.7.116 Baiduspider+(+http://www.baidu.com/search/spider.htm) 200 0 64
在此,马海祥也为大家详细的解说一下IIS日志参数:
date:发出请求时候的日期。
time:发出请求时候的时间,注意:默认情况下这个时间是格林威治时间,比我们的北京时间晚8个小时,下面有说明。
c-ip:客户端IP地址。
cs-username:用户名,访问服务器的已经过验证用户的名称,匿名用户用连接符-表示。
s-sitename:服务名,记录当记录事件运行于客户端上的Internet服务的名称和实例的编号。
s-computername:服务器的名称。
s-ip:服务器的IP地址。
s-port:为服务配置的服务器端口号。
cs-method:请求中使用的HTTP方法,GET/POST。
cs-uri-stem:URI资源,记录做为操作目标的统一资源标识符(URI),即访问的页面文件。
cs-uri-query:URI查询,记录客户尝试执行的查询,只有动态页面需要URI查询,如果有则记录,没有则以连接符-表示,即访问网址的附带参数。
sc-status:协议状态,记录HTTP状态代码,200表示成功,403表示没有权限,404表示找不到该页面,具体说明在下面。
sc-substatus:协议子状态,记录HTTP子状态代码。
sc-win32-status:Win32状态,记录Windows状态代码。
sc-bytes:服务器发送的字节数。
cs-bytes:服务器接受的字节数。
time-taken:记录操作所花费的时间,单位是毫秒。
cs-version:记录客户端使用的协议版本,HTTP或者FTP。
cs-host:记录主机头名称,没有的话以连接符-表示。马海祥提醒大家注意:为网站配置的主机名可能会以不同的方式出现在日志文件中,原因是HTTP.sys使用Punycode编码格式来记录主机名。
cs(User-Agent):用户代理,客户端浏览器、操作系统等情况。
cs(Cookie):记录发送或者接受的Cookies内容,没有的话则以连接符-表示。
cs(Referer):引用站点,即访问来源。
五、搜索引擎蜘蛛爬寻返回代码
HTTP协议状态码的含义,协议状态sc-status,是服务器日记扩展属性的一项,下面是各状态码含义:
"100" :Continue,客户必须继续发出请求。
"101" :witching Protocols,客户要求服务器根据请求转换HTTP协议版本。
"200" :OK,交易成功。
"201" :Created,提示知道新文件的URL。
"202" :Accepted,接受和处理、但处理未完成。
"203" :Non-Authoritative Information,返回信息不确定或不完整。
"204" :No Content,请求收到,但返回信息为空。
"205" :Reset Content,服务器完成了请求,用户代理必须复位当前已经浏览过的文件。
"206" :Partial Content,服务器已经完成了部分用户的GET请求。
"300" :Multiple Choices,请求的资源可在多处得到。
"301" :Moved Permanently,删除请求数据。
"302" :Found,在其他地址发现了请求数据。
"303" :See Other,建议客户访问其他URL或访问方式。
"304" :Not Modified,客户端已经执行了GET,但文件未变化。
"305" :Use Proxy,求的资源必须从服务器指定的地址得到。
"306" :前一版本HTTP中使用的代码,现行版本中不再使用。
"307" :Temporary Redirect,申明请求的资源临时性删除。
"400" :Bad Request,错误请求,如语法错误。
"401" :Unauthorized,请求授权失败。
"402" :Payment Required,保留有效ChargeTo头响应。
"403" :Forbidden,请求不答应(具体可查看马海祥博客《403 Forbidden错误的原因和解决方法》的相关介绍)。
"404" :Not Found,没有发现文件、查询或URl(具体可查看马海祥博客《404 Not Found错误页面的解决方法和注意事项》的相关介绍)。
"405" :Method Not Allowed,用户在Request-Line字段定义的方法不答应。
"406" :Not Acceptable,根据用户发送的Accept拖,请求资源不可访问。
"407" :Proxy Authentication Required,类似401,用户必须首先在代理服务器上得到授权。
"408" :Request Time-out,客户端没有在用户指定的饿时间内完成请求。
"409" :Conflict,对当前资源状态,请求不能完成。
"410" :Gone,服务器上不再有此资源且无进一步的参考地址。
"411" :Length Required,服务器拒绝用户定义的Content-Length属性请求。
"412" :Precondition Failed,一个或多个请求头字段在当前请求中错误。
"413" :Request Entity Too Large,请求的资源大于服务器答应的大小。
"414" :Request-URI Too Large,请求的资源URL长于服务器答应的长度。
"415" :Unsupported Media Type,请求资源不支持请求项目格式。
"416" :Requested range not satisfiable,请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段。
"417" :Expectation Failed,服务器不满足请求Expect头字段指定的期望值,假如是代理服务器。
"500" :Internal Server Error,服务器产生内部错误。
"501" :Not Implemented,服务器不支持请求的函数。
"502" :Bad Gateway,服务器暂时不可用,有时是为了防止发生系统过载。
"503" :Service Unavailable,服务器过载或暂停维修。
"504" :Gateway Time-out,关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长。
"505" :HTTP Version not supported,服务器不支持或拒绝支请求头中指定的HTTP版本.
参考技术B 首选如何设置iis日志:(仅适用于服务器,虚拟主机需要让空间商给设置)1.打开Internet信息服务在指定站点上点击鼠标右键,选择“属性”。在网站“属性”窗口,“网站”标签中在“启用日志记录”前打勾,并在“活动日志格式”中选择“W3C扩展日志文件格式”。2.点击“活动日志格式”右侧的“属性”,设置“常规属性”。在“新建日志时间”选项选择“每天”,在“文件命名和回卷使用当地时间”前打勾。3.点击“活动日志格式”右侧的“属性”,设置“扩展属性”。在“扩展日志记录选项”里选择如下选项,并点击“确定”保存。(1)日期(date)(2)时间(time)(3)客户端IP地址(c-ip)(4)用户名(cs-username)(5)方法(cs-method)(6)URI资源(cs-uri-stem)(7)URI查询(cs-uri-query)(8)协议状态(sc-status)(9)发送的字节数(sc-bytes)(10)协议版本(cs-version)(11)用户代理(csUser-Agent)(12)引用站点(csReferer)开头四行都是日志的说明信息#Software生成软件#Version版本#Date日志发生日期#Fields字段,显示记录信息的格式,可由IIS自定义。日志的主体是一条一条的请求信息,请求信息的格式是由#Fields定义的,每个字段都有空格隔开。以上是关于如何分析iis日志的主要内容,如果未能解决你的问题,请参考以下文章