Web日志统计工具-GoAccess
2010-12-23 16:54:45 阿炯

本站赞助商链接,请多关照。 GoAccess 是一个采用C语言开发的用于统计 Apache、Nginx 类 Web 服务器的访问日志的工具,速度非常快,可即时生成自定义的统计报表,基于命令行操作并在MIT协议下授权。其使用方法请参考:Web日志分析工具goaccess使用参考。其核心思想是实时快速分析和查看 Web 服务器统计信息,而无需使用浏览器,适合希望通过 SSH 快速分析访问日志,或者只是喜欢在终端中工作的开发者。虽然终端输出是默认输出,但它能够生成完整的,自包含的实时 HTML 报告,非常适合分析,监控和数据可视化,以及 JSON 和 CSV 报告。


GoAccess旨在成为一个基于终端的快速日志分析器。其核心思想是实时快速分析和查看Web服务器统计信息,而无需使用浏览器(如果希望通过SSH快速分析访问日志,或者只是喜欢在终端中工作)。虽然终端输出是默认输出,但它能够生成完整的,自包含的实时HTML报告(非常适合分析,监控和数据可视化),以及可生成JSON和CSV报告。作为一个可视化的日志分析器,它非常容易上手,基本上相关的命令只需要简单的参考复制粘贴就可以了。


GoAccess is an open source real-time Apache log analyzer and interactive viewer that runs in a terminal in *nix systems. It provides fast and valuable HTTP statistics for system administrators that require a visual server report on the fly.


特性
使用 C 语言编写,快速、实时,毫秒/秒级的更新
只使用 ncurses 作为依赖
支持几乎所有的 Web 日志格式(Apache,Nginx,Amazon S3,Elastic Load Balancing,CloudFront 等)
轻松设置日志格式
美观的的终端和 dashboard
通过了 Valgrind 测试

Essentially, the way GoAccess works is that it will parse the well-known Apache access log file, from there, GoAccess will collect data from the parsed log and it will display it to the console or the X terminal. The collected information or generated reports will be displayed to the user/sysadmin in a visual/interactive window.

Reports include:
* General Statistics, bandwidth etc.
* Top Visitors
* Requested files
* Requested static files, images, swf, js, etc.
* Referrers URLs
* 404 or Not Found
* Operating Systems
* Browsers and Spiders
* Hosts, Reverse DNS, IP Location
* HTTP Status Codes
* Referring Sites
* Keyphrases
* Different Color Schemes
* Unlimited log file size

最新版本已支持中文,还增加了对 openssl-1.1 的 WebSocket 服务器的支持,还可以自定义浏览器。

可以使用多个选项配置GoAccess,有关配置选项的完整最新列表,请运行:
./configure --help

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

--enable-utf8
编译具有广泛的字符支持。Ncursesw是必需的。

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

--enable-tcb=<memhash|btree>
与Tokyo Cabinet存储支持一起编译。memhash将利用Tokyo Cabinet的内存中哈希数据库。btree将利用Tokyo Cabinet的磁盘B + Tree数据库。

--disable-zlib
在B + Tree数据库上禁用zlib压缩。

--disable-bzip
禁用B + Tree数据库上的bzip2压缩。

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

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


最新版本:1.3
该版本支持大型文件,GoAccess 不用把所有东西都放在内存,可以使用一个 on-disk B+ Tree 数据库。同时添加了 Geo City 支持;改进了配置文件解析;添加了解析指标;其他改进和 bug 修复。这次是一个主要版本,自上一版本以来提交了582次提交。最重要的更新是:i18n用于法语,西班牙语,中文和日语。它还增加了对openssl-1.1的WebSocket服务器的支持。现在可以包括自定义浏览器以及其他功能和修复程序。该版本目前已经支持简体中文,并且可以根据Linux默认语言来自动输出中文。

