使用linux命令解析access.log和error.log

访问日志

我们使用以下格式,这也是默认的名为“ combined”nginx格式:

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

字段说明如下:

  • $ remote_addr –发出请求的IP
  • $ remote_user-HTTP认证用户。对于大多数应用程序,这将是空白的,因为现代应用程序不使用基于HTTP的身份验证。
  • [$ time_local] –每个服务器时区的时间戳
  • “ $ request” – HTTP请求类型GETPOST+不带参数的请求路径+ HTTP协议版本
  • $ status –来自服务器的HTTP响应代码
  • $ body_bytes_sent –服务器响应的大小,以字节为单位
  • “ $ http_referer” –推荐URL(如果存在)
  • “ $ http_user_agent” –服务器看到的用户代理

让我们探索一些可以帮助我们分析日志的命令。

按响应代码对访问进行排序

猫access.log | cut -d'“'-f3 | cut -d''-f2 | sort | uniq -c | sort -rn

样本输出:

 210433 200

  38587 302

  17571 304

   4544 502

   2616 499

   1144 500

    706404

    355504

    355301

    252000

      9 403

      6206

      2408

      2 400

可以使用awk以下方法完成相同的操作:

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

样本输出:

 210489 200

  38596 302

  17572 304

   4544 502

   2616 499

   1144 500

    706404

    355504

    355301

    252000

      9 403

      6206

      2408

      2 400

如您所见,日志显示404返回了700多个请求!

让我们找出现在断开了哪些链接?

以下将搜索导致404响应的请求,然后按每个URL的请求数对它们进行排序 。您将获得最多访问的404页。

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

对于easyengine,请改用:

awk'($ 8/ 404 /)'access.log | awk'{print $ 8}'|  sort  uniq -c |  sort -rn

样本输出(截断):

  21 /成员/ katrinakp /活动/ 2338 /

  19 /blogger-to-wordpress/robots.txt

  14 /rtpanel/robots.txt

同样,对于502(网关错误),我们可以运行以下命令:

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

样本输出(截断):

    728 /wp-admin/install.php

    466 /

    146 /视频/

    130 /wp-login.php

谁正在请求断开的链接(或URL导致502

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 |头-n 20

最受欢迎的网址

最受欢迎的网址

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

最多请求的包含XYZURL

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、付费专栏及课程。

余额充值