如何分析 Awstats 的多个 gz 日志文件?

如何分析 Awstats 的多个 gz 日志文件?

我对 awstats 还不太熟悉,已在 apache webserver 上配置了 Awstats 来分析 nginx 访问日志(nginx webserver 用于我的 django 应用程序),我可以从中获取统计数据,LogFile=/var/log/nginx/access.log但如何分析多个 gzip 格式的日志。例如 access.log.1.gz...access.log.40.gz。我有很多日志要分析。

答案1

您可能想要做的是分析所有这些日志文件一次,然后从那时起继续仅分析当前日志文件。

最简单的做法是将所有这些文件解压缩为一个文件,然后让 awstats 运行一次,然后将 awstats 指向你的 access.log 文件。

awstats 通常有一个名为 logresolvemerge.pl 的脚本,它可以读取压缩文件,并适当地合并它们以便 awstats 进行分析。

要合并所有现有的,请运行

perl /usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log* > /tmp/nginx.tmplog

这可能需要一段时间。

然后您可以让 awstats 在此文件上运行一次(适当设置 LogFile)。

从那时起,您应该让 awstats 在最新的日志文件上运行 - 这就是您当前的配置正在做的事情。

根据您运行 awstats 和轮换 nginx 日志文件的频率,您可能希望它同时读取当前日志文件和前一个日志文件。(例如,如果您每天 12 点轮换 nginx 日志文件,但每天 1 点运行 awstats,那么无论何时运行 awstats,日志文件都将仅包含自上次轮换以来写入的内容)。您可以在 LogFile 命令中使用 logresolvemerge.pl,如下所示:

LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log /var/log/nginx/access.log.1.gz |"

这告诉 awstats 运行 logresolvemerge.pl 命令并以两个日志文件作为参数,并且 awstats 将读取该脚本的输出(这就是管道 | 的作用)

答案2

或者,您可以使用实时日志分析器,例如 GoAccess。它非常快,而且您不需要解压任何日志。apache & nginx

https://goaccess.io/

zcat -f access.log* | goaccess -a -s -b

或者

zcat access.log.*.gz | goaccess -a -s -b

相关内容