资讯专栏INFORMATION COLUMN

Linux下Nginx日志分析

makeFoxPlay / 1868人阅读

摘要:以默认的日志格式为例各字段的含义分别是请求者授权用户,如果不使用认证方式,其值为空服务器时间戳请求类型如,等请求路径不含参数协议版本服务器返回的状态码如,,等服务器响应报文大小,单位字段值字段以下列举常用的日志分析命令根据状态码进行请求

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39056.html

相关文章

  • 使用logrotate完成日志自动切分并轮转

    摘要:日志文件总管日志轮转工具可以自动对日志文件提供截断压缩以及轮转的功能。使用假设我们现在有一个日志文件存储在,需要对其每日进行切分为新旧两个日志文件,并删除天前的旧日志。以后系统就会对该日志进行自动的轮转管理。 部署网络应用时,会对请求进行日志保存,用于数据统计分析以及故障排除,但对于高并发请求的服务器,日志文件会迅速增长,快速的消耗磁盘空间,同时,分析一个大文件来排查问题也会非常慢。因...

    raise_yang 评论0 收藏0
  • 利用MongoDB分析Nginx日志

    摘要:通过通过入库后使用进行查询的方式可以通过如下种图片来查看在上图中主要是查看日志中请求状态码的总数量。 原文地址: http://52sox.com/use-mongodb-... 在项目开发过程中,总是离不开日志解析的工作,虽然有些时候觉得确实挺繁琐的,但是静下心来会发现有时候也是挺有趣的1件工作。 在这里,我们要从日志文件中找出IP访问最多的10条记录,然后判断其是否合法,从而采取...

    edgardeng 评论0 收藏0

发表评论

0条评论

makeFoxPlay

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<