1. First, cut Apache logs by day
VI/etc/httpd/CONF/httpd. conf
Errorlog "| rotatelogs/var/log/httpd/% Y % m % derror_log 86400 480 ″
Customlog "| rotatelogs/var/log/httpd/% Y % m % daccess_log 86400 480" combined
Ii. Restart Apache server
Service httpd restart
################# Apahce log server is cut by day ############### #######
3. Analyze the generated Apache Log status code (wait for one day)
* ** The log file is 20151128access_log.
Vi http. Sh
#! /Bin/bashtotal = 'cat 20151128access_log | WC-l' array = ('cat 20151128access_log | awk '{print $9}' | sort | uniq-c | sort-n ') len = $ {# array [@]} echo "#################### HTTP status code statistics #### ####################### "Echo" Total connections: $ total "for (I = 0; I <$ Len; I = I + 2 )) {echo "###################################### ################## "echo $ {array [$ I]}: $ {array [$ I + 1]} echo "############################# ############################"
Echo $ {array [$ I + 1]} percentage of connections: 'awk' begin {printf "%. 6f % \ n ", ('$ {array [$ I]}'/'$ {total}' * 100 )}''
}
Execute the script result (expressed in percent ):
Sh HTTP. Sh
#################### HTTP status code statistics ################ ###########
Total connection: 688965
######################################## ################
1: 303
######################################## ################
303 percentage of connections: 0.000145%
######################################## ################
1:416
######################################## ################
416 percentage of connections: 0.000145%
######################################## ################
2: 299
######################################## ################
299 percentage of connections: 0.000290%
######################################## ################
8:501
######################################## ################
501 percentage of connections: 0.001161%
######################################## ################
145: 403
######################################## ################
403 percentage of connections: 0.021046%
######################################## ################
197: 400
######################################## ################
400 percentage of connections: 0.028594%
######################################## ################
738: 206
######################################## ################
206 percentage of connections: 0.107117%
######################################## ################
7307: 404
######################################## ################
404 percentage of connections: 1.060576%
######################################## ################
9213: 302
######################################## ################
302 percentage of connections: 1.337223%
######################################## ################
30574: 301
######################################## ################
301 percentage of connections: 4.437671%
######################################## ################
201197: 304
######################################## ################
304 percentage of connections: 29.202790%
######################################## ################
439582: 200
######################################## ################
200 percentage of connections: 63.803241%
############## ###########
Array = ('cat 20151128access_log | awk '{print $9}' | sort | uniq-c | sort-n') records # This is an array.
Len = $ {# array [@]} bytes # This is the length of the array.
Echo $ {array [$ I] }:: {array [$ I + 1]} connections # Number of connections using the for loop input status code and status code
Awk 'begin{ printf '%. 6f % \ n ", ('$ {array [$ I]}'/'$ {total}' * 100)} percent # calculates the number of connections of each status code in percentage
This article is from the Nick blog, please be sure to keep this source http://8177627.blog.51cto.com/8167627/1431236