:::
::: 您的位置:首頁 > 知識寶庫 > IIS知識大補帖.友善列印,開新視窗
  IIS知識大補帖 訂閱IIS知識大補帖
     
 
推文至 facebook 推文至 plurk  | 回列表 |
IIS知識大補帖
標題 IIS LOG 分析 - Log Parser 2.2
發布日期 2017/4/13
發布單位 mis
點閱次數 4717
詳細內容

  最近都在看 老掉牙 的問題,也剛好都沒寫過,所以邊看邊記錄一下囉!今天要說的是分析 Windows 網站 IIS Log 分析,我也用超古老的問題來作為舉例「瀏覽本網站前10 名的使用者」。

Q1: IIS LOG 在哪呢?

=>> IIS 7  => %SystemDrive%inetpublogsLogFiles

記錄

支援的紀錄檔格式
a

=>> IIS 6 => C:WindowsSystem32LogFiles

a

LOG 部分IIS6 雖然跟 IIS7 設定畫面不太相同,但是功能其實差不了多少

a

 

Q2 :怎麼LOG 檔會有 W3SVC1  W3SVC2.... MSFTPSVC1 呢?

a

這是因為你有設定多個 IIS 站台所致,而 W3SVC1 就是你第一個預設站台的 LOG 囉,W3SVC2 就是第2 個。而 MSFTPSVC1 是你第1 FTP LOG 檔。

--- 下載分析程式 Log Parser 2.2 ---

介紹網頁:http://www.microsoft.com/taiwan/technet/iis/expand/LogParser.aspxhttp://www.iis.net/

下載點:「.

至於安裝就秉持「下一步到結束」的原則就裝完了。

--- 第一個分析程式:「瀏覽本網站前10 名的使用者」---

可以用的輸「入」格式 -i:

IISW3C, NCSA, IIS, IISODBC, BIN, IISMSID, HTTPERR, URLSCAN, CSV, TSV, W3C, XML, EVT, ETW, NETMON, REG, ADS, TEXTLINE, TEXTWORD, FS

可以用的輸「出」格式  -o:

 CSV, TSV, XML, DATAGRID, CHART, SYSLOG, NEUROVIEW, NAT, W3C, IIS, SQL, TPL

Q3 :怎麼知道有哪些欄位

>> IIS 7 

a

 
>> IIS 6

a

使用 Logparser SELECT 列出所有欄位

 

LogParser -i:iisw3c -o:csv "select top 1 * from D:\Temp\Logfiles\W3SVC1\*.log"

>> LogFilename,LogRow,date,time,c-ip,cs-username,s-sitename,s-computername,s-ip,s-port,cs-method,cs-uri-stem,cs-uri-query,sc-status,sc-substatus,sc-win32-status,sc-bytes,cs-bytes,time-taken,cs-version,cs-host,cs(User-Agent),cs(Cookie),cs(Referer),s-event,s-process-type,s-user-time,s-kernel-time,s-page-faults,s-total-procs,s-active-procs,s-stopped-procs

 

「瀏覽本網站前10 名的使用者」

C:\PROGRA~1\Log Parser 2.2> LogParser -i:iisw3c -o:csv "select top 10 c-ip, count(*) as count from D:\Temp\Logfiles\W3SVC1\*.log group by c-ip order by count(*) desc"

 

110.69.30.104,72665
22.146.177.66,69166
161.221.146.107,45454
18.232.8.136,45210
167.195.115.125,39339
13.20.242.209,37790
13.125.67.180,35426
41.222.180.131,34867
23.125.67.242,32684
14.40.242.219,28738
Statistics:
-----------
Elements processed: 8702054
Elements output:    10
Execution time:     119.33 seconds (00:01:59.33)

 

 

好看一點的格式 NAT

上面那個例子,把 IP 跟計算出來的 count , 黏在一起的,不太好看,其實那是因為我選用「CSV 」格式的緣故,把 CSV 換成 NAT 就會得到

C:\PROGRA~1\Log Parser 2.2> LogParser -i:iisw3c -o:nat "select top 10 c-ip, count(*) as count from D:\Temp\Logfiles\W3SVC1\*.log group by c-ip order by count(*) desc "

c-ip           count
-------------- -----
110.69.30.104     72665
22.146.177.66     69166
161.221.146.107 45454
18.232.8.136      45210
167.195.115.125 39339
13.20.242.209     37790
13.125.67.180     35426
41.222.180.131   34867
23.125.67.242     32684
14.40.242.219     28738

Statistics:
-----------
Elements processed: 862650
Elements output:    10
Execution time:     17.67 seconds

 

寫入資料庫 - 利用 Logparser 分析完的結果直接寫入資料庫

 

LogParser -i:iisw3c -o:SQL "select top 10 c-ip, count(*) as count into IISLog from D:\Temp\Logfiles\W3SVC1\*.log group by c-ip order by c-ip " -server:Name1234 -database:tempdb -driver:"SQL Server" -CreateTable:ON

Statistics:
-----------
Elements processed: 862650
Elements output:    10
Execution time:     23.52 seconds

SQL Server SSMS 去觀察一下 Tempdb 是否有新增一個名為  IISLog 的資料表(Table

 a

 

-1. 在指定 -server 時,不能使用 localhost 即使你是在本機執行,如果使用 localhost 你會得到下面的錯誤訊息

 

Task aborted.
Error connecting to ODBC Server
  SQL State:     08001
  Native Error:  17
  Error Message: [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server
  
不存在或拒絕存取。

 

而這樣的錯誤,並不是需要建ODBC ,你只需要將名稱改為你的電腦名稱即可。

-2. 這個例子中是用 select ... into 所以每次執行會附加插入結果,這樣會導致無法辨別分析結果,你可以加個時間日期,或是用SQL 的方式,定期將資料表內容清空。

如果要定期的執行分析程式,當然就是將 LogParser 的執行片段寫入 Bat 批次檔,並且設定控制台的「定期的工作」,這樣就可以定期的幫你產生分析結果了。

至於 Bat 內的路徑設定可以參考「 切換目錄 」。

End

 

參考來源: http://blog.xuite.net/tolarku/blog/35881762-IIS+LOG+%E5%88%86%E6%9E%90+-+Log+Parser+2.2+-+20110304+updated

相關連結 目前無資料
相關檔案 目前無資料