所有脚本需自行修改!!!!!!
shell分析每小时请求量及占比{1s、2s、3s}
#!/bin/bash #分析每小时请求量及占比{1s,2s,3s} #whrite by Mr.yang 2017-12-25 _date=`date +%F -d "-1 day"` #_date=`date +%F` _date1=`date +%Y%m%d` _time=`date -d "1 minute ago" "+%Y"` _data_dir="/u01/httpd/" _data_path="/u01/httpdtime/" cat ${_data_dir}app_access_log.${_date}.txt |awk '$NF>3{print $5 " " $8 " " $NF}' > ${_data_path}/apptime.${_date}.txt cat ${_data_path}/apptime.${_date}.txt |awk -F[[] '{print $2}' > ${_data_path}/apptime3s.${_date}.txt _total=`grep -c "${_time}" ${_data_dir}/app_access_log.${_date}.txt ` _total3s=`grep -c "${_time}" ${_data_path}/apptime3s.${_date}.txt ` _percent=$(printf "%d‱" $((${_total3s}*10000/${_total}))) #echo "${_date} 1.30app request total is ${_total} More than 3 seconds total is ${_total3s} accounting ratio ${_percent}" #cat ${_data_path}/apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -30 #If total001 is 0 to 1 total request volume #Such as total002 is 0 to 1 more than 3 seconds the number of requests #Such as total003 is 0 to 1 more than 3 seconds to request the port total001=`grep "2018:00" ${_data_dir}app_access_log.${_date}.txt | wc -l` total002=`grep "2018:00" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total002apptime3s.${_date}.txt && grep "2018:00" ${_data_path}/total002apptime3s.${_date}.txt | wc -l ` total003=`cat ${_data_path}total002apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent00=$(printf "%d‱" $((${total002}*10000/${total001}))) echo "0 to 1 Total request ${total001} , More than 3 seconds ${total002} , Great ratio ${_percent00} , Most slow request interface ${total003}" > ${_data_path}apptime.txt total011=`grep "2018:01" ${_data_dir}app_access_log.${_date}.txt | wc -l` total012=`grep "2018:01" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total012apptime3s.${_date}.txt && grep "2018:01" ${_data_path}/total012apptime3s.${_date}.txt | wc -l ` total013=`cat ${_data_path}/total012apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent01=$(printf "%d‱" $((${total012}*10000/${total011}))) echo "1 to 2 Total request ${total011} , More than 3 seconds ${total012} , Great ratio ${_percent01} , Most slow request interface ${total013}" >> ${_data_path}apptime.txt total021=`grep "2018:02" ${_data_dir}app_access_log.${_date}.txt | wc -l` total022=`grep "2018:02" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total022apptime3s.${_date}.txt && grep "2018:02" ${_data_path}/total022apptime3s.${_date}.txt | wc -l ` total023=`cat ${_data_path}/total022apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent02=$(printf "%d‱" $((${total022}*10000/${total021}))) echo "2 to 3 Total request ${total021} , More than 3 seconds ${total022} , Great ratio ${_percent02} , Most slow request interface ${total023}" >> ${_data_path}apptime.txt total031=`grep "2018:03" ${_data_dir}app_access_log.${_date}.txt | wc -l` total032=`grep "2018:03" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total032apptime3s.${_date}.txt && grep "2018:03" ${_data_path}/total032apptime3s.${_date}.txt | wc -l ` total033=`cat ${_data_path}/total032apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent03=$(printf "%d‱" $((${total032}*10000/${total031}))) echo "3 to 4 Total request ${total031} , More than 3 seconds ${total032} , Great ratio ${_percent03} , Most slow request interface ${total033}" >> ${_data_path}apptime.txt total041=`grep "2018:04" ${_data_dir}app_access_log.${_date}.txt | wc -l` total042=`grep "2018:04" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total042apptime3s.${_date}.txt && grep "2018:04" ${_data_path}/total042apptime3s.${_date}.txt | wc -l ` total043=`cat ${_data_path}/total042apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent04=$(printf "%d‱" $((${total042}*10000/${total041}))) echo "4 to 5 Total request ${total041} , More than 3 seconds ${total042} , Great ratio ${_percent04} , Most slow request interface ${total043}" >> ${_data_path}apptime.txt total051=`grep "2018:05" ${_data_dir}app_access_log.${_date}.txt | wc -l` total052=`grep "2018:05" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total052apptime3s.${_date}.txt && grep "2018:05" ${_data_path}/total052apptime3s.${_date}.txt | wc -l ` total053=`cat ${_data_path}/total052apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent05=$(printf "%d‱" $((${total052}*10000/${total051}))) echo "5 to 6 Total request ${total051} , More than 3 seconds ${total052} , Great ratio ${_percent05} , Most slow request interface ${total053}" >> ${_data_path}apptime.txt total061=`grep "2018:06" ${_data_dir}app_access_log.${_date}.txt | wc -l` total062=`grep "2018:06" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total062apptime3s.${_date}.txt && grep "2018:06" ${_data_path}/total062apptime3s.${_date}.txt | wc -l ` total063=`cat ${_data_path}/total062apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent06=$(printf "%d‱" $((${total062}*10000/${total061}))) echo "6 to 7 Total request ${total061} , More than 3 seconds ${total062} , Great ratio ${_percent06} , Most slow request interface ${total063}" >> ${_data_path}apptime.txt total071=`grep "2018:07" ${_data_dir}app_access_log.${_date}.txt | wc -l` total072=`grep "2018:07" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total072apptime3s.${_date}.txt && grep "2018:07" ${_data_path}/total072apptime3s.${_date}.txt | wc -l ` total073=`cat ${_data_path}/total072apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent07=$(printf "%d‱" $((${total072}*10000/${total071}))) echo "7 to 8 Total request ${total071} , More than 3 seconds ${total072} , Great ratio ${_percent07} , Most slow request interface ${total073}" >> ${_data_path}apptime.txt total081=`grep "2018:08" ${_data_dir}app_access_log.${_date}.txt | wc -l` total082=`grep "2018:08" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total082apptime3s.${_date}.txt && grep "2018:08" ${_data_path}/total082apptime3s.${_date}.txt | wc -l ` total083=`cat ${_data_path}/total082apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent08=$(printf "%d‱" $((${total082}*10000/${total081}))) echo "8 to 9 Total request ${total081} , More than 3 seconds ${total082} , Great ratio ${_percent08} , Most slow request interface ${total083}" >> ${_data_path}apptime.txt total091=`grep "2018:09" ${_data_dir}app_access_log.${_date}.txt | wc -l` total092=`grep "2018:09" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total092apptime3s.${_date}.txt && grep "2018:09" ${_data_path}/total092apptime3s.${_date}.txt | wc -l ` total093=`cat ${_data_path}/total092apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent09=$(printf "%d‱" $((${total092}*10000/${total091}))) echo "9 to 10 Total request ${total091} , More than 3 seconds ${total092} , Great ratio ${_percent09} , Most slow request interface ${total093}" >> ${_data_path}apptime.txt total101=`grep "2018:10" ${_data_dir}app_access_log.${_date}.txt | wc -l` total102=`grep "2018:10" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total102apptime3s.${_date}.txt && grep "2018:10" ${_data_path}/total102apptime3s.${_date}.txt | wc -l ` total103=`cat ${_data_path}/total102apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent10=$(printf "%d‱" $((${total102}*10000/${total101}))) echo "10 to 11 Total request ${total101} , More than 3 seconds ${total102} , Great ratio ${_percent10} , Most slow request interface ${total103}" >> ${_data_path}apptime.txt total111=`grep "2018:11" ${_data_dir}app_access_log.${_date}.txt | wc -l` total112=`grep "2018:11" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total112apptime3s.${_date}.txt && grep "2018:11" ${_data_path}/total112apptime3s.${_date}.txt | wc -l ` total113=`cat ${_data_path}/total112apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent11=$(printf "%d‱" $((${total112}*10000/${total111}))) echo "11 to 12 Total request ${total111} , More than 3 seconds ${total112} , Great ratio ${_percent11} , Most slow request interface ${total113}" >> ${_data_path}apptime.txt total121=`grep "2018:12" ${_data_dir}app_access_log.${_date}.txt | wc -l` total122=`grep "2018:12" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total122apptime3s.${_date}.txt && grep "2018:12" ${_data_path}/total122apptime3s.${_date}.txt | wc -l ` total123=`cat ${_data_path}/total122apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent12=$(printf "%d‱" $((${total122}*10000/${total121}))) echo "12 to 13 Total request ${total121} , More than 3 seconds ${total122} , Great ratio ${_percent12} , Most slow request interface ${total123}" >> ${_data_path}apptime.txt total131=`grep "2018:13" ${_data_dir}app_access_log.${_date}.txt | wc -l` total132=`grep "2018:13" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total132apptime3s.${_date}.txt && grep "2018:13" ${_data_path}/total132apptime3s.${_date}.txt | wc -l ` total133=`cat ${_data_path}/total132apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent13=$(printf "%d‱" $((${total132}*10000/${total131}))) echo "13 to 14 Total request ${total131} , More than 3 seconds ${total132} , Great ratio ${_percent13} , Most slow request interface ${total133}" >> ${_data_path}apptime.txt total141=`grep "2018:14" ${_data_dir}app_access_log.${_date}.txt | wc -l` total142=`grep "2018:14" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total142apptime3s.${_date}.txt && grep "2018:14" ${_data_path}/total142apptime3s.${_date}.txt | wc -l ` total143=`cat ${_data_path}/total142apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent14=$(printf "%d‱" $((${total142}*10000/${total141}))) echo "14 to 15 Total request ${total141} , More than 3 seconds ${total142} , Great ratio ${_percent14} , Most slow request interface ${total143}" >> ${_data_path}apptime.txt total151=`grep "2018:15" ${_data_dir}app_access_log.${_date}.txt | wc -l` total152=`grep "2018:15" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total152apptime3s.${_date}.txt && grep "2018:15" ${_data_path}/total152apptime3s.${_date}.txt | wc -l ` total153=`cat ${_data_path}/total152apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent15=$(printf "%d‱" $((${total152}*10000/${total151}))) echo "15 to 16 Total request ${total151} , More than 3 seconds ${total152} , Great ratio ${_percent15} , Most slow request interface ${total153}" >> ${_data_path}apptime.txt total161=`grep "2018:16" ${_data_dir}app_access_log.${_date}.txt | wc -l` total162=`grep "2018:16" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total162apptime3s.${_date}.txt && grep "2018:16" ${_data_path}/total162apptime3s.${_date}.txt | wc -l ` total163=`cat ${_data_path}/total162apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent16=$(printf "%d‱" $((${total162}*10000/${total161}))) echo "16 to 17 Total request ${total161} , More than 3 seconds ${total162} , Great ratio ${_percent16} , Most slow request interface ${total163}" >> ${_data_path}apptime.txt total171=`grep "2018:17" ${_data_dir}app_access_log.${_date}.txt | wc -l` total172=`grep "2018:17" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total172apptime3s.${_date}.txt && grep "2018:17" ${_data_path}/total172apptime3s.${_date}.txt | wc -l ` total173=`cat ${_data_path}/total172apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent17=$(printf "%d‱" $((${total172}*10000/${total171}))) echo "17 to 18 Total request ${total171} , More than 3 seconds ${total172} , Great ratio ${_percent17} , Most slow request interface ${total173}" >> ${_data_path}apptime.txt total181=`grep "2018:18" ${_data_dir}app_access_log.${_date}.txt | wc -l` total182=`grep "2018:18" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total182apptime3s.${_date}.txt && grep "2018:18" ${_data_path}/total182apptime3s.${_date}.txt | wc -l ` total183=`cat ${_data_path}/total182apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent18=$(printf "%d‱" $((${total182}*10000/${total181}))) echo "18 to 19 Total request ${total181} , More than 3 seconds ${total182} , Great ratio ${_percent18} , Most slow request interface ${total183}" >> ${_data_path}apptime.txt total191=`grep "2018:19" ${_data_dir}app_access_log.${_date}.txt | wc -l` total192=`grep "2018:19" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total192apptime3s.${_date}.txt && grep "2018:19" ${_data_path}/total192apptime3s.${_date}.txt | wc -l ` total193=`cat ${_data_path}/total192apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent19=$(printf "%d‱" $((${total192}*10000/${total191}))) echo "19 to 20 Total request ${total191} , More than 3 seconds ${total192} , Great ratio ${_percent19} , Most slow request interface ${total193}" >> ${_data_path}apptime.txt total201=`grep "2018:20" ${_data_dir}app_access_log.${_date}.txt | wc -l` total202=`grep "2018:20" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total202apptime3s.${_date}.txt && grep "2018:20" ${_data_path}/total202apptime3s.${_date}.txt | wc -l ` total203=`cat ${_data_path}/total202apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent20=$(printf "%d‱" $((${total202}*10000/${total201}))) echo "20 to 21 Total request ${total201} , More than 3 seconds ${total202} , Great ratio ${_percent20} , Most slow request interface ${total203}" >> ${_data_path}apptime.txt total211=`grep "2018:21" ${_data_dir}app_access_log.${_date}.txt | wc -l` total212=`grep "2018:21" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total212apptime3s.${_date}.txt && grep "2018:21" ${_data_path}/total212apptime3s.${_date}.txt | wc -l ` total213=`cat ${_data_path}/total212apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent21=$(printf "%d‱" $((${total212}*10000/${total211}))) echo "21 to 22 Total request ${total211} , More than 3 seconds ${total212} , Great ratio ${_percent21} , Most slow request interface ${total213}" >> ${_data_path}apptime.txt total221=`grep "2018:22" ${_data_dir}app_access_log.${_date}.txt | wc -l` total222=`grep "2018:22" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total222apptime3s.${_date}.txt && grep "2018:22" ${_data_path}/total222apptime3s.${_date}.txt | wc -l ` total223=`cat ${_data_path}/total222apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent22=$(printf "%d‱" $((${total222}*10000/${total221}))) echo "22 to 23 Total request ${total221} , More than 3 seconds ${total222} , Great ratio ${_percent22} , Most slow request interface ${total223}" >> ${_data_path}apptime.txt total231=`grep "2018:23" ${_data_dir}app_access_log.${_date}.txt | wc -l` total232=`grep "2018:23" ${_data_path}/apptime3s.${_date}.txt > ${_data_path}/total232apptime3s.${_date}.txt && grep "2018:23" ${_data_path}/total232apptime3s.${_date}.txt | wc -l ` total233=`cat ${_data_path}/total232apptime3s.${_date}.txt | awk '{print $2}' | sort | uniq -c | sort -k 1 -nr | head -n1` _percent23=$(printf "%d‱" $((${total232}*10000/${total231}))) echo "23 to 24 Total request ${total231} , More than 3 seconds ${total232} , Great ratio ${_percent23} , Most slow request interface ${total233}" >> ${_data_path}apptime.txt cat ${_data_path}apptime.txt | sort -k22 -rn | head -n25 echo "${_date} 1.30app request total is ${_total} More than 3 seconds total is ${_total3s} accounting ratio ${_percent}" >> ${_data_path}apptime.txt echo "${_date} 1.30app request total is ${_total} More than 3 seconds total is ${_total3s} accounting ratio ${_percent}" awk '$NF>3{print }' ${_data_dir}app_access_log.${_date}.txt | awk '{print $8}' | sort -n | uniq -c | sort -nr | head -5
慢请求接口保密已做切割,效果如下图: