只要是基于Windows Server 的IIS来提供Web服务的应用,其实都可以对IIS的日志W3C进行分析,这样可以快速的了解整个web站点的运行情况,特别是对一些请求页面响应时间有要要求的,都可以从这些日志中分析问题出在哪,下面我就以Exchange服务器的IIS日志来给大家介绍PowerBI是如何分析W3C日志的。

要分析Exchange服务器上的IIS日志,首先需要确保IIS的日志是启用的状态,比如Default Web Site站点和Exchange Back End站点的日志,更多关于IIS站点日志设置的信息可以参考:

https://docs.microsoft.com/zh-cn/iis/configuration/system.applicationHost/sites/site/logFile/

clip_image001

启用状态

clip_image002

那么在C:\inetpub\logs\LogFiles目录下您才会看到如下日志目录及文件,每一个站点会生成一个W3SVC的文件夹存放日志,比如默认站点是W3SVC1,Exchange Back End是W3SVC2

clip_image003

可以先用Notepad++查看下这些日志。可以看出基本是以空格为每一个值的划分的

clip_image004

我多收集了几天的日志,然后把这些log文件拷贝到其他目录

clip_image005

接下来我将这些Log文件全部利用Log Parser软件转成CSV文件(Log Parser下载地址:https://www.microsoft.com/en-my/download/details.aspx?id=24659),为什么要转换成CSV呢?虽然PowerBI可以去读Log的文件并以空格为分隔符划分列,但你会发现后面很多空格是没有划分出来的,或许是我遇到了吧,保险起见,这里我就转成了CSV文件

先安装好Log Parsr程序,接下来在日志所在目录我创建一个bat文件,内容如下:

cd "E:\Logs\W3SVC1"

for /R %%f in (*.log) do (

"C:\Program Files (x86)\Log Parser 2.2\"logparser -i:W3C -o:csv "SELECT * INTO '%%f.csv' FROM '%%f'"

)

clip_image006

打开PowerShell,执行这个bat脚本会批量的把这些Log文件全部转成csv文件

clip_image007

都转换完毕后,把CSV文件单独放在一个文件夹里,接下来主要对默认站点的W3SVC1的CSV文件进行分析,还是老样子,先用PowerBI获取数据,选择文件夹

clip_image008

浏览到日志所在目录

clip_image009

选择组合——合并和编辑

clip_image010

确定

1

接下来我删除第一二列

clip_image012

然后关闭并应用

clip_image013

等待加载完成

clip_image014

首先拖一个饼状图看看状态IIS的状态码占比,从占比了解运行情况,这里可以看到饼状图里显示了状态码的分布并显示出了状态码

状态码的含义可以参考:https://support.microsoft.com/en-us/help/943891/the-http-status-code-in-iis-7-0-iis-7-5-and-iis-8-0

但这些状态码是否可以更为直观的显示出含义呢?这里我准备了一个Excel表,整理下状态码和信息的关系

clip_image015

clip_image016

那么右边这些列各代表什么含义呢?可以参考https://msdn.microsoft.com/en-us/library/windows/desktop/aa814385(v=vs.85).aspx

日志文件是一种可定制的ASCII文本格式,文件中的字段前缀定义如下:

s

服务器操作

c

客户操作

sc

服务器到客户端的操作

cs

客户端到服务器操作

下面是我整理的W3C日志的字段和解释

clip_image017

接下来我把上面整理出来的HTTP状态码Excel表也导入进PowerBI

clip_image018

接下来选择关系——管理关系

clip_image019

新建

clip_image020

选择CSV里的sc-status列,然后选择Sheel1里的状态码进行关联,点击确定

clip_image021

点击关闭

clip_image022

关系图里就出现了一条线条关联上了2个表

clip_image023

接下来回到报表里选择刚才的饼状图,我把信息拖到详细信息里,这时你会发现饼状图里原来的状态码全变成了含义的解释,这样更方便直观理解了

clip_image024

调整下值的参数

clip_image025

接下来再创建一个环形图,分析客户端IP源访问请求占比

clip_image026

同理再创建一个服务端IP源访问请求占比

clip_image027

接下来再分析客户端访问请求类型占比

clip_image028

再拖一个时间切片器

clip_image029

接下里再创建一个饼状图分析用户访问请求占比,看看谁访问Exchange请求最多

clip_image030

接下来再分析页面访问次数及平均响应时间

clip_image031

接下来再统计每一个页面状态的发生次数

clip_image032

最后罗列时间,来源IP地址,以及用户采用的什么系统和浏览器或客户端访问的Exchange分析

clip_image033

最后再美化和排版就大功告成了,当然这里介绍的是Exchange的日志分析,其他采用微软IIS作为WEB服务的都可以采用类似的方法来分析哦,毕竟IIS的日志记录都是一样的这些字段

clip_image034