访问日志
我们使用以下格式,这也是默认的名为“ 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请求类型GET,POST等+不带参数的请求路径+ 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
最多请求的包含XYZ的URL
awk -F \“'(($ 2〜” ref“){print $ 2}'access.log | awk'{print $ 2}'| sort | uniq -c | sort -r