- accesslog是apache或者nginx等web service生成的日志,對應于網頁的每一次請求斑唬,包含有大量的信息市埋,分析好accesslog可以對網站的運行情況有一個整體的認識,在出現問題的情況下恕刘,也可以通過對accesslog的數據分析結果缤谎,大致定位出問題所在。負責網站的運維褐着、架構相關的工程師需要對accesslog非常熟悉坷澡,策略效果相關的工程師也可以通過對accesslog的分析,得到用戶的行為數據含蓉。
- 同時分析accesslog的日志也可以估算出用戶訪問量频敛,高峰訪問時間段,區(qū)域訪問數據等馅扣,為性能測試和服務器擴展提供很好的數據參考
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:當前訪問的網頁是動態(tài)網頁,movie_cat.php即請求的后臺接口差油,year=2013為具體接口的參數
- 200:服務狀態(tài)拗军,200表示正常,常見的還有厌殉,301永久重定向食绿、4XX表示請求出錯、5XX服務器內部錯誤
- 5209:傳送字節(jié)數為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字段:通常用來記錄操作系統器紧、瀏覽器版本渊迁、瀏覽器內核等信息
數據統計及分析
-
接口請求頻次:分接口敦跌、按天和小時分別統計。了解網站的運行情況膏潮,每個接口的請求頻次罐柳,用戶的行為習慣等掌腰。
-
響應時間:一天的平均響應時間、分接口的平均響應時間张吉、分接口按小時統計平均響應時間齿梁。響應時間過長的請求可能說明服務性能上存在缺陷,就需要對相應的接口進行優(yōu)化了。
-
異常分析:狀態(tài)碼非200的請求勺择、響應時間超過一定域值的請求创南。大量的404不利用SEO,應該盡量避免省核。
-
具體參數統計:對于動態(tài)頁面稿辙,一個接口通常帶有多個參數,其中某個或者某幾個參數特別重要气忠,可以進一步細化邻储,產生接口對應的參數的統計結果
-
ip來源的統計:可以統計出網頁訪問的ip來源,進一步通過ip定位旧噪,可以產生網站按地域的訪問情況吨娜,同時對ip的統計舌菜,也可以對一些可能的攻擊或者黑客行為進行識別。
-
蜘蛛抓取情況分析:搜索引擎的蜘蛛通常會設置agent字段日月,通過分析agent字段缤骨,可以得到網站一天被百度爱咬、谷歌等搜索引擎抓取的次數,以及哪些網頁經常被spider爬過绊起,這也是SEO的基礎精拟。
accesslog的shell 腳本分析
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l
netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -n -r
231 ::ffff:127.0.0.1:8095
23 ::ffff:192.168.50.201:5432
2 ::ffff:192.168.50.203:80
1 servers)
1 ::ffff:192.168.50.56:43314
1 ::ffff:192.168.50.21:2996
1 ::ffff:192.168.50.21:2989
1 ::ffff:192.168.50.200:8060
1 ::ffff:192.168.50.12:1300
1 ::ffff:192.168.50.12:1299
1 ::ffff:192.168.50.12:1298
1 ::ffff:127.0.0.1:57933
1 Address
1 192.168.50.41:65310
1 192.168.50.41:64949
1 192.168.50.41:49653
cat access_log |cut -d ' ' -f 1 |sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10 |less
14085 121.207.252.122
13753 218.66.36.119
11069 220.162.237.6
1188 59.63.158.118
1025 ::1
728 220.231.141.28
655 114.80.126.139
397 117.25.55.100
374 222.76.112.211
348 120.6.214.70
cat access_log |cut -d ' ' -f 1 |sort |uniq -c | awk '{if ($1 > 100) print $0}'|sort -nr |less
14085 121.207.252.122
13753 218.66.36.119
11069 220.162.237.6
1188 59.63.158.118
1025 ::1
728 220.231.141.28
655 114.80.126.139
397 117.25.55.100
374 222.76.112.211
348 120.6.214.70
252 58.211.82.150
252 159.226.126.21
206 121.204.57.94
192 59.61.111.58
186 218.85.73.40
145 221.231.139.30
134 121.14.148.220
123 222.246.128.220
122 61.147.123.46
119 121.204.105.58
107 116.9.75.237
105 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
更多參考https://www.cnblogs.com/centos2017/p/7896700.html