千家信息网

Nginx日志分析脚本

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,运维工作是一个比较复杂的工作,有时候面对上万条的日志,如何作分析?难道一条条的分析?聪明的人会选择脚本,这就是为什么现在提倡自动化运维的原因吧,废话不多说,直接上脚本。vim /data/script
千家信息网最后更新 2025年02月04日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        ;;esacexit 0

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

用法:

分析 日志 脚本 时间 终端 文件 来源 状态 地址 大小 类型 工作 归属 截止 起始 输入 复杂 聪明 耐心 万条 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 全国计算机三级网络技术点 金字工程电子政务网络安全 网络安全法保护哪些利益 色贴图软件开发 浩瀚网络技术 数据库高并发查询优化 民政局网络安全保障工作方案 关于网络安全答题活动的新闻稿 教委信息中心网络安全预案 软件开发数据怎么导出 确保数据安全关停服务器 迅雷 使用代理服务器 上海数据库通用多路锁控板 江西创推网络技术有限公司 cs开发用什么软件开发 网页游戏直播软件开发 人头录音软件开发 服务器拷机软件 服务器硬件应考察什么指标 一梦江湖特殊服务器 浅述我国网络安全的法律法规 我的世界联机服务器地址格式 忍者必须死3服务器是通用的吗 云服务器设置多大合适 苹果笔记本电脑做软件开发 中职生网络技术班高三学科 100人的软件开发团队 软件开发模型有x模型吗 数据库怎么查询年龄最大的两个人 网络技术协议合同范本
0