中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

企業shell腳本分析及切割apache日志實戰

發布時間:2020-06-16 17:16:06 來源:網絡 閱讀:2283 作者:陳仲陽0 欄目:web開發

企業shell腳本分析apache日志實戰


一,分析apache日志

1,有一個文件shell.sh,內容如下:
[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
現要求將該文件中的域名截取出來,統計重復域名出現的次數,然后按次數進行降序排列,統計后的結果如下:
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中找出訪問次數最多的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日志中找出訪問次數最多的幾個分鐘

/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日志中找出訪問次數最多(負載最重)的幾個時間段(以分鐘為單位),然后在看看這些時間哪幾個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相關的系統操作

1,查看apache進程:
ps aux | grep httpd | grep -v grep | wc -l
2,查看80端口的tcp連接:
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l
3,通過日志查看當天ip連接數,過濾重復:
cat access_log | grep "19/May/2011" | awk '{print $2}' | sort | uniq -c | sort -nr
4,當天ip連接數最高的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連接數:
grep "2006:0[7-8]" www20110519.log | awk '{print $2}' | sort | uniq -c| sort -nr | wc -l
8,當前WEB服務器中聯接次數最多的20條ip地址:
netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -n -r | head -n 20
9,查看日志中訪問次數最多的前10個IP
cat access_log |cut -d ' ' -f 1 |sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10 |less
10,查看日志中出現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秒的)的以及對應頁面發生次數
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系統配置方法:
  將其改為
  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系統下配置方法:
  #ErrorLog"|bin/rotatelogs.exelogs/error-%y%m%d.log86400480"
  #CustomLog"|bin/rotatelogs.exelogs/access-%y%m%d.log86400480"common
  、apache日志切割
  輯Apache的主配置文件,更改內容如下:
  注釋掉如下兩行
  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是名義上的日志啟動時的系統時間(此時間總是滾動時間的倍數,可以用于cron腳本的同步)。在滾動時間到達時(在此例中是24小時以后),會產生一個新的日志。
  CustomLog"|bin/rotatelogs/var/logs/logfile5M"common
  此配置會在日志文件大小增長到5兆字節時滾動該日志。
  ErrorLog"|bin/rotatelogs/var/logs/errorlog.%Y-%m-%d-%H_%M_%S5M"
  此配置會在錯誤日志大小增長到5兆字節時滾動該日志,日志文件名后綴會按照如下格式創建:errorlog.YYYY-mm-dd-HH_MM_SS。
  語法
  rotatelogs[-l]logfile[rotationtime[offset]]|[filesizeM]
  選項
  -l
  使用本地時間代替GMT時間作為時間基準。注意:在一個改變GMT偏移量(比如夏令時)的環境中使用-l會導致不可預料的結果。
  logfile
  它加上基準名就是日志文件名。如果logfile中包含"%",則它會被視為用于strftime()的格式字符串;否則它會被自動加上以秒為單位的".nnnnnnnnnn"后綴。這兩種格式都表示新的日志開始使用的時間。
  rotationtime
  日志文件滾動的以秒為單位的間隔時間。
  offset
  相對于UTC的時差的分鐘數。如果省略,則假定為"0"并使用UTC時間。比如,要指定UTC時差為"-5小時"的地區的當地時間,則此參數應為"-300"。
  filesizeM
  指定以filesizeM文件大小滾動,而不是按照時間或時差滾動。
  可移植性
  下列日志文件格式字符串可以為所有的strftime()實現所支持,見各種擴展庫對應的strftime()的手冊。


%A

星期名全稱(本地的)

%a

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

%B

月份名的全稱(本地的)

%b

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

%c

日期和時間(本地的)

%d

2位數的一個月中的日期數

%H

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

%I

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

%j

3位數的一年中的日期數

%M

2位數的分鐘數

%m

2位數的月份數

%p

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

%S

2位數的秒數

%U

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

%W

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

%w

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

%X

時間(本地的)

%x

日期(本地的)

%Y

4位數的年份

%y

2位數的年份

%Z

時區名

%%

符號"%"本身

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

元谋县| 抚顺县| 长沙市| 辽阳市| 沭阳县| 城市| 潞西市| 株洲市| 邢台市| 丁青县| 石狮市| 营山县| 商河县| 万山特区| 徐州市| 尼木县| 博乐市| 辽源市| 庐江县| 云南省| 三亚市| 格尔木市| 棋牌| 保定市| 大石桥市| 福鼎市| 清远市| 济南市| 库伦旗| 呼伦贝尔市| 庄浪县| 自贡市| 丰镇市| 木里| 余江县| 东乡| 鄂托克前旗| 高邑县| 昌都县| 长岭县| 黄冈市|