日誌係列---前端訪問日誌的統計分析
簡介
很多個人站長在搭建網站時使用nginx作為服務器,為了了解網站的訪問情況,一般有兩種手段:
- 使用CNZZ之類的方式,在前端頁麵插入js,用戶訪問的時候觸發js,記錄訪問請求。
- 分析nginx的access log,從日誌中挖掘有用信息。
兩種方式各有優缺點:
- CNZZ使用起來比較簡單,各種指標定義清楚。但這種方式隻能記錄頁麵的訪問請求,像ajax之類的請求是無法記錄的,還有爬蟲信息也不會記錄。
- access log對所有的請求都有記錄,可以說信息非常詳細,但需要站長對訪問日誌具備詳細的了解和動手能力。
兩種手段相互補充,才能對網站的狀況有更加深入的了解。
阿裏雲日誌服務產品在最新版中增強查詢分析功能(LogSearch/Analytics),支持對日誌數據實時索引與查詢分析,能夠在秒級別對億級別數據完成統計,極大的降低了站長們分析access log的門檻。本文將詳細介紹如何使用日誌服務分析access log中的各種指標。
一個典型的訪問日誌,包括了以下幾點:
1. remote_addr : 客戶端地址
2. remote_user : 客戶端用戶名
3. time_local : 服務器時間
4. request : 請求內容,包括方法名,地址,和http協議
5. http_host : 用戶請求是使用的http地址
6. status : 返回的http 狀態碼
7. request_length : 請求大小
8. body_bytes_sent : 返回的大小
9. http_referer : 來源頁
10. http_user_agent : 客戶端名稱
11. request_time : 整體請求延時
下麵是一段訪問日誌的樣例:
body_byte_sent: 81 hostname: www.host.com http_user_agent: Mozilla/5.0 (Linux; U; Android 7.1.1; zh-CN; ONEPLUS A5000 Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.6.4.950 Mobile Safari/537.36 method: GET referer: www.host0.com remote_addr: 14.116.141.67 request_length: 196 request_time: 4.68status: 200 upstream_response_time: 3.94725168222 url: /path9?k0=v7&k1=v1&
統計樣例
-
每分鍾PV曲線
*|select from_unixtime( __time__- __time__% 60) as t, count(1) as pv group by __time__- __time__% 60 order by t limit 60
-
熱門頁麵
*|select url,count(1) as pv group by url order by pv desc limit 10
-
各種HTTP狀態碼
*| select status, count(1) as pv group by status
-
來源頁麵統計
*|select referer ,count(1) as pv group by referer order by pv desc
最後更新:2017-08-31 23:32:40