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日志分析脚本
本文URL:https://www.cdcxhl.com/article20/cjhijo.html

成都网站建设公司_创新互联,为您提供网站导航网站收录品牌网站设计移动网站建设网站建设网站内链

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设