by mandy
  30. April 2015 16:24
  
  由於公司管理的一台web server流量不太穩定,
  不確定是異常的流量,還是那天真的沒什麼人瀏覽網站:
   
 
  可以發現2015年4月03日的參觀次數、網頁數、點擊數、位元組都特別少,
  這個數據是由AWStats分析的結果,因此我想利用真正的IIS Log來印證當天的流量有沒有異常。      
     
    
      Log Parser這個工具的出現非常便捷,
  一般傳統的log檔又臭又長,想統計個資訊可能要耗費大量的時間,
  使用Log Parser,就像在使用SQL語法一樣,
  下個SELECT語法就可以兜出你想要的資訊。         
     
    
         - 下載Log Parser 2.2:        
 https://www.microsoft.com/en-us/download/details.aspx?id=24659
- 安裝非常簡單,只要雙擊安裝程式即可。 
- 接著打開Log Parser 2.2工具:        
   
- 打開來就是命令提示字元,就可以在這邊下指令,撈想要呈現的Log資料。        
 例如:我想要知道我的log檔有什麼欄位,就可以搭配TOP 1的語法
 
 LogParser “SELECT TOP 1 * FROM log檔路徑\*.log” –i:w3c –o:csv
 
 ※-i:w3c代表我的log輸入檔是w3c格式
 ※-o:csv代表我要輸出的結果格式為csv檔(以逗號隔開的結果)
   
 
 補充:你可以在這裡看到這些欄位名稱代表的意思。
 
- 接著就是進階一點的用法,我想要統計位元組總和(04/03 8:00 ~ 04/04 8:00)         
 
 先挑出20150403早上8:00以後的數據:(1048576=1024*1024,我把Bytes/1048576=MB)
 
 LogParser “SELECT TO_STRING(TO_TIMESTAMP(DATE, TIME),’MM-dd’) as Day,
 div(sum(cs-bytes),1048576) as INCOMING(K),
 div(sum(sc-bytes),1048576) as OUTGOING(K)
 from 路徑\u_ex150403.log
 WHERE TIME >= '08:00:00' GROUP BY Day”  –i:w3c –o:csv
 
   
 
 
 
 再挑出20150404早上8:00以前的數據:
 LogParser “SELECT TO_STRING(TO_TIMESTAMP(DATE, TIME),’MM-dd’) as Day,
 div(sum(cs-bytes),1048576) as INCOMING(K),
 div(sum(sc-bytes),1048576) as OUTGOING(K)
 from 路徑\u_ex150404.log
 WHERE TIME <= '08:00:00' GROUP BY Day”  –i:w3c –o:csv
 
   
 
 
 
- 最後就可以利用兩個天數的資料相加去做加總,        
 看要分析incoming(輸入server的流量)或是outgoing(server輸出的流量)都可以。
 
 Question:為什麼是抓04/03 8:00 ~ 04/04 8:00的流量?
 Answer:因為AWStats預設是使用英國格林威治的時間(GMT+0)統計流量,
 而台灣是GMT+8,所以要抓04/03 8:00~04/04 8:00的流量才會一致。
   
   
  ※後記「理論上」這個作法應該是最土法煉鋼的,可是卻跟AWStats沒有一天的數據是一致的。
  我猜想AWStats可能有特殊的過濾方法,把重複點擊的資料給篩選掉了(亂猜XD)
  有空再來看看AWStats是怎麼運作的,應該就可以知道為什麼不一樣了Q_Q
       
    參考資料: