在日常的web應(yīng)用使用中,通常會對訪問信息進行收集記錄,進行統(tǒng)計分析,以提高和改進應(yīng)用建設(shè)。目前主流的數(shù)據(jù)收集方式基本都是基于javascript。當(dāng)然,在日志比較小的情況下,也可以通過shell命令做一些簡單的分析。下面以Nginx的AccessLog為例,介紹通過shell的awk命令統(tǒng)計應(yīng)用的訪問信息。
awk是一個強大的文本分析工具,相對于grep的查找,sed的編輯,awk在對數(shù)據(jù)分析生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認(rèn)分隔符將每行切片,切開的部分再進行各種分析處理。
使用方法:awk{pattern + action} {filenames}
IP:獨立IP數(shù),是指獨立瀏覽了頁面的不同IP,即統(tǒng)計不同的IP瀏覽用戶數(shù)量。同一IP不管訪問了幾個頁面,獨立IP數(shù)均為1;不同的IP瀏覽頁面,計數(shù)會加1。
UV(UniqueVisitor):獨立訪客,統(tǒng)計訪問某站點的用戶數(shù);
awk {print $1} access.log | sort | uniq -c | wc -l
PV(PageView):訪問量,即頁面瀏覽量或點擊量,衡量用戶訪問的網(wǎng)頁數(shù)量;在一定統(tǒng)計周期內(nèi)用戶每打開或刷新一個頁面就記錄1次,多次打開或刷新同一頁面則瀏覽量累計。
awk {print $7} access.log | wc -l
根據(jù)訪問最多的URL來判斷哪些業(yè)務(wù)比較繁忙;
awk {print $7} access.log | sort | uniq -c | sort -n -k 1 -r | more
根據(jù)訪問IP來判斷哪些IP操作最多;
awk {print $1} access.log | sort | uniq -c | sort -n -k 1 -r | more
具體使用sed或者grep都可以,主要是編寫正則表達式;
sed:
cat access.log| sed -n /1/Sep/2020:[01-23]/p | more
grep:
grep 1/Sep/2020:[01-23] access.log |more
因為是統(tǒng)計當(dāng)日的pv和uv,所以在編寫命令之前了解一下nginx的日志格式。日志的默認(rèn)格式如下:
默認(rèn)輸出的月份使用英文簡寫。
pv:
cataccess.log | sed -n /`date "+%d/%b/%Y"`/p | awk {print $7} | sort | wc -l
uv:
cataccess.log | sed -n /`date "+%d/%b/%Y"`/p |awk {print $1} | sort|uniq -c | wc -l
如果使用以上這兩個命令發(fā)現(xiàn)統(tǒng)計不出來任何數(shù)據(jù)時,就要檢查一下,系統(tǒng)的語言變量LANG是否配置成中文,如果是則需要配置成英文。
使用以下命令配置成英文:
exportLANG="en_US.UTF-8"
這時在執(zhí)行pv和uv命令就可以統(tǒng)計出來了。
下面是獲取最耗時的前十個請求,如果想獲取全部則去掉:head-10
cat access.log | awk {print $4,$7,$NF} | awk -F " {print $1,$2,$3} | sort -k3 -rn | head -10
cat access.log | awk {print substr($4,14,5)} | uniq -c | awk {print $2","$1}
可以輸出到csv格式文件中
cat access.log | awk {print substr($4,14,5)} | uniq -c | awk {print $2","$1} > access.csv
例如查看10點到19點的訪問ip數(shù)
grep "2020:1[0-9]" access.log | awk {ips[$1]+=1} END{for(ip in ips) print ips[ip],ip} | sort -nr | wc -l
查看10點到19點之間的ip訪問數(shù)>=200的ip
grep 2020:1[0-19] access.log | awk {ips[$1]+=1}END{for(ip in ips) if(ips[ip]>=200) print ips[ip],ip} | sort -nr
上面介紹了關(guān)于Nginx日志統(tǒng)計分析的一些常用命令,包括IP相關(guān)統(tǒng)計、頁面訪問統(tǒng)計、性能分析等相關(guān)命令。Nginx的統(tǒng)計分析命令還有很多,這里只是拋磚引玉,希望對大家的學(xué)習(xí)或者工作能帶來一定的幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/130145.html
摘要:自己的小網(wǎng)站跑在阿里云的上面偶爾也去分析分析自己網(wǎng)站服務(wù)器日志看看網(wǎng)站的訪問量。然后統(tǒng)計最終返回的數(shù)字就是當(dāng)前所有端口的已建立連接的總數(shù)。 自己的小網(wǎng)站跑在阿里云的ECS上面,偶爾也去分析分析自己網(wǎng)站服務(wù)器日志,看看網(wǎng)站的訪問量??纯从袥]有黑闊搞破壞!于是收集,整理一些服務(wù)器日志分析命令,大家可以試試! 1、查看有多少個IP訪問: awk {print $1} log_file|sor...
摘要:爬蟲和反爬蟲日益成為每家公司的標(biāo)配系統(tǒng)。本文將描述一種盡量簡單的反爬蟲方案,可以在十幾分鐘內(nèi)解決部分簡單的爬蟲問題,緩解惡意攻擊或者是系統(tǒng)超負(fù)荷運行的狀況至于復(fù)雜的爬蟲以及更精準(zhǔn)的防御,需要另外討論。 showImg(https://segmentfault.com/img/bVDYV4?w=800&h=568); 爬蟲和反爬蟲日益成為每家公司的標(biāo)配系統(tǒng)。爬蟲在情報獲取、虛假流量、動態(tài)...
摘要:項目地址部署的方案都在腳本里頭,說明如下使用方法版本簡單介紹是一個利用轉(zhuǎn)發(fā)操作系統(tǒng)中部署的基于框架和框架以及一個的服務(wù)。個服務(wù)是部署在環(huán)境中,通過和進行發(fā)送和接收消息。在前臺以及整個主要利用去操作。 項目地址:https://github.com/yuyangit/BMProject 部署的方案都在腳本里頭,說明如下: BMPlatform使用方法 版本 v0.2 1.簡單介紹...
閱讀 1356·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2757·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3671·2023-01-11 13:20