分析 Apache 访问日志以快速识别滥用行为

分析 Apache 访问日志以快速识别滥用行为

所以中国有人喜欢滥用我的网络工具网站yougetsignal.com

我一直在尝试分析我的 access.log 文件,看看它们到底为何如此令人兴奋。我的网站上的大多数服务都使用 MySQL 调用来记录使用历史,这在很大程度上是一种抑制过度使用的好方法。偶尔他们将使用大量 IP 地址来访问服务,以避免 IP 速率限制。

我一直在使用这两个命令来分析我的 Apache access.log 文件:

sudo cat access.log | awk '{print $1}' | sort | uniq -c |sort -n

// Output sample:
// 3453 83.251.250.130
// 3888 79.136.28.38
// 4268 94.75.220.77
// 7116 61.147.122.183

sudo tail -50000 access.log | awk '{print $1}' | sort | uniq -c |sort -n

// Output sample:
// 276 66.249.68.86
// 365 155.212.251.138
// 1093 61.147.122.183

最后:

awk '{print $7}' access.log|cut -d? -f1|sort|uniq -c|sort -nk1|tail -n10

// Output sample:
// 15405 heavy-use-file.php
// 22339 heavy-use-file.php
// 218121 very-heavy-use-file.php

我最不需要的就是将访问计数、IP 地址和文件全部绑定在一起。是否可以编写一个 shell 命令,向我显示发出最多请求的 IP 地址,以及它们请求的文件(按计数降序排列)?我不是 Linux 高手,所以我在这里寻求帮助。

答案1

怎么样 :

awk '{print $1,$7}' access.log | cut -d? -f1 | sort | uniq -c |sort -nr

你也看过统计? 分析日志文件中的所有数据真是太棒了

答案2

阿帕奇是您的好朋友。它为您提供了类似于命令的视图top,但用于 Apache 访问日志。可以按命中数、千字节数等对视图进行排序。

您可以实时使用它或将较旧的日志输入给它。

相关内容