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 the apache service
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/bash
Total = '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 ')
### This is an array
Len =$ {# array [@]}
### This is the length of the array
Echo $ {array [$ I] }:: {array [$ I + 1]}
### Number of connections using the for loop input status code and status code
Awk 'in in {printf "%. 6f % \ n", ('$ {array [$ I]}'/'$ {total}' * 100 )}
### Count the number of connections of each status code in percentage
Address: http://youzao.blog.51cto.com/3946111/757515