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
參考資料: