分析nginx日志

统计指定URL访问次数

awk '$7 ~ "/url"' file.log | wc -l

统计指定状态码次数

awk '$9 == "404"' file.log | wc -l

最大并发量

awk '{ print $4 }' access.log | sort | uniq -c | sort -nr | head -1

统计总使用流量(带宽)

#!/bin/bash
LOG_FILE="access.log" # 修改为你的Nginx日志文件路径
 
# 使用awk提取body_bytes_sent字段并求和
TOTAL_BANDWIDTH=$(awk '{sum+=$10} END {print sum}' $LOG_FILE)
 
echo "总带宽消耗:$TOTAL_BANDWIDTH 字节"

统计某些高频访问日期

#!/bin/bash
 
# 设置日志文件路径
LOG_FILE="access.log"
 
# 设置分析的最小访问次数
MIN_COUNT=5
 
# 使用awk分析日志,提取时间戳和状态码,然后使用sort和uniq进行计数
awk '{print $4,$9}' $LOG_FILE | sort | uniq -c | sort -nr | awk '$1>=$MIN_COUNT {print $2}' | cut -d: -f1 | sort -n | uniq -c | sort -nr

统计高频访问IP

#!/bin/sh
# 使用awk分析Nginx日志,找出高频访问IP,并统计频率
 
# 定义输出文件名
OUT_FILE="top_ip.txt"
 
# 清空输出文件
> $OUT_FILE
 
# 使用awk分析日志,并输出到$OUT_FILE
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10 >> $OUT_FILE
 
# 打印出结果
cat $OUT_FILE

计算总访问量及平均日访问量

#!/bin/bash
 
LOG_PATH="access.log"
 
# 获取日志文件中的所有唯一日期
uniq_dates=$(awk '{print $4}' $LOG_PATH | cut -c 2-11 | sort | uniq)
 
# 初始化访问计数
total_count=0
 
# 遍历每个唯一日期,并计算对应的访问次数
for date in $uniq_dates
do
  count=$(grep $date $LOG_PATH | wc -l)
  total_count=$((total_count + count))
done
 
# 计算平均每日访问量
average_daily_visits=$((total_count / ${#uniq_dates[@]}))

echo "总访问量: $total_count"

echo "Average Daily Visits: $average_daily_visits"