GoAccess(实时 Apache 和 Nginx)开源Web 服务器日志分析器_Apache

GoAccess 是一个交互式实时 Web 服务器日志分析器程序,可快速分析和查看 Web 服务器日志。它以开源形式出现,并在 Unix/Linux 操作系统中作为命令行运行。它为 Linux 管理员提供了简短而有益的 HTTP(Web 服务器)统计报告。它还负责 Apache 和 Ngnix Web 服务器日志格式。

GoAccess 被设计为一种基于终端的快速日志分析器。它的核心思想是 快速分析和查看 Web 服务器实时统计信息,无需使用浏览器 (如果您想通过 SSH 快速分析访问日志,或者您只是喜欢在终端中工作,那就太好了)。

虽然终端输出是默认输出,但它能够生成完整的、独立的实时 HTML 报告(非常适合分析、监控和数据可视化),以及 JSON 和 CSV 报告。

GoAccess 功能

它具有以下特点。

    • 快速实时、毫秒/秒的更新,用 C 语言编写
    •  ncurses 作为依赖项
    • 几乎所有 Web 日志格式(Apache、Nginx、Amazon S3、Elastic Load Balancing、CloudFront、Caddy 等)
    • 只需设置日志格式并针对日志运行它
    • 漂亮的终端和引导仪表板(定制 GoAccess 以适合您自己的仪表板)

    如何安装 GoAccess?

    通常最新版本的 GoAccess 无法从默认系统软件包存储库获得,因此要安装最新的稳定版本,您需要在 Linux 系统下从源代码手动下载和编译它,如下所示:

    在 Linux 中从源安装 GoAccess

    ------------ Install GoAccess on CentOS, RHEL and Fedora ------------ 
    $ yum install ncurses-devel glib2-devel geoip-devel
    $ cd /usr/src
    $ wget https://tar.goaccess.io/goaccess-1.9.2.tar.gz
    $ tar -xzvf goaccess-1.9.2.tar.gz
    $ cd goaccess-1.9.2/
    $ ./configure --enable-utf8 --enable-geoip=mmdb
    $ make
    # make install
    ------------ Install GoAccess on Debian and Ubuntu ------------ 
    $ sudo apt install libncursesw5-dev libgeoip-dev apt-transport-https 
    $ cd /usr/src
    $ wget https://tar.goaccess.io/goaccess-1.9.2.tar.gz
    $ tar -xzvf goaccess-1.9.2.tar.gz
    $ cd goaccess-1.9.2/
    $ sudo ./configure --enable-utf8 --enable-geoip=legacy
    $ sudo make
    $ sudo make install

    注意:唯一的依赖项是 ncurses。

    注意:您可能需要安装构建工具 像gccautoconfgettext 等 用于编译/构建软件 源。例如autopointbase-develbuild-essential"Development Tools" .

    信息:如果输出实时 HTML,请确保端口 7890 已打开。

    配置选项

    可以使用多个选项来配置 GoAccess。论坛 完成配置选项的最新列表,运行 ./configure --help

    --enable-debug使用调试符号进行编译并关闭编译器优化。

    --enable-utf8使用广泛的字符支持进行编译。Ncursesw 是必需的。

    --enable-geoip=<legacy|mmdb>使用 GeoLocation 支持进行编译。MaxMind 的 GeoIP 是必需的。legacy将利用原始的GeoIP数据库。mmdb将利用增强的 GeoIP2 数据库。

    --with-getline动态扩展行缓冲区以分析全行请求,而不是使用固定大小的缓冲区 4096。

    --with-openssl使用 OpenSSL 支持 WebSocket 服务器编译 GoAccess。

    使用包管理器安装 GoAccess

    使用相应 Linux 发行版的默认包管理器在 Linux 上安装 GoAccess 的最简单和首选方法。

    注意:正如我上面所说,并非所有发行版都会在系统默认存储库中提供最新版本的 GoAccess。

    在 RedHat、CentOS 和 Fedora 上
    # yum install goaccess
    # dnf install goaccess    [From Fedora 23+ versions]
    在 Debian 和 Ubuntu 系统上

    GoAccess 实用程序从 Debian Squeeze 6 和 Ubuntu 12.04 开始可用。要安装,只需在终端上运行以下命令。

    $ sudo apt-get install goaccess

    注意:上述命令并不总是为您提供最新版本。要获取 GoAccess 的最新稳定版本,请添加官方的 GoAccess Debian 和 Ubuntu 存储库,如下所示:

    $ echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
    $ wget -O - http://deb.goaccess.io/gnugpg.key | sudo apt-key add -
    $ sudo apt-get update
    $ sudo apt-get install goaccess

    如何使用 GoAccess?

    在 Linux 计算机上安装 GoAccess 后,您可以通过运行以下命令来准备开始使用它。它将首先要求您确定访问日志的日志格式。

    GoAccess(实时 Apache 和 Nginx)开源Web 服务器日志分析器_Apache_02

    配置 GoAccess 日志格式

    获取任何 Web 服务器统计信息的最简单方法是使用带有输入日志文件名的标志“f”,如下所示。以下命令将为您提供 Web 服务器日志的一般统计信息。

    # goaccess -f /var/log/httpd/tecmint.com
    # goaccess -f /var/log/nginx/tecmint.com

    上面的命令通过在一个可滚动视图上将各种报告的摘要显示为面板,为您提供了 Web 服务器指标的完整概述,如下所示。

    Apache 日志概述

    GoAccess(实时 Apache 和 Nginx)开源Web 服务器日志分析器_GoAccess_03

    查看 Web 服务器 Apache 日志

    按操作系统划分的 Apache 日志 – 概述

    GoAccess(实时 Apache 和 Nginx)开源Web 服务器日志分析器_Web_04

    按操作系统查看 Apache 日志

    按访客带宽划分的 Apache 日志 – 概述

    GoAccess(实时 Apache 和 Nginx)开源Web 服务器日志分析器_服务器_05

    查看 Apache 访客带宽使用情况

    通过 Web 浏览器的 Apache 日志 – 概述

    GoAccess(实时 Apache 和 Nginx)开源Web 服务器日志分析器_GoAccess_06

    基于浏览器查看 Apache 使用情况

    如何生成 Apache HTML 报告?

    要生成 Apache Web 服务器日志的 HTML 报告,只需针对您的log日志文件运行它即可。

    # goaccess -f /var/log/httpd/access_log > reports.html

    GoAccess(实时 Apache 和 Nginx)开源Web 服务器日志分析器_服务器_07

    GoAccess:使用 Web 浏览器监控 Apache 日志

    关于性能

    • 解析日志文件时 GoAccess 的速度有多快?
      请记住,许多因素会影响解析时间,包括处理器、RAM、日志等,但是,通常我们可以得出下表:GoAccess 基准测试 — Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz 16GB RAM

    Benchmark (v1.4) - 默认哈希表

    每秒 101,245.3 行

    启用完整功能和指标基准测试 (>=v1.4) - 内存中哈希表

    每秒 100,502.5 行

    注意:在 1 小时 20 分钟(内存中)内解析大约命中(74G 大小)的数据集,消耗约 12GB RAM。