linux分析nginx日志,Linux下Nginx日志分析

Access logs

以nginx默认的日志格式为例:

$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"

各字段的含义分别是:

$remote_addr 请求者IP

$remote_user HTTP授权用户,如果不使用Http-based认证方式,其值为空

[$time_local] 服务器时间戳

"$request" HTTP请求类型(如GET,POST等)+HTTP请求路径(不含参数)+HTTP协议版本

$status 服务器返回的状态码(如200,404,5xx等)

$body_bytes_sent 服务器响应报文大小,单位byte

"$http_referer" referer字段值

"$http_user_agent" User Agent字段

以下列举常用的日志分析命令

根据状态码进行请求次数排序

cat access.log | cut -d '"' -f3 | cut -d ' ' -f2 | sort | uniq -c | sort -r

输出样例:

210433 200

38587 302

17571 304

4544 502

2616 499

1144 500

706 404

355 504

355 301

252 000

9 403

6 206

2 408

2 400

或者使用awk:

awk '{print $9}' access.log | sort | uniq -c | sort -r

上例显示有704次404请求,接下来是如何找到这些请求的URL

awk '($9 ~ /404/)' access.log | awk '{print $7}' | sort | uniq -c | sort -r

输出样列:

21 /members/katrinakp/activity/2338/

19 /blogger-to-wordpress/robots.txt

14 /rtpanel/robots.txt

接下来考虑如果找到这些请求的IP地址,使用命令:

awk -F\" '($2 ~ "/wp-admin/install.php"){print $1}' access.log | awk '{print $1}' | sort | uniq -c | sort -r

输出样例:

14 50.133.11.248

12 97.106.26.244

11 108.247.254.37

10 173.22.165.123

php后缀的404请求(通常是嗅探)

awk '($9 ~ /404/)' access.log | awk -F\" '($2 ~ "^GET .*\.php")' | awk '{print $7}' | sort | uniq -c | sort -r | head -n 20

按URL的请求数排序

awk -F\" '{print $2}' access.log | awk '{print $2}' | sort | uniq -c | sort -r

url包含XYZ:

awk -F\" '($2 ~ "ref"){print $2}' access.log | awk '{print $2}' | sort | uniq -c | sort -r

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值