Nginx如何用脚本分析日志
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章给大家分享的是Nginx使用脚本分析日志的方法,相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,以下使日志分析脚本的代码vim /data/scripts/log_ana
千家信息网最后更新 2025年12月01日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 ;;esacexit 0
实现功能:
1、分析访问排名前N的ip地址;
2、分析访问排名前N的url;
3、分析访问排名前N的目标url;
4、分析访问排名前N的终端类型;
5、自动匹配排名前N的ip的归属地。
注意:日志文件和分析脚本放在一个目录即可;日志文件输入绝对路径。用法:
以上就是Nginx使用脚本分析日志的方法,代码示例简单明了,如果在日常工作遇到此问题。通过这篇文章,希望你能有所收获,更多详情敬请关注行业资讯频道!
分析
日志
脚本
时间
终端
文件
来源
状态
代码
内容
地址
大小
方法
篇文章
类型
归属
截止
起始
输入
耐心
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器开启长连接
mpp数据库谁做的
福建私有云空间部署服务器
服务器管理信息表
南昌网络安全技术培训实战教学
销售软件开发票
技术派数据库架构方案
从零学习网络技术
上海第三康复医院网络安全
csgo完美服务器前几局掉帧
软件开发项目中的交流问题
查看服务器带宽windows
福建中职计算机网络技术课程
网络安全和信息化工作认识
非你莫属最牛软件开发
网络安全隐患与检查防范
2020网络安全50强
网络安全法是哪年修订
数据库高级管理功能
游戏辅助软件开发
服务器开启长连接
毕业论文使用别人的数据库
外贸数据库
主服务器进度条wa
网络安全有哪些硬件和软件
数据库数据表的建立实验心得
网络安全班主任工作报表
软件开发人员自我修养
人工智能网络技术的基础知识
数据库用什么软件开发
