小而美的Nginx日志分析利器GoAccess

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/21aspnet/article/details/89704799

一般会把Nginx的日志导入日志系统进行实时或者准实时的分析,不过不是每个公司都有这样的环境,还有有时候临时就是想分析监控下Nginx,那么GoAccess就很适合你,这块工具小而美,功能很强大。

GoAccess是一个开源的实时网络日志分析器和交互式查看器,可以在Linux/Unix系统中的终端或通过浏览器运行。
它为需要动态可视化服务器报告的系统管理员提供快速且有价值的HTTP统计信息。

官网:https://goaccess.io/

主要功能

  • 用C语言编写的快速实时,毫秒/秒更新
  • 只有 ncurses作为依赖
  • 几乎所有 Web日志格式(Apache,Nginx,Amazon S3,Elastic Load Balancing,CloudFront等)
  • 只需设置日志格式并根据您的日志运行它
  • 漂亮的终端和自举仪表板(Tailor GoAccess适合您自己的颜色品味/方案)
  • 当然,Valgrind进行了测试。

性能

  • 解析日志文件时GoAccess的速度有多快?

    请记住,许多因素都会影响解析时间,包括处理器,内存,日志等。但是,通常我们可以派生出下表:

    GoAccess'基准测试 - 英特尔(R)Core(TM)i7-4510U CPU @ 2.00GHz 8GB RAM
    基准(v1.2) - 默认哈希表 每秒51,394行
    基准(v1.2) - 磁盘上的B +树 每秒12,805行
    已启用基准测试完整功能和指标(> = v0.9.5) - 内存中的哈希表 每秒27,296行

    注意:大约52M命中(12GB大小)的数据集在20分钟(内存中),60分钟(磁盘存储)中进行解析。

  • GoAccess的内存占用量是多少?

    GoAccess不应泄漏任何内存(使用Valgrind测试),因此大多数情况下它取决于启用的日志大小和功能。对于3,397,814个已分析的行~134.1 MiB(启用了完整功能)。

    注意
    删除查询字符串-q可以大大减少内存消耗,尤其是在带时间戳的请求上。

 

一个漂亮的终端仪表板

默认情况下,GoAccess实时输出到终端。GoAccess仪表板通过在单个可滚动视图上显示不同报告的摘要作为面板,为您提供服务器指标的概述。

 

比终端更详细的实时HTML报告

除了端子输出,GoAccess允许您生成 HTMLJSONCSV报告。您甚至可以通过电子邮件发送HTML文件,因为它由单个文件组成,没有外部文件依赖性。

演示地址:https://rt.goaccess.io/?20181123091935

监控的Dashboard,一点都不比一些监控分析系统差。

REQUESTED FILES (URLS)显示了访问量最大的URL,这对于合理调整网站结构很有帮助。

VISITOR HOSTNAMES AND IPS显示访问的IP,有时候如果某个IP异常飚高是需要注意的。

HTTP STATUS CODES对HTTP的状态码200,302,404,500进行聚合统计,404对SEO不友好,如果500太多需要优化改进。

 

下载安装

下载 GoAccess 的源代码、编译和安装:

http://www.goaccess.io/download

# wget http://tar.goaccess.io/goaccess-0.9.6.tar.gz
# tar -xzvf goaccess-0.9.6.tar.gz
# cd goaccess-0.9.6/
# ./configure --prefix=/usr/local/goaccess --enable-geoip --enable-utf8
# make
# make install

如何使用磁盘数据库而不是将所有内容保存在内存中?

如果您有一个不适合物理内存的大型数据集,或者您希望数据持久性甚至是递增地处理日志,那么您希望使用B + Tree磁盘数据库。您需要在配置GoAccess之前安装Tokyo Cabinet。

#./configure --enable-utf8 --enable-geoip --enable-tcb = btree


安装缺失的库

# yum install glib2 glib2-devel GeoIP-devel  ncurses-devel zlib zlib-devel

# cd /usr/local/goaccess/bin/

定义时间格式,新建goaccessrc文件

# vim goaccessrc

time-format %T
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

更多安装信息:https://goaccess.io/download

你也可以从Docker和Git构建。

 

简单使用提取Nginx日志为报表

# /usr/local/goaccess/bin/goaccess -f /usr/local/nginx/logs/access.log -p /usr/local/goaccess/bin/goaccessrc -a > report.html

 

详细日志配置

  • 如何配置Apache或Nginx的日志/日期/时间格式?

    如果您使用的是Apache或Nginx附带的标准日志格式,那么配置GoAccess应该非常简单。

    有几种方法可以设置日志格式。如果要输出到终端(ncurses),最简单的方法是运行GoAccess -c

    #goaccess access.log -c
    

    您还可以在命令行中指定日志格式,因此对于标准的Apache / Nginx格式,您可以运行:

    #goaccess access.log --log-format = COMBINED
    

    但是,这些选项中的任何一个都不会使其成为永久性的,因为您需要在配置文件中指定格式。有关配置文件的更多详细信息,请参阅下面的问题

    注意
    有一个漂亮的小脚本可以将Nginx转换log_format为GoAccess log-formathttps://github.com/stockrt/nginx2goaccess
    此外,还有一个很好的脚本可以导出和转换Goflaccess要使用的Cloudflare ELS日志文件。

  • 配置文件位于何处?

    该配置文件位于下~/.goaccessrc或 %sysconfdir%/goaccess.conf其中%sysconfdir%或者是/etc//usr/etc/或 /usr/local/etc/。您可以在此处找到默认配置文件。

  • 如何配置IIS日志格式?

    GoAccess在配置文件和对话框中有一个通用的预定义日志格式选项。但是,此脚本可以自动从IIS日志文件中提取正确的格式。

 HTML报告(Web界面)

  • 如何生成静态HTML报告?

    要生成HTML报告,只需针对您的Web日志文件运行它:( - a是可选的)

    #goaccess /var/log/apache2/access.log -a -o report.html
    要么
    #zcat -f /var/log/apache2/access.log* | goaccess -a -o report.html
    

    有关更多示例,请查看GoAccess的手册页

  • 如何生成实时HTML报告?

    生成实时HTML报告的过程与创建静态报告的过程非常相似。

    只需生成静态报告并将输出html文件放在Web服务器www公用文件夹下。您需要添加几个额外的实时标志。使用--real-time-html是必需的。

    #goaccess access.log -o /usr/share/nginx/www/rt.goaccess.io/report.html --real-time-html
    

    在浏览器中打开生成的报告后,报告将尝试与window.location.hostname运行生成的报告的主机名()建立WebSocket连接。

    也可以使用它来指定它--ws-url=<host>。请注意,host应该指向运行GoAccess的位置并解析日志。此外,请确保host是有效的主机,不应包含http在其上。

    有关更多详细信息,请参见手册页示例。

    注意
    要通过TLS / SSL连接输出实时数据,您需要使用--ssl-cert=<cert.crt>--ssl-key=<priv.key>

展开阅读全文

没有更多推荐了,返回首页