Nginx如何用脚本分析日志-成都快上网建站

Nginx如何用脚本分析日志

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

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、成都微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了平乐免费建站欢迎大家使用!

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


网站名称:Nginx如何用脚本分析日志
网站地址:http://kswjz.com/article/peedoi.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流