使用GoAccess进行Nginx日志分析

24
我想使用goaccess解析和分析nginx日志,并从分析后的日志中生成报告。 但是,当我运行zcat -f access.log.*.gz | goaccess -a -c命令时,会出现以下错误:
GoAccess - version 0.5 - Jun 26 2012 04:30:08
An error has occurred
Error occured at: parser.c - process_log - 584
Message: No date format was found on your conf file.

我尝试将date_format %D %T这行添加到.goaccessrc文件中,但是我收到了另一个错误,错误信息如下:
GoAccess - version 0.5 - Jun 26 2012 04:30:08
An error has occurred
Error occured at: parser.c - process_log - 588
Message: No log format was found on your conf file.

我认为它询问nginx使用的日期和日志格式。但是在我的nginx配置中没有任何日期或日志格式。
此外,我尝试使用先前版本的goaccess(0.4.2版本),zcat -f access.log.*.gz | goaccess -a -c命令可以正常工作。它不需要任何日期或日志格式,我可以查看goaccess菜单并查看任何想要的数据。
但是,当我尝试使用zcat -f access.log.*.gz | goaccess -a -c > report.html命令获取HTML报告时,它什么也不做。它只是等待。(没有提供任何警告或错误)
注意:我已经检查了这些网页,如果您也想看一下。
  1. http://goaccess.prosoftcorp.com/faq
  2. http://wiki.nginx.org/HttpLogModule

1
你能贴出你的access.log文件中的一行样本吗? - Kayla
4个回答

26

通过以下的~/.goaccessrc配置文件,使其正常工作:

date_format %d/%b/%Y:%T %z
log_format %h - - [%d] "%r" %s %b "%R" "%u"

我从 wheezy 软件库中安装了 GoAccess 二进制包(没有源代码重新编译)。


5
使用goaccess -f [日志文件] -p ~/.goaccessrc执行。 - drosanda
3
这对我有用,但我还必须在命令行中添加“--no-global-config”。 - Daren

17
假设您正在使用CLF格式字符串,我建议使用-c运行goaccess,然后从配置菜单中选择NCSA Combined Log Format

enter image description here

"$time_local"在nginx中被替换为"23/Aug/2010:03:50:59 +0000",因此将date_format %d/%b/%Y添加到您的~/.goaccessrc文件中即可。

更新1:

从源代码安装v0.5

  1. 下载最新版本

  2. tar -xzvf goaccess-0.5.tar.gz

  3. cd goaccess-0.5/

  4. ./configure --enable-utf8

  5. make

  6. sudo make install

  7. goaccess -a -c /var/log/apache2/access.log

    注意:如果已经安装了它,则可能只需要在使用zcat之前执行第7步


188.3.88.98 - - [17/Sep/2012:07:13:08 +0000] "GET / HTTP/1.1" 200 2909 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1" - husnu
@husnu 请看看我的答案,应该可以解决问题。 - Kayla
格式字符串是CLF。但是当我使用-c运行goaccess时,我看不到像你发送的那样的屏幕。我正在使用版本0.5,请检查goaccess版本。此外,我是通过更新/etc/apt/sources.list文件后使用sudo apt-get install goaccess命令安装的goaccess。你能像我一样发布你的安装和运行命令吗? - husnu
谢谢您的回答。您最后的更新对我没有起作用。但是,我认为我找到了根本原因,当我运行“configure”时,它给了我这个错误:“configure: error: *** glib2未找到!”我认为更新或安装glib2将解决我的问题。 - husnu

6

如果您不想使用全局选项,请使用--no-global-config选项与goaccess一起使用。我正在按天处理我的日志文件:

grep --color=auto `date +"%d/%b"` /var/log/nginx/sitename.access.log | goaccess --no-global-config > report.html

GoAccess 版本:0.8



3
我遇到了和你一样的问题! 配置文件路径是正确的 "/etc/goaccess.conf" 尝试执行以下操作
    echo "date_format %d/%b/%Y
> log_format %h %^[%d:%^] “%r” %s %b “%R” “%u” %T
> time_format %H:%M:%S" >> /etc/goaccess.conf

请再试一次,祝你成功。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接