最新版本:1.4
v1.4.4 于2021年1月25日发布,本次更新内容包括:
已添加 'Caddy' 到预定义日志格式列表
添加了命令行选项以禁用状态验证 --no-strict-status
为解析 JSON 日志添加原生支持
新增了使用来处理以毫秒为单位的时间戳的功能 %*
确保 TUI / CSV / HTML 报告能够输出 uint64_t 数据
如果读取数据的速率大于 8192 req / s,需要确保允许 UI 渲染
如果没有读取/传输数据,需要确保不重新渲染 Term / HTML 输出
修复了构建配置难以在 NetBSD 上运行的问题
修复了由 systemd 管理时每秒通过套接字发送数据的问题
修复了解析器无法使用填充来解析 syslog 日期的问题
修复了 browsers.list 下的某些项目未使用制表符分隔的问题
解决了格式解析器无法正确解析由管道分隔的日志的问题
修复了通过管道传输数据时不显示 TX 数量指标的问题
解决了 XFF 解析器可能吞下其他字段的问题
修复了 %x 用作日期/时间说明符时的内存泄漏问题
用 poll(2)替换了 select(2),因为它比 select(2)更高效且更快
更新了瑞典语 i18n
更多更新信息请参考发行日志

最新版本:1.6
v1.6 现已于2022年6月上旬发布,本次更新内容包括:
稍微更改了 XFF 字段的指定方式。有关详细信息,看参见手册页。
确保在 DBIP City Lite 数据库中显示 city。
如果 --no-progresspassed,确保不显示任何 cleaning up resources 消息。
确保当通过 --date-spec=min 时每个面板的最大项目数默认为 1440(24hrs)
修复了解析带分隔符的 XFF 字段后跟主机 IP 时出现的问题。
修复了一些数据在发送到每个客户端之前在 WebSocket 服务器上缓冲的问题。
修复了 WebSocket 服务器会因 POLLNVAL 消耗 100% CPU 而失败的问题。
修复了尝试在 mac/BSD 上打开未解析 IP 时的 segfault。
更多详情可查看发行说明

最新版本:1.7
v1.7.2 现已于2023年4月上旬发布,本次更新内容包括:
为 HTTP 状态代码添加了颜色编码方案。
添加 --external-assets 命令行选项以输出外部 JS+CSS 文件。与内容安全策略 (CSP) 一起使用时非常有用。
如果 Windows 出现在用户代理上,确保它有一个回退。
确保在与'--ws-url' 和'--port' 一起使用时,以支持多种用例的方式构建 WebSocket URL。
修复了由于 FreeBSD 上的空指针异常导致的 segfault。
修复了 --disable-nls 构建。
修复了通过 JSON 解析 XFF 规范时的无效读取(堆缓冲区溢出)。
修复了解析特定 XFF specifier 时的 segfault。

最新版本:1.9
v1.9.4 现已于2025年4月上旬发布。本次更新内容包括:
在 HTML 报告中添加了用于地理定位的方位角(globe)投影,从而提供了不太失真的 global map 视图。
添加了'apple-touch-icon',改进了对 iPhone 主屏幕的支持,可直接从主屏幕快速访问报告。
向 HTML 报告添加'aria-*' 属性以提高可访问性,确保报告更适合屏幕阅读器和其他辅助技术。
在 HTML 报告中添加了'theme-color' '<meta>' tag,以便更好地与移动设备集成,使浏览器的地址栏与报告的主题颜色相匹配。
添加了额外的验证检查以确保 CLI 选项中提供的文件路径存在,从而防止出现错误。
添加了 WebSocket 身份验证,以支持本地生成的 JSON Web Tokens (JWT) 和外部验证方法。此增强功能可轻松与外部身份验证系统集成,同时确保对令牌刷新请求进行 CSRF 保护。
更改了 WebSocket 服务器以避免在 big-endian 平台上交换字节,修复了 AIX 系统上的兼容性问题。
修复了缩放 / 平移地图时意外跳过或跳回的问题,提供了更流畅的用户体验。
通过在将 MIME 类型添加到存储之前对其进行规范化,修复了由于 casing 不同导致相同 MIME 类型显示为重复的问题,确保报告的一致性。
用 <section>、<header> 和 <article> 等语义更强的 HTML 元素替换 div 元素,改善了报告的结构和可访问性。
更新了支持的浏览器和操作系统列表,以确保更准确的跟踪和报告。
更新了浏览器列表的机器人 / 爬虫解析方法,可以捕获以前难以解析的机器人,从而实现更精准的定位和更好的分析。


官方主页:https://goaccess.io/