關於access_log 記錄檔以及ip、uv和pv的定義,access_loguv
- accesslog是apache或者nginx等web service產生的日誌,對應於網頁的每一次請求,包含有大量的資訊,分析好accesslog可以對網站的運行情況有一個整體的認識,在出現問題的情況下,也可以通過對accesslog的資料分析結果,大致定位出問題所在。負責網站的營運、架構相關的工程師需要對accesslog非常熟悉,策略效果相關的工程師也可以通過對accesslog的分析,得到使用者的行為資料。
- 同時分析accesslog的日誌也可以估算出使用者訪問量,高峰訪問時間段,地區訪問資料等,為效能測試和伺服器擴充提供很好的資料參考
accesslog的組成
101.226.166.254 - - [21/Oct/2013:20:34:28 +0800] "GET /movie_cat.php?year=2013 HTTP/1.1" 200 5209 "http://www.baidu.com" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDR; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322; Tablet PC 2.0); 360Spider"
下面我們來說說這一行記錄的意思:
- 101.226.166.254:(使用者IP)
- [21/Oct/2013:20:34:28 +0800]:(訪問時間)
- GET:http請求方式,有GET和POST兩種
- /movie_cat.php?year=2013:當前訪問的網頁是動態網頁,movie_cat.php即請求的後台介面,year=2013為具體介面的參數
- 200:服務狀態,200表示正常,常見的還有,301永久重新導向、4XX表示請求出錯、5XX伺服器內部錯誤
- 5209:傳送位元組數為5209,單位為byte
- "http://www.baidu.com":refer:即當前頁面的上一個網頁
- "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDR; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322; Tablet PC 2.0); 360Spider": agent欄位:通常用來記錄作業系統、瀏覽器版本、瀏覽器核心等資訊
資料統計及分析
- 介面請求頻次:分介面、按天和小時分別統計。瞭解網站的運行情況,每個介面的請求頻次,使用者的行為習慣等。
- 回應時間:一天的平均回應時間、分介面的平均回應時間、分介面按小時統計平均回應時間。回應時間過長的請求可能說明服務效能上存在缺陷,就需要對相應的介面進行最佳化了。
- 異常分析:狀態代碼非200的請求、回應時間超過一定域值的請求。大量的404不利用SEO,應該盡量避免。
- 具體參數統計:對於動態網頁面,一個介面通常帶有多個參數,其中某個或者某幾個參數特別重要,可以進一步細化,產生介面對應的參數的統計結果
- ip來源的統計:可以統計出網頁訪問的ip來源,進一步通過ip定位,可以產生網站按地區的訪問情況,同時對ip的統計,也可以對一些可能的攻擊或者駭客行為進行識別。
- 蜘蛛抓取情況分析:搜尋引擎的蜘蛛通常會設定agent欄位,通過分析agent欄位,可以得到網站一天被百度、Google等搜尋引擎抓取的次數,以及哪些網頁經常被spider爬過,這也是SEO的基礎。
accesslog的shell 指令碼分析
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l
netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -n -r231 ::ffff:127.0.0.1:809523 ::ffff:192.168.50.201:54322 ::ffff:192.168.50.203:801 servers)1 ::ffff:192.168.50.56:433141 ::ffff:192.168.50.21:29961 ::ffff:192.168.50.21:29891 ::ffff:192.168.50.200:80601 ::ffff:192.168.50.12:13001 ::ffff:192.168.50.12:12991 ::ffff:192.168.50.12:12981 ::ffff:127.0.0.1:579331 Address1 192.168.50.41:653101 192.168.50.41:649491 192.168.50.41:49653
cat access_log |cut -d ' ' -f 1 |sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10 |less14085 121.207.252.12213753 218.66.36.11911069 220.162.237.61188 59.63.158.1181025 ::1728 220.231.141.28655 114.80.126.139397 117.25.55.100374 222.76.112.211348 120.6.214.70
cat access_log |cut -d ' ' -f 1 |sort |uniq -c | awk '{if ($1 > 100) print $0}'|sort -nr |less14085 121.207.252.12213753 218.66.36.11911069 220.162.237.61188 59.63.158.1181025 ::1728 220.231.141.28655 114.80.126.139397 117.25.55.100374 222.76.112.211348 120.6.214.70252 58.211.82.150252 159.226.126.21206 121.204.57.94192 59.61.111.58186 218.85.73.40145 221.231.139.30134 121.14.148.220123 222.246.128.220122 61.147.123.46119 121.204.105.58107 116.9.75.237105 118.123.5.173.....
cat access_log|grep '12/Nov/2012'|grep "******.htm"|wc|awk '{print $1}'|uniq
cat access_log|awk ‘($NF > 30){print $7}’|sort -n|uniq -c|sort -nr|head -20
cat access_log |awk ‘($NF > 60 && $7~/\.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100
grep "/index.html" access.log | cut –d “ ” –f 4| sort | uniq | wc –l
grep "/index.html" access.log | wc -l
ip、uv和pv的定義
- IP(獨立IP): 即Internet Protocol,指獨立IP數。00:00-24:00內相同IP地址只被計算一次。
- PV(訪問量): 即Page View, 即頁面瀏覽量或點擊量,使用者每次重新整理即被計算一次。
- UV(獨立訪客):即Unique Visitor,訪問您網站的一台電腦用戶端為一個訪客。00:00-24:00內相同的用戶端只被計算一次。
ip,pv,uv的區別
- IP(獨立IP):某IP地址的電腦訪問網站的次數。這種統計方式很容易實現,具有真實性。所以是衡量網站流量的重要指標。
- PV(訪問量):PV反映的是瀏覽某網站的頁面數,所以每重新整理一次也算一次。就是說PV與來訪者的數量成正比,但PV並不是頁面的來訪者數量,而是網站被訪問的頁面數量。
- UV(獨立訪客):可以理解成訪問某網站的電腦的數量。網站判斷來訪電腦的身份是通過來訪電腦的cookies實現的。如果更換了IP後但不清除cookies,再訪問相同網站,該網站的統計中UV數是不變的。
舉例以說明:
- 甲乙丙三人某台通過ADSL的電腦,訪問了“goto52”這個網站,並且每人各瀏覽了2個頁面,那麼網站的流量統計是:
- IP(獨立IP):1
- PV(訪問量):6(3人乘以2個頁面)
- UV(獨立訪客):1
- 若三人都是更換了IP(ADSL重新撥號)後各瀏覽了2個頁面,則
- IP(獨立IP):3
- PV(訪問量):6
- UV(獨立訪客):1
- 所以,IP(獨立IP)反映的是網路地址對象的數量,UV(獨立訪客)反映的是實際使用者的數量,每個UV相對於每個ip更準確地對應一個實際的瀏覽者。