這篇文章給大家分享的是Nginx使用腳本分析日志的方法,相信大部分人都還沒學(xué)會(huì)這個(gè)技能,為了讓大家學(xué)會(huì),給大家總結(jié)了以下內(nèi)容,以下使日志分析腳本的代碼
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了平樂免費(fèi)建站歡迎大家使用!
vim /data/scripts/log_analysis.sh
#!/bin/bash ############################################### # Desc :nginx日志分析腳本 # # Author : Bertram # # Date : 2019-12-21 # # Copyright : Personal belongs # ############################################### public(){ echo "" read -p "請(qǐng)輸入要分析的訪問日志: " log_file echo "" if [ ! -f $log_file ];then echo "未找到: ${log_file}" exit 1 fi if [ ! -s $log_file ];then echo "${log_file}是空文件" exit 1 fi #輸出日志訪問量排名前top_num條數(shù)據(jù),可自定義 top_num=5 input_file=`echo $log_file | awk -F '/' '{print $(NF)}'` analyze_dir=/home/Bertram/`date +%F` top_ip_file=$analyze_dir/ngx_log_top_ip_${input_file}.txt top_src_url_file=$analyze_dir/ngx_log_top_src_url_${input_file}.txt top_dest_url_file=$analyze_dir/ngx_log_top_dest_url_${input_file}.txt top_code_file=$analyze_dir/ngx_log_top_code_${input_file}.txt top_terminal_file=$analyze_dir/ngx_log_top_terminal_${input_file}.txt mkdir -p $analyze_dir start_time=`head -1 $log_file | awk '{print $4}'|cut -d "[" -f2` end_time=`tail -1 $log_file | awk '{print $4}'|cut -d "[" -f2` total_nums=`wc -l $log_file | awk '{print $1}'` size=`du -sh $log_file | awk '{print $1}'` #獲取起始與截止時(shí)間 echo "訪問起始時(shí)間: $start_time ; 截止時(shí)間: $end_time" #獲取總行數(shù)與大小 echo "共訪問 $total_nums 次 ; 日志大小: $size" #獲取最活躍IP ##cat $log_file | awk '{print $1}' | sort | uniq -c | sort -rn | head -${top_num} > $top_ip_file awk '{ips[$1]++} END{for (i in ips){print ips[i],i}}' $log_file | sort | uniq -c | sort -k1 -nr| head -${top_num} > $top_ip_file #獲取訪問來源最多的url cat $log_file | awk '{print $13}' | sort | uniq -c | sort -rn | head -${top_num} > $top_src_url_file #獲取請(qǐng)求最多的url cat $log_file | awk '{print $8}' | sort | uniq -c | sort -rn | head -${top_num} > $top_dest_url_file #獲取返回最多的狀態(tài)碼 cat $log_file | awk '{print $11}'| sort | uniq -c | sort -rn | head -${top_num} > $top_code_file #獲取返回最多的終端類型 cat $log_file | awk '{print $14}'| sort | uniq -c | sort -rn | head -${top_num} > $top_terminal_file } simple(){ echo "+-+-+-+-+-+- 下面是分析內(nèi)容 +-+-+-+-+-+-" #獲取最活躍IP printf "最活躍的前${top_num}個(gè)訪問IP: \n" cat $top_ip_file echo "" #獲取訪問來源最多的url printf "訪問來源最多的前${top_num}個(gè)url: \n" cat $top_src_url_file echo "" #獲取請(qǐng)求最多的url printf "請(qǐng)求最多的前${top_num}個(gè)url: \n" cat $top_dest_url_file echo "" #獲取返回最多的狀態(tài)碼 printf "返回最多的前${top_num}個(gè)狀態(tài)碼: \n" cat $top_code_file echo "" printf "" #獲取返回最多的終端號(hào) printf "返回最多的前${top_num}個(gè)終端號(hào): \n" cat $top_terminal_file echo "" printf "" printf "返回最多的前${top_num}個(gè)IP所屬城市(查詢時(shí)間有點(diǎn)慢,耐心等待?。? \n" echo '' printf "%-15s %-15s %-30s\n" "訪問次數(shù)" " IP地址" " 歸屬地" echo '-----------------------------------------------' a=0 cat $analyze_dir/ngx_log_top_ip_${input_file}.txt | while read line do ip=$(echo $line | cut -d '"' -f2) count=$(echo $line | cut -d '"' -f1) printf "%-10s %-15s %-30s\n" $count $ip $(curl -s "http://freeapi.ipip.net/$(echo $line | cut -d '"' -f2)" | awk -F '\"' {'print $2"--"$4"--"$6'}) echo '-----------------------------------------------' let a=a+1 done echo "" printf "" } case $1 in help) echo "" echo -e $"Usage: $0 enter a log file \n" ;; *) public simple ;; esac exit 0
實(shí)現(xiàn)功能:
1、分析訪問排名前N的ip地址;
2、分析訪問排名前N的url;
3、分析訪問排名前N的目標(biāo)url;
4、分析訪問排名前N的終端類型;
5、自動(dòng)匹配排名前N的ip的歸屬地。
注意:日志文件和分析腳本放在一個(gè)目錄即可;日志文件輸入絕對(duì)路徑。用法:
以上就是Nginx使用腳本分析日志的方法,代碼示例簡單明了,如果在日常工作遇到此問題。通過這篇文章,希望你能有所收獲,更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!