Nginx如何用脚本分析日志-创新互联

这篇文章给大家分享的是Nginx使用脚本分析日志的方法,相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,以下使日志分析脚本的代码

创新互联建站长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为江孜企业提供专业的成都网站制作、成都网站建设、外贸营销网站建设江孜网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。

vim /data/scripts/log_analysis.sh

#!/bin/bash ############################################### #   Desc     :nginx日志分析脚本                   # #   Author    : Bertram                            # #   Date     : 2019-12-21                          # #   Copyright  : Personal belongs                    # ############################################### public(){   echo ""   read -p "请输入要分析的访问日志: " 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条数据,可自定义   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}'`   #获取起始与截止时间   echo "访问起始时间: $start_time ; 截止时间: $end_time"   #获取总行数与大小   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   #获取请求最多的url   cat $log_file | awk '{print $8}' | sort | uniq -c | sort -rn | head -${top_num} > $top_dest_url_file   #获取返回最多的状态码   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 "+-+-+-+-+-+- 下面是分析内容 +-+-+-+-+-+-"   #获取最活跃IP   printf "最活跃的前${top_num}个访问IP: \n"   cat $top_ip_file   echo ""   #获取访问来源最多的url   printf "访问来源最多的前${top_num}个url: \n"   cat $top_src_url_file   echo ""   #获取请求最多的url   printf "请求最多的前${top_num}个url: \n"   cat $top_dest_url_file   echo ""   #获取返回最多的状态码   printf "返回最多的前${top_num}个状态码: \n"   cat $top_code_file   echo ""   printf ""   #获取返回最多的终端号   printf "返回最多的前${top_num}个终端号: \n"   cat $top_terminal_file   echo ""   printf ""     printf "返回最多的前${top_num}个IP所属城市(查询时间有点慢,耐心等待!): \n"   echo ''   printf "%-15s %-15s %-30s\n" "访问次数" "  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

实现功能:
1、分析访问排名前N的ip地址;
2、分析访问排名前N的url;
3、分析访问排名前N的目标url;
4、分析访问排名前N的终端类型;
5、自动匹配排名前N的ip的归属地。
注意:日志文件和分析脚本放在一个目录即可;日志文件输入绝对路径。

用法:
Nginx如何用脚本分析日志

以上就是Nginx使用脚本分析日志的方法,代码示例简单明了,如果在日常工作遇到此问题。通过这篇文章,希望你能有所收获,更多详情敬请关注创新互联行业资讯频道!

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:Nginx如何用脚本分析日志-创新互联
链接URL:http://azwzsj.com/article/ddhhpg.html