真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

企業(yè)shell腳本分析及切割apache日志實戰(zhàn)

企業(yè)shell腳本分析apache日志實戰(zhàn)

10年的平潭網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。營銷型網(wǎng)站建設的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整平潭建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“平潭網(wǎng)站設計”,“平潭網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。


一,分析apache日志

1,有一個文件shell.sh,內(nèi)容如下:
[root@test3root]#catshell.sh
http://www.baidu.com/index.html
http://www.google.com/index.html
http://www.baidu.com/get.html
http://www.baidu.com/set.html
http://www.google.com/index.html
http://www.yahoo.com.cn/put.html
現(xiàn)要求將該文件中的域名截取出來,統(tǒng)計重復域名出現(xiàn)的次數(shù),然后按次數(shù)進行降序排列,統(tǒng)計后的結果如下:
3www.baidu.com
2www.google.com
1www.yahoo.com.

sort將文件的每一行作為一個單位,相互比較,比較原則是從首字符向后,依次按ASCII碼值進行比較,最后將他們按升序輸出,uniq是去除緊挨著的相同的行只保留一行

[root@test3 ~]# awk -F "/"'{print $3}' shell.sh |sort |uniq  -c
3 www.baidu.com
2 www.google.com
1 www.yahoo.com.cn

2,在apachelog中找出訪問次數(shù)最多的10個IP

/usr/local/apache2/logs/access_log的格式如下

192.168.46.1-chen[21/Sep/2013:14:04:48+0800]"GET/phpmyadmin/themes/pmahomme/img/tab_hover_bg.pngHTTP/1.1"200502

[root@test3 ~]# awk '{print $1}' /usr/local/apache2/logs/access_log |sort|uniq -c|head -n 10
7 127.0.0.1
228 192.168.46.1

3.在apache日志中找出訪問次數(shù)最多的幾個分鐘

/usr/local/apache2/logs/access_log的格式如下

192.168.46.1-chen[21/Sep/2013:14:04:48+0800]"GET/phpmyadmin/themes/pmahomme/img/tab_hover_bg.pngHTTP/1.1"200502

[root@test3 ~]# awk '{print $4}' /usr/local/apache2/logs/access_log|cut -c 14-18 |sort|uniq -c|sort -nr|head
33 13:55
30 13:35
19 13:22
15 13:54
15 13:45
15 13:38
15 13:36
13 13:04
10 12:59
9 13:18

4.在apache日志中找到訪問最多的頁面

/usr/local/apache2/logs/access_log的格式如下

192.168.46.1-chen[21/Sep/2013:14:04:48+0800]"GET/phpmyadmin/themes/pmahomme/img/tab_hover_bg.pngHTTP/1.1"200502

[root@test3 ~]# awk '{print $7}' /usr/local/apache2/logs/access_log |sort|uniq -c|sort -nr|head
46 /
44 /phpmyadmin/
10 /phpmyadmin/js/jquery/jquery-1.6.2.js?ts=1359376847
9 /phpmyadmin/js/update-location.js?ts=1359376847
9 /phpmyadmin/js/jquery/jquery-ui-1.8.16.custom.js?ts=1359376847
9 /phpmyadmin/js/jquery/jquery.qtip-1.0.0-rc3.js?ts=1359376847
9 /phpmyadmin/js/functions.js?ts=1359376847
8 /phpmyadmin/js/cross_framing_protection.js?ts=1359376847
7 /phpmyadmin/themes/pmahomme/jquery/jquery-ui-1.8.16.custom.css
7 /phpmyadmin/themes/pmahomme/img/sprites.png

5,在apache日志中找出訪問次數(shù)最多(負載最重)的幾個時間段(以分鐘為單位),然后在看看這些時間哪幾個IP訪問的最多?

/usr/local/apache2/logs/access_log的格式如下

192.168.46.1-chen[21/Sep/2013:14:04:48+0800]"GET/phpmyadmin/themes/pmahomme/img/tab_hover_bg.pngHTTP/1.1"200502

如下是時間段的訪問量情況
[root@test3 ~]# awk '{print $4}' /usr/local/apache2/logs/access_log |cut -c  9-18 |uniq -c|sort -nr|head
33 2013:13:55
30 2013:13:35
19 2013:13:22
15 2013:13:54
15 2013:13:45
15 2013:13:38
15 2013:13:36
10 2013:12:59
9 2013:13:18
9 2013:13:16

6,apache相關的系統(tǒng)操作

1,查看apache進程:
ps aux | grep httpd | grep -v grep | wc -l
2,查看80端口的tcp連接:
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l
3,通過日志查看當天ip連接數(shù),過濾重復:
cat access_log | grep "19/May/2011" | awk '{print $2}' | sort | uniq -c | sort -nr
4,當天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,當天訪問頁面排前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,當前WEB服務器中聯(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秒的)的以及對應頁面發(fā)生次數(shù)
cat access_log |awk '($NF > 60 && $7~//.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100

