Nginx如何用脚本分析日志
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章给大家分享的是Nginx使用脚本分析日志的方法,相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,以下使日志分析脚本的代码vim /data/scripts/log_ana
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
哪个服务器可以玩吃鸡
无线网络技术课
软件开发a轮
查询数据库某条记录
传统网络安全知识
上海威力网络技术销售公司
江阴网络技术管理招聘
固原软件开发怎么样
普通路由器变网络打印服务器
简述列车通信网络技术
税务 网络安全
数据库被lock
网络安全自查排查
温州企业软件开发要求
镇江小型工控机服务器
邯郸定制软件开发服务商
苹果招聘app软件开发
数据库中记录排序
游佳网络安全ppt
cpu读取位数据库
成矣科技互联网公司
五类软件开发资质
驾驶证查询为什么是服务器异常
简述列车通信网络技术
健全网络安全标准体系
软件网络安全检查要几天
数据库三级考试
元宇宙搭建服务器
泵站串口服务器
只有数据库才能建立的索引