需要一个分析Apache日志的软件

hd0*_*d01 -3 logging apache-2.2

我已经在特定时间段内 grep 了我网站的 Apache 日志。我需要一个软件来分析它以查看访问者最多的 IP 是什么。

我的操作系统是 Ubuntu。

你有什么建议吗?

谢谢你。

cyb*_*x86 5

存在许多日志文件分析器包 - 其中两个是Webalizer(用 C 编写)和AWStats(用 Perl 编写)。两者都应该可以通过 Ubuntu 存储库获得。这些将解析您的日志文件并生成供您查看的报告(通常通过 Web 浏览器,但它们也可以生成文本报告)。

传统上,它们被设置为自动运行(例如通过 cron),最新报告可通过访问您域下的特定路径获得,和/或通过电子邮件发送给您。(正如您所料,两者都需要进行一些设置才能生成您想要的内容)。

如果您只想获取发出最多请求的 IP 地址的列表,一次性 bash 命令可能比设置上述任一命令更容易。尝试:

awk '{!a[$1]++}END{for(i in a) if ( a[i] >10 ) print a[i],i }' access.log | sort -n -r
Run Code Online (Sandbox Code Playgroud)

本质上,使用 IP 地址作为索引创建一个数组,每次匹配时增加计数器 - 并显示超过 10 个匹配的结果。通过管道将结果sort按降序显示。

如果您已经使用grep过过滤列表,则可以通过上述命令(略有变化)将该命令的输出通过管道传输。

例如,对于今天午夜和凌晨 4 点(不包括)之间发出超过 10 个请求的 IP 地址列表(假设数据在 access.log 中):

grep '02/Apr/2012:0[0-3]' access.log | awk '{!a[$1]++}END{for(i in a) if ( a[i] >10 ) print a[i],i }' | sort -n -r
Run Code Online (Sandbox Code Playgroud)

示例输出:

40 66.xxx.xx.xx
35 184.xx.xxx.xx
26 147.xx.xxx.xx
18 74.xxx.xx.xxx
17 209.xx.xxx.xxx
15 14.xxx.xxx.xx
Run Code Online (Sandbox Code Playgroud)