二、日志切割
  安裝cronolog
  CentOS6.0中編譯安裝Apache默認日志是不切割的,需要用用工具Cronnolog進行日志切割
  1.下載及安裝
  wgethttp://cronolog.org/download/cronolog-1.6.2.tar.gz
  tarzxvfcronolog-1.6.2.tar.gz
  cdcronolog-1.6.2
  ./configure
  make&&makeinstall
  2.用which命令查看路徑驗證安裝
  whichcronolog
  默認路徑為:/usr/local/sbin/cronolog
  3.配置
  vi/usr/local/apache/conf/httpd.conf
  CustomLog“|/usr/local/sbin/cronolog/usr/local/apache/logs/access_%Y%m%d.log”combined定義訪問日志
  ErrorLog“|/usr/local/sbin/cronolog/home/www/ex/log/error_%Y%m%d.log”定義錯誤日志
  保存配置文件后,重新加載或重啟apache服務即可生效。
  servicehttpdrestart
  還有另外一種使用rotatelogs方法:
  Linux系統(tǒng)配置方法:
  將其改為
  ErrorLog"|/usr/local/apache/bin/rotatelogs/usr/local/apache/logs/%Y_%m_%d_error_log86400480"
  CustomLog"|/usr/local/apache/bin/rotatelogs/usr/local/apache/logs/%Y_%m_%d_access_log86400480"common
  Windows系統(tǒng)下配置方法:
  #ErrorLog"|bin/rotatelogs.exelogs/error-%y%m%d.log86400480"
  #CustomLog"|bin/rotatelogs.exelogs/access-%y%m%d.log86400480"common
  、apache日志切割
  輯Apache的主配置文件,更改內(nèi)容如下:
  注釋掉如下兩行
  ErrorLoglogs/error_log
  CustomLoglogs/access_logcommon
  然后添加如下兩行
  ErrorLog"|/usr/local/apache/bin/rotatelogs/usr/local/apache/logs/errorlog.%Y-%m-%d-%H_%M_%S2M+480"
  CustomLog"|/usr/local/apache/bin/rotatelogs/usr/local/apache/logs/accesslog.%Y-%m-%d-%H_%M_%S2M+480"common
  意義如下:
  errorlog.%Y-%m-%d-%H_%M_%S為生成日志的格式,類似于這樣:errorlog.2010-04-15-11_32_30,以年月日時分秒為單位的,
  2M為日志的大小,即為日志達到多大后生成新的日志文件,支持的單位為K,M,G,本處為2M
  +480為時差,文件的時間為美國時間,中國的時差要比美國多8個小時也就是480分鐘,所以要加上480分鐘
  還有其他的設置方法如下:
  每天生成一個錯誤日志文件
  ErrorLog"|bin/rotatelogs.exe-llogs/error-%Y-%m-%d.log86400"
  其中86400為輪轉的時間單位為秒
  參考:http://hi.baidu.com/jiaofu1127/blog/item/15fed5fa19895b47342acc4a.html
  參考:http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/programs/rotatelogs.html
  rotatelogs-滾動Apache日志的管道日志程序
  rotatelogs是一個配合Apache管道日志功能使用的簡單程序。舉例:
  CustomLog"|bin/rotatelogs/var/logs/logfile86400"common
  此配置會建立文件"/var/logs/logfile.nnnn",其中的nnnn是名義上的日志啟動時的系統(tǒng)時間(此時間總是滾動時間的倍數(shù),可以用于cron腳本的同步)。在滾動時間到達時(在此例中是24小時以后),會產(chǎn)生一個新的日志。
  CustomLog"|bin/rotatelogs/var/logs/logfile5M"common
  此配置會在日志文件大小增長到5兆字節(jié)時滾動該日志。
  ErrorLog"|bin/rotatelogs/var/logs/errorlog.%Y-%m-%d-%H_%M_%S5M"
  此配置會在錯誤日志大小增長到5兆字節(jié)時滾動該日志,日志文件名后綴會按照如下格式創(chuàng)建:errorlog.YYYY-mm-dd-HH_MM_SS。
  語法
  rotatelogs[-l]logfile[rotationtime[offset]]|[filesizeM]
  選項
  -l
  使用本地時間代替GMT時間作為時間基準。注意:在一個改變GMT偏移量(比如夏令時)的環(huán)境中使用-l會導致不可預料的結果。
  logfile
  它加上基準名就是日志文件名。如果logfile中包含"%",則它會被視為用于strftime()的格式字符串;否則它會被自動加上以秒為單位的".nnnnnnnnnn"后綴。這兩種格式都表示新的日志開始使用的時間。
  rotationtime
  日志文件滾動的以秒為單位的間隔時間。
  offset
  相對于UTC的時差的分鐘數(shù)。如果省略,則假定為"0"并使用UTC時間。比如,要指定UTC時差為"-5小時"的地區(qū)的當?shù)貢r間,則此參數(shù)應為"-300"。
  filesizeM
  指定以filesizeM文件大小滾動,而不是按照時間或時差滾動。
  可移植性
  下列日志文件格式字符串可以為所有的strftime()實現(xiàn)所支持,見各種擴展庫對應的strftime()的手冊。


%A

星期名全稱(本地的)

%a

3個字符的星期名(本地的)

%B

月份名的全稱(本地的)

%b

3個字符的月份名(本地的)

%c

日期和時間(本地的)

%d

2位數(shù)的一個月中的日期數(shù)

%H

2位數(shù)的小時數(shù)(24小時制)

%I

2位數(shù)的小時數(shù)(12小時制)

%j

3位數(shù)的一年中的日期數(shù)

%M

2位數(shù)的分鐘數(shù)

%m

2位數(shù)的月份數(shù)

%p

am/pm12小時制的上下午(本地的)

%S

2位數(shù)的秒數(shù)

%U

2位數(shù)的一年中的星期數(shù)(星期天為一周的第一天)

%W

2位數(shù)的一年中的星期數(shù)(星期一為一周的第一天)

%w

1位數(shù)的星期幾(星期天為一周的第一天)

%X

時間(本地的)

%x

日期(本地的)

%Y

4位數(shù)的年份

%y

2位數(shù)的年份

%Z

時區(qū)名

%%

符號"%"本身


網(wǎng)站標題:企業(yè)shell腳本分析及切割apache日志實戰(zhàn)
本文鏈接:http://weahome.cn/article/ggogoj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部