shell、NGINX 日志分析

NGINX 日志分析

在这里插入图片描述

remote_addr 远程主机IP地址 $1
remote_user 远程用户 (如果没有获得则为 - )
[$time_local] 访问时间 $4
$request 访问请求方式 $6 $7(URL) $8(版本号)
$status 状态码 $9
$boby_bytes_sent 请求网页文件大小 $10
$http_referer 请求的是哪个页面 $11
$http_user_agent 客户端访问的方式是什么,用什么主机进行访问的 $12
$http_x_forwarded_for HTTP请求端真实的IP

统计网页当前TCP连接数

ss -an | grep ‘^tcp’ | awk ‘{tcp_connect_status[$2]++} END{for(i in tcp_connect_status) {print i,tcp_connect_status[i]}}’


一、统计PV量

1.统计某一天(2020年4月21日)的PV量

grep ‘21/Apr/2020’ /usr/local/nginx/logs/www.shm.log | wc -l

2.统计某一天某一时段(2020年4月21日9点~11点)之间的PV量

awk ‘$4>="[21/Apr/2020:09:00:00]" && $4<="[21/Apr/2020:10:00:00]" {print $0}’ /usr/local/nginx/logs/www.shm.log | wc -l

3.统计一周前的PV量
1.获取一周前的日期
date -d '-1 week' +%d/%b/%Y
14/Apr/2020

2.将一周前的日期设置成一个外部变量
date="14/Apr/2020"

3.在AWK中使用外部变量,进行匹配
awk -v a=$date '$0 ~ a{i++} END {print i}' /usr/local/nginx/logs/www.shm.log

二、统计IP地址

1.统计某一天(2020年4月21日)当中,访问最多的10个IP地址

awk ‘/21/Apr/2020/ { ips[$1]++ } END { for(i in ips){print i,ips[$1]} }’ /usr/local/nginx/logs/www.shm.log | sort -k2 -rn | head -n10

2.统计某一天(2020年4月21日)当中,访问量大于100次的IP地址

awk ‘/21/Apr/2020/ { ips[$1]++ } END { for (i in ips) { if (ips[i]>100) {print i,ips[i]} } }’ /usr/local/nginx/logs/www.shm.log


三、统计URL访问的页面

1.统计某一天(2020年4月21日)当中,访问最多的10个页面($request)

awk ‘/21/Apr/2020/ { urls[$7]++ } END { for(i in urls) { print i,urls[i] } }’ /usr/local/nginx/logs/www.shm.log | sort -k1 -rn | head -n5

2.统计某一天当中,所有URL访问内容的总大小,以及访问次数

awk ‘/21/Apr/2020/ { urls[$7]++ ; size[$7]+=$10 } END { for (i in urls) { print i,size[i],urls[i] } }’ /usr/local/nginx/logs/www.shm.log | sort -k2 -rn | head


四、统计IP状态码

1.统计某一天(2020年4月21日)每个IP访问状态码数量($status)

awk ‘/21/Apr/2020/ { ipcode[$1" "$9]++ } END { for(i in ipcode) { print i,ipcode[i]} }’ /usr/local/nginx/logs/www.shm.log | sort -k1 -rn

2.统计某一天(2020年4月21日),某个IP地址 + 访问状态码404出现次数

awk ‘/21/Apr/2020/ { if($9 == “404”) {ipcode [$1" "$9]++ } } END { for(i in ipcode) print i,ipcode[i] }’ /usr/local/nginx/logs/www.shm.log | sort -k1 -rn

3.统计某一天(2020年4月21日),各种状态码的数量以及百分比占比

r/local/nginx/logs/www.shm.log | sort -k1 -rn

3.统计某一天(2020年4月21日),各种状态码的数量以及百分比占比

awk ‘/21/Apr/2020/ { code[$9]++;total++ } END {for (i in code) {printf i" “;printf code[i]” "; printf “%.2f%\n”,code[i]/total*100}}’ /usr/local/nginx/logs/www.shm.log

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值