1. 程式人生 > >IIS日誌分析

IIS日誌分析

web ble 例如 文件拷貝 沒有 管理 pms useragent 關閉

默認情況下,IIS會產生日誌文件,不過,還是有些參數值得我們關註。 IIS的設置界面如下(本文以 IIS 8 的界面為例)。

在IIS管理器中,選擇某個網站,雙擊【日誌】圖標,請參考下圖:

技術分享圖片

將裏面的日誌文件拷貝出來分析。

日誌文件是txt格式,我們可以通過兩種方法處理它:直接復制在excel中;用log parser工具將txt文件導入到sql數據庫中。

本文以後者(因為可以通過查詢刷選做更好的分析)講述如何處理。

IIS日誌文件處理步驟:

1、安裝軟件log parser2.2。(專門解析IIS日誌)
2、在CMD中 進入到安裝目錄下,執行以下命令

logparser "SELECT * FROM C:\Users\yong-h\Desktop\log\u_ex18051010.log TO IISLog_table" -o:SQL -server:localhost -driver:"SQL Server" -database:hy -username:sa -password:1127 -createtable:ON

或者
logparser "SELECT * FROM ‘C:\Users\yong-h\Desktop\log\u_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)

4、分析數據

--1、查找耗時操作
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

--2、查找協議狀態不為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


--3、統計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日誌-網站運維的好幫手

IIS日誌分析