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

Rak*_*esh 23 awstats

我对 awstats 还很陌生,并且已经在我的 apache 网络服务器上配置了 Awstats 来分析 nginx 访问日志(nginx 网络服务器用于我的 django 应用程序),我可以从中获取统计信息,LogFile=/var/log/nginx/access.log但是如何分析多个 gzip 格式的日志。比如access.log.1.gz...access.log.40.gz。我有很多日志要分析。

Dan*_*son 32

您可能想要在这里做的是分析所有这些日志文件一次,然后继续只分析当前的日志文件。

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

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

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

perl /usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log* > /tmp/nginx.tmplog
Run Code Online (Sandbox Code Playgroud)

这可能需要一段时间。

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

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

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

LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log /var/log/nginx/access.log.1.gz |"
Run Code Online (Sandbox Code Playgroud)

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


小智 5

或者,您可以使用实时日志分析器,例如 GoAccess。它真的很快,你不需要解压任何日志。apache & nginx

https://goaccess.io/

zcat -f access.log* | goaccess -a -s -b
Run Code Online (Sandbox Code Playgroud)

或者

zcat access.log.*.gz | goaccess -a -s -b
Run Code Online (Sandbox Code Playgroud)