摘要:自己的小網(wǎng)站跑在阿里云的上面偶爾也去分析分析自己網(wǎng)站服務(wù)器日志看看網(wǎng)站的訪問量。表示能夠處理個并發(fā)請求,這個值可根據(jù)負載情況自動調(diào)整。最終返回的數(shù)字就是當前所有端口的請求總數(shù)。
自己的小網(wǎng)站跑在阿里云的ECS上面,偶爾也去分析分析自己網(wǎng)站服務(wù)器日志,看看網(wǎng)站的訪問量??纯从袥]有黑闊搞破壞!于是收集,整理一些服務(wù)器日志分析命令,大家可以試試!
1、查看有多少個IP訪問:
awk "{print $1}" log_file|sort|uniq|wc -l
PS: wc -l 看看有多少行
2、查看某一個頁面被訪問的次數(shù):
grep "/index.php" log_file | wc -l
3、查看每一個IP訪問了多少個頁面:
awk "{++S[$1]} END {for (a in S) print a,S[a]}" log_file > log.txt
sort -n -t " " -k 2 log.txt # 配合sort進一步排序
4、將每個IP訪問的頁面數(shù)進行從小到大排序:
awk "{++S[$1]} END {for (a in S) print S[a],a}" log_file | sort -n
5、查看某一個IP訪問了哪些頁面:
grep ^111.111.111.111 log_file| awk "{print $1,$7}"
6、去掉搜索引擎統(tǒng)計的頁面:
awk "{print $12,$1}" log_file | grep ^"Mozilla | awk "{print $2}" |sort | uniq | wc -l
7、查看2015年8月16日14時這一個小時內(nèi)有多少IP訪問:
awk "{print $4,$1}" log_file | grep 16/Aug/2015:14 | awk "{print $2}"| sort | uniq | wc -l
8、查看訪問前十個ip地址
awk "{print $1}" |sort|uniq -c|sort -nr |head -10 access_log
uniq -c 相當于分組統(tǒng)計并把統(tǒng)計數(shù)放在最前面
cat access.log|awk "{print $1}"|sort|uniq -c|sort -nr|head -10 cat access.log|awk "{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}
9、訪問次數(shù)最多的10個文件或頁面
cat log_file|awk "{print $11}"|sort|uniq -c|sort -nr | head -10
cat log_file|awk "{print $11}"|sort|uniq -c|sort -nr|head -20
awk "{print $1}" log_file |sort -n -r |uniq -c | sort -n -r | head -20 # 訪問量最大的前20個ip
10、通過子域名訪問次數(shù),依據(jù)referer來計算,稍有不準
cat access.log | awk "{print $11}" | sed -e " s/http:////" -e " s//.*//" | sort | uniq -c | sort -rn | head -20
11、列出傳輸大小最大的幾個文件
cat www.access.log |awk "($7~/.php/){print $10 " " $1 " " $4 " " $7}"|sort -nr|head -100
12、列出輸出大于200000byte(約200kb)的頁面以及對應頁面發(fā)生次數(shù)
cat www.access.log |awk "($10 > 200000 && $7~/.php/){print $7}"|sort -n|uniq -c|sort -nr|head -100
13、如果日志最后一列記錄的是頁面文件傳輸時間,則有列出到客戶端最耗時的頁面
cat www.access.log |awk "($7~/.php/){print $NF " " $1 " " $4 " " $7}"|sort -nr|head -100
14、列出最最耗時的頁面(超過60秒的)的以及對應頁面發(fā)生次數(shù)
cat www.access.log |awk "($NF > 60 && $7~/.php/){print $7}"|sort -n|uniq -c|sort -nr|head -100
15、列出傳輸時間超過 30 秒的文件
cat www.access.log |awk "($NF > 30){print $7}"|sort -n|uniq -c|sort -nr|head -20
16、列出當前服務(wù)器每一進程運行的數(shù)量,倒序排列
ps -ef | awk -F " " "{print $8 " " $9}" |sort | uniq -c |sort -nr |head -20
17、查看apache當前并發(fā)訪問數(shù)
對比httpd.conf中MaxClients的數(shù)字差距多少。
netstat -an | grep ESTABLISHED | wc -l
18、可以使用如下參數(shù)查看數(shù)據(jù)
ps -ef|grep httpd|wc -l
統(tǒng)計httpd進程數(shù),連個請求會啟動一個進程,使用于Apache服務(wù)器。
表示Apache能夠處理1388個并發(fā)請求,這個值A(chǔ)pache可根據(jù)負載情況自動調(diào)整。
netstat -nat|grep -i "80"|wc -l
netstat -an會打印系統(tǒng)當前網(wǎng)絡(luò)鏈接狀態(tài),而grep -i "80"是用來提取與80端口有關(guān)的連接的,wc -l進行連接數(shù)統(tǒng)計。
最終返回的數(shù)字就是當前所有80端口的請求總數(shù)。
netstat -na|grep ESTABLISHED|wc -l
netstat -an會打印系統(tǒng)當前網(wǎng)絡(luò)鏈接狀態(tài),而grep ESTABLISHED 提取出已建立連接的信息。 然后wc -l統(tǒng)計。
最終返回的數(shù)字就是當前所有80端口的已建立連接的總數(shù)。
netstat -nat||grep ESTABLISHED|wc
可查看所有建立連接的詳細記錄
19、輸出每個ip的連接數(shù),以及總的各個狀態(tài)的連接數(shù)
netstat -n | awk "/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %s ", a, S[a]);++I}printf("%-20s %s ","TOTAL_IP",I);for(a in s) printf("%-20s %s ",a, s[a]);printf("%-20s %s ","TOTAL_LINK",N);}"
20、其他的收集
分析日志文件下2012-05-04訪問頁面最高的前20個URL并排序
cat access.log |grep "04/May/2012"| awk "{print $11}"|sort|uniq -c|sort -nr|head -20
查詢受訪問頁面的URL地址中 含有 www.abc.com 網(wǎng)址的 IP 地址
cat access_log | awk "($11~/www.abc.com/){print $1}"|sort|uniq -c|sort -nr
獲取訪問最高的10個IP地址 同時也可以按時間來查詢
cat linewow-access.log|awk "{print $1}"|sort|uniq -c|sort -nr|head -10
時間段查詢?nèi)罩緯r間段的情況
cat log_file | egrep "15/Aug/2015|16/Aug/2015" |awk "{print $1}"|sort|uniq -c|sort -nr|head -10分析2015/8/15到2015/8/16訪問"/index.php?g=Member&m=Public&a=sendValidCode"的IP倒序排列
cat log_file | egrep "15/Aug/2015|16/Aug/2015" | awk "{if($7 == "/index.php?g=Member&m=Public&a=sendValidCode") print $1,$7}"|sort|uniq -c|sort -nr
($7~/.php/) $7里面包含.php的就輸出,本句的意思是最耗時的一百個PHP頁面
cat log_file |awk "($7~/.php/){print $NF " " $1 " " $4 " " $7}"|sort -nr|head -100
列出最最耗時的頁面(超過60秒的)的以及對應頁面發(fā)生次數(shù)*
cat access.log |awk "($NF > 60 && $7~/.php/){print $7}"|sort -n|uniq -c|sort -nr|head -100
統(tǒng)計網(wǎng)站流量(G)
cat access.log |awk "{sum+=$10} END {print sum/1024/1024/1024}"
統(tǒng)計404的連接
awk "($9 ~/404/)" access.log | awk "{print $9,$7}" | sort
統(tǒng)計http status.
cat access.log |awk "{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}" cat access.log |awk "{print $9}"|sort|uniq -c|sort -rn
每秒并發(fā):
watch "awk "{if($9~/200|30|404/)COUNT[$4]++}END{for( a in COUNT) print a,COUNT[a]}" log_file|sort -k 2 -nr|head -n10"
帶寬統(tǒng)計
cat apache.log |awk "{if($7~/GET/) count++}END{print "client_request="count}" cat apache.log |awk "{BYTE+=$11}END{print "client_kbyte_out="BYTE/1024"KB"}"
找出某天訪問次數(shù)最多的10個IP
cat /tmp/access.log | grep "20/Mar/2011" |awk "{print $3}"|sort |uniq -c|sort -nr|head
當天ip連接數(shù)最高的ip都在干些什么:
cat access.log | grep "10.0.21.17" | awk "{print $8}" | sort | uniq -c | sort -nr | head -n 10
小時單位里ip連接數(shù)最多的10個時段
awk -vFS="[:]" "{gsub("-.*","",$1);num[$2" "$1]++}END{for(i in num)print i,num[i]}" log_file | sort -n -k 3 -r | head -10
找出訪問次數(shù)最多的幾個分鐘
awk "{print $1}" access.log | grep "20/Mar/2011" |cut -c 14-18|sort|uniq -c|sort -nr|head
取5分鐘日志
if [ $DATE_MINUTE != $DATE_END_MINUTE ] ;then #則判斷開始時間戳與結(jié)束時間戳是否相等START_LINE=sed -n "/$DATE_MINUTE/=" $APACHE_LOG|head -n1 #如果不相等,則取出開始時間戳的行號,與結(jié)束時間戳的行號
查看tcp的鏈接狀態(tài)
netstat -nat |awk "{print $6}"|sort|uniq -c|sort -rn netstat -n | awk "/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}" netstat -n | awk "/^tcp/ {++state[$NF]}; END {for(key in state) print key," ",state[key]}" netstat -n | awk "/^tcp/ {++arr[$NF]};END {for(k in arr) print k," ",arr[k]}" netstat -n |awk "/^tcp/ {print $NF}"|sort|uniq -c|sort -rn netstat -ant | awk "{print $NF}" | grep -v "[a-z]" | sort | uniq -c netstat -ant|awk "/ip:80/{split($5,ip,":");++S[ip[1]]}END{for (a in S) print S[a],a}" |sort -n netstat -ant|awk "/:80/{split($5,ip,":");++S[ip[1]]}END{for (a in S) print S[a],a}" |sort -rn|head -n 10 awk "BEGIN{printf ("http_code count_num ")}{COUNT[$10]++}END{for (a in COUNT) printf a" "COUNT[a]" "}"
查找請求數(shù)前20個IP(常用于查找攻來源):
netstat -anlp|grep 80|grep tcp|awk "{print $5}"|awk -F: "{print $1}"|sort|uniq -c|sort -nr|head -n20 netstat -ant |awk "/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}" |sort -rn|head -n20
用tcpdump嗅探80端口的訪問看看誰最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." "{print $1"."$2"."$3"."$4}" | sort | uniq -c | sort -nr |head -20
查找較多time_wait連接
netstat -n|grep TIME_WAIT|awk "{print $5}"|sort|uniq -c|sort -rn|head -n20
找查較多的SYN連接
netstat -an | grep SYN | awk "{print $5}" | awk -F: "{print $1}" | sort | uniq -c | sort -nr | more
根據(jù)端口列進程
netstat -ntlp | grep 80 | awk "{print $7}" | cut -d/ -f1
查看了連接數(shù)和當前的連接數(shù)
netstat -ant | grep $ip:80 | wc -l netstat -ant | grep $ip:80 | grep EST | wc -l
查看IP訪問次數(shù)
netstat -nat|grep ":80"|awk "{print $5}" |awk -F: "{print $1}" | sort| uniq -c|sort -n
Linux命令分析當前的鏈接狀況
netstat -n | awk "/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}"
watch "netstat -n | awk "/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}"" # 通過watch可以一直監(jiān)控
LAST_ACK 5 關(guān)閉一個TCP連接需要從兩個方向上分別進行關(guān)閉,雙方都是通過發(fā)送FIN來表示單方向數(shù)據(jù)的關(guān)閉,當通信雙方發(fā)送了最后一個FIN的時候,發(fā)送方此時處于LAST_ACK狀態(tài),當發(fā)送方收到對方的確認(Fin的Ack確認)后才真正關(guān)閉整個TCP連接;
SYN_RECV 30 # 表示正在等待處理的請求數(shù);
ESTABLISHED 1597 # 表示正常數(shù)據(jù)傳輸狀態(tài);
FIN_WAIT1 51 # 表示server端主動要求關(guān)閉tcp連接;
FIN_WAIT2 504 # 表示客戶端中斷連接;
TIME_WAIT 1057 # 表示處理完畢,等待超時結(jié)束的請求數(shù);
附錄
一月 Jan January
二月 Feb February
三月 Mar March
四月 Apr April
五月 May May
六月 June June
七月 July July
八月 Aug Aguest
九月 Sept September
十月 Oct October
十一月 Nov November
十二月 Dec December
-------------------------END-------------------------
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/39398.html
閱讀 1776·2023-04-25 16:28
閱讀 715·2021-11-23 09:51
閱讀 1492·2019-08-30 15:54
閱讀 1176·2019-08-30 15:53
閱讀 2857·2019-08-30 15:53
閱讀 3448·2019-08-30 15:43
閱讀 3287·2019-08-30 11:18
閱讀 3315·2019-08-26 10:25