Log Service支援採集IIS日誌,並進行多維度分析。本文通過PV、UV、訪問地區分布、錯誤請求、要求方法等維度分析IIS日誌,以評估網站訪問情況。
前提條件
已採集IIS日誌。具體操作,請參見使用IIS配置模式採集日誌。
在採集過程中,Log Service已根據日誌內容自動產生索引。如果您要修改索引,請參見建立索引。
背景資訊
IIS是一款主流的網站伺服器,具備簡單易用、安全效能高等優勢。當您選用IIS搭建網站時,IIS日誌是營運網站的重要訊息。
Log Service推薦選用W3C日誌格式,W3C配置格式如下所示:
logExtFileFlags="Date, Time, ClientIP, UserName, SiteName, ComputerName, ServerIP, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent, BytesRecv, TimeTaken, ServerPort, UserAgent, Cookie, Referer, ProtocolVersion, Host, HttpSubStatus"
IIS日誌範例如下所示:
#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2020-09-08 09:30:26
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
2009-11-26 06:14:21 W3SVC692644773 125.67.67.* GET /index.html - 80 - 10.10.10.10 Baiduspider+(+http://www.example.com)200 0 64 185173 296 0
欄位首碼說明
首碼
說明
s-
伺服器操作
c-
用戶端操作
cs-
用戶端到伺服器的操作
sc-
伺服器到用戶端的操作
各個欄位說明
欄位
說明
date
用戶端發送請求的日期。
time
用戶端發送請求的時間。
s-sitename
用戶端所訪問的網站的Internet服務和執行個體的號碼。
s-computername
組建記錄檔的伺服器名稱。
s-ip
組建記錄檔的伺服器的IP地址。
cs-method
請求方法,例如:GET、POST。
cs-uri-stem
URI資源,表示請求訪問的地址。
cs-uri-query
URI查詢,表示查詢HTTP請求中半形問號(?)後的資訊。
s-port
伺服器連接埠號碼。
cs-username
通過驗證的域或使用者名稱。
如果是通過身分識別驗證的使用者,格式為
域\使用者名稱
。如果是匿名使用者,顯示短劃線(-)。
c-ip
訪問伺服器的用戶端真實IP地址。
cs-version
協議版本,例如:HTTP 1.0、HTTP 1.1。
cs(User-Agent)
用戶端使用的瀏覽器。
Cookie
發送或接受的Cookie內容,如果沒有Cookie,則顯示短劃線(-)。
referer
表示使用者訪問的前一個網站。
cs-host
主機資訊。
sc-status
HTTP協議返回狀態。
sc-substatus
HTTP子協議的狀態。
sc-win32-status
使用Windows術語表示的操作狀態。
sc-bytes
伺服器發送的位元組數。
cs-bytes
伺服器接收的位元組數。
time-taken
請求所花費的時間,單位:毫秒。
操作步驟
在Project列表地區,單擊目標Project。
在控制台左側,單擊日誌儲存,在日誌庫列表中單擊目標Logstore。
輸入查詢和分析語句,然後單擊最近15分鐘,設定查詢和分析的時間範圍。
更多資訊,請參見步驟一:輸入查詢和分析語句。
通過IP地址分析訪問地區。
*| select ip_to_geo("c-ip") as country, count(1) as c group by ip_to_geo("c-ip") limit 100
統計PV和UV。
*| select approx_distinct("c-ip") as uv ,count(1) as pv , date_format(date_trunc('hour', __time__), '%m-%d %H:%i') as time group by date_format(date_trunc('hour', __time__), '%m-%d %H:%i') order by time limit 1000
統計HTTP請求狀態代碼的佔比。
*| select count(1) as pv ,"sc-status" group by "sc-status"
統計流量的流入和流出情況。
*| select sum("sc-bytes") as net_out, sum("cs-bytes") as net_in ,date_format(date_trunc('hour', time), '%m-%d %H:%i') as time group by date_format(date_trunc('hour', time), '%m-%d %H:%i') order by time limit 10000
統計各種要求方法的佔比。
*| select count(1) as pv ,"cs-method" group by "cs-method"
統計各種瀏覽器的佔比。
*| select count(1) as pv, case when "user-agent" like '%Chrome%' then 'Chrome' when "user-agent" like '%Firefox%' then 'Firefox' when "user-agent" like '%Safari%' then 'Safari' else 'unKnown' end as "user-agent" group by case when "user-agent" like '%Chrome%' then 'Chrome' when "user-agent" like '%Firefox%' then 'Firefox' when "user-agent" like '%Safari%' then 'Safari' else 'unKnown' end order by pv desc limit 10
統計訪問數量前十的地址。
*| select count(1) as pv, split_part("cs-uri-stem",'?',1) as path group by split_part("cs-uri-stem",'?',1) order by pv desc limit 10