這篇文章主要介紹“Linux下怎么實現(xiàn)apache日志分析與狀態(tài)查看”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Linux下怎么實現(xiàn)apache日志分析與狀態(tài)查看”文章能幫助大家解決問題。
公司主營業(yè)務(wù):網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出東臺免費做網(wǎng)站回饋大家。假設(shè)apache日志格式為:
118.78.199.98 – - [09/jan/2010:00:59:59 +0800] “get /public/css/index.css http/1.1″ 304 – “http://www.a.cn/common/index.php” “mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1; gtb6.3)”
問題1:在apachelog中找出訪問次數(shù)最多的10個ip。
awk '{print $1}' apache_log |sort |uniq -c|sort -nr|head -n 10
awk 首先將每條日志中的ip抓出來,如日志格式被自定義過,可以 -f 定義分隔符和 print指定列;
sort進行初次排序,為的使相同的記錄排列到一起;
upiq -c 合并重復(fù)的行,并記錄重復(fù)次數(shù)。
head進行前十名篩選;
sort -nr按照數(shù)字進行倒敘排序。
我參考的命令是:
顯示10條最常用的命令
sed -e "s/| //n/g" ~/.bash_history | cut -d ' ' -f 1 | sort | uniq -c | sort -nr | head
問題2:在apache日志中找出訪問次數(shù)最多的幾個分鐘。
awk '{print $4}' access_log |cut -c 14-18|sort|uniq -c|sort -nr|head
awk 用空格分出來的第四列是[09/jan/2010:00:59:59;
cut -c 提取14到18個字符
剩下的內(nèi)容和問題1類似。
問題3:在apache日志中找到訪問最多的頁面:
awk '{print $11}' apache_log |sed 's/^.*cn/(.*/)/"http://1/g'|sort |uniq -c|sort -rn|head
類似問題1和2,特殊是用sed的替換功能將”http://www.a.cn/common/index.php”替換成括號內(nèi)的內(nèi)容:”http://www.a.cn(/common/index.php)”
問題4:在apache日志中找出訪問次數(shù)最多(負載最重)的幾個時間段(以分鐘為單位),然后在看看這些時間哪幾個ip訪問的最多?
1,查看apache進程:
ps aux | grep httpd | grep -v grep | wc -l
2,查看80端口的tcp連接:
netstat -tan | grep "established" | grep ":80" | wc -l
3,通過日志查看當(dāng)天ip連接數(shù),過濾重復(fù):
cat access_log | grep "19/may/2011" | awk '{print $2}' | sort | uniq -c | sort -nr
4,當(dāng)天ip連接數(shù)高的ip都在干些什么(原來是蜘蛛):
cat access_log | grep "19/may/2011:00" | grep "61.135.166.230" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
5,當(dāng)天訪問頁面排前10的url:
cat access_log | grep "19/may/2010:00" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
6,用tcpdump嗅探80端口的訪問看看誰高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -f"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr
接著從日志里查看該ip在干嘛:
cat access_log | grep 220.181.38.183| awk '{print $1"/t"$8}' | sort | uniq -c | sort -nr | less
7,查看某一時間段的ip連接數(shù):
grep "2006:0[7-8]" www20110519.log | awk '{print $2}' | sort | uniq -c| sort -nr | wc -l
8,當(dāng)前web服務(wù)器中聯(lián)接次數(shù)最多的20條ip地址:
netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -n -r | head -n 20
9,查看日志中訪問次數(shù)最多的前10個ip
cat access_log |cut -d ' ' -f 1 |sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10 |less
10,查看日志中出現(xiàn)100次以上的ip
cat access_log |cut -d ' ' -f 1 |sort |uniq -c | awk '{if ($1 > 100) print $0}'|sort -nr |less
11,查看最近訪問量高的文件
cat access_log |tail -10000|awk '{print $7}'|sort|uniq -c|sort -nr|less
12,查看日志中訪問超過100次的頁面
cat access_log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if ($1 > 100) print $0}' | less
13,列出傳輸時間超過 30 秒的文件
cat access_log|awk '($nf > 30){print $7}'|sort -n|uniq -c|sort -nr|head -20
14,列出最最耗時的頁面(超過60秒的)的以及對應(yīng)頁面發(fā)生次數(shù)
cat access_log |awk '($nf > 60 && $7~//.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100
關(guān)于“Linux下怎么實現(xiàn)apache日志分析與狀態(tài)查看”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。