更多 Google Analytics 替代方案
上周,我们介绍了使用 Google Analytics(GA)带来的隐私问题,并介绍了两款轻量级开源方案:GoatCounter 和 Plausible。这些工具适合只需要基础统计数据的网站所有者。在本篇第二篇文章中,我们将为需要更详细分析功能的用户介绍几款更重量级的 GA 替代品。此外,我们还会看看一些基于 Web 服务器访问日志生成分析数据的工具,特别是 GoAccess。
Matomo
最受欢迎的重量级方案之一是开放核心的 Matomo。它原名“Piwik”,创建于 2007 年;LWN 早在 2010 年就介绍过 Piwik。它是 Google Analytics 功能完备的替代品,因此需要 GA 强大功能的公司可以平滑迁移,同时还能获得开源自托管方案所带来的隐私和透明度优势。例如,网络机构 Isotropic 最近就切换到了 Matomo:
我们之所以这么做,是希望尊重用户的隐私,并认为将统计数据托管在自己的服务器上对我们和用户都更好。[...] 我们需要一款能与 Google Analytics 功能相媲美、甚至更胜一筹的方案。该方案需要提供实时分析、地理定位、广告活动追踪、热力图,并且是开源的。
尽管 Matomo 是最受欢迎、历史最悠久的开源分析工具,但它在排名前一百万的网站中也仅占 1.4%,大约只有 GA 市场份额的 2%——即便对知名的开源软件来说,要与这家市值 6000 亿美元的巨头竞争也绝非易事。
与 GA 一样,Matomo 也提供了一个包含若干基础数据和图表的汇总仪表板,以及众多详细报告,包括位置地图、引荐来源信息等。此外,Matomo 还有一项名为“内容追踪”的功能,可以在无需编写代码的情况下自动追踪用户与内容的交互(点击和展示),而 GA 则需要编写 JavaScript 或安装第三方插件才能实现。自托管版 Matomo 已包含所有这些功能,但网站所有者还可以付费安装各种插件,例如漏斗衡量、单点登录支持,甚至还有一款会记录完整用户会话(包括鼠标移动)、颇具侵入性的插件。
Matomo 采用 PHP 编写,使用 MySQL 作为数据存储;只需将文件复制到已安装 PHP 和 MySQL 的 Web 服务器上即可完成安装,过程十分简单。它采用 GPLv3 许可证;支持免费自托管(独立部署或作为 WordPress 插件),并提供两种价格相对低廉的云服务方案以及企业版定价。Matomo 看起来是一个运营良好的项目,拥有相当活跃的社区支持论坛;同时也为使用自托管版本的企业提供商业级别的支持计划。
Open Web Analytics
另一款类似但没那么流行的工具是 Open Web Analytics (OWA),它同样用 PHP 编写,采用 GPLv2 许可证。OWA 采用基于捐赠的开发模式,而没有为托管服务提供按月付费的选项。在所有开源工具中,OWA 是最像 Google Analytics 克隆版的一款;就连其仪表板看起来也与 GA 十分相似——因此对于熟悉 GA 界面的用户来说,它或许是个不错的选择。
OWA 的功能虽然没有 Matomo 那么丰富,但仍具备全部基础功能:概览仪表板、网站统计、在地图叠加层上显示访客位置以及引荐来源追踪。与 Matomo 一样,它也提供 WordPress 集成,可用于分析此类网站的访客。它还提供了多种扩展内置功能的方式,包括 API、添加新“模块”(插件)的能力,以及挂钩各类追踪事件的能力(例如访客的首次页面浏览或用户的鼠标点击)。
OWA 由单一开发者 Peter Adams 维护,曾经历过长时间的沉寂。最近开发似乎有所回暖,Adams 在 2020 年初发布了几个新版本。不过,近期版本中的一些警告,例如 1.6.9 版本的说明,可能会让人有些担心(“! IMPORTANT: The API endpoint has changed!
”)。安装同样简单,只需将 PHP 文件复制到 Web 服务器并准备好 MySQL 数据库即可。
Countly
另一款开放核心方案 Countly 成立于 2013 年,功能相对丰富,拥有多种仪表板类型。不过,在我们介绍的这些工具中,它最像一家“网络初创公司”的产品,首页配有精致的宣传视频,界面中的仪表板也十分精美。Countly 宣称其“致力于让您掌控自己的分析数据”。
Countly 在企业版(价格相对昂贵,年费 5000 美元起)和自托管社区版之间有着明确的区分,后者仅限于“基础 Countly 插件”和“聚合数据”。Countly 的核心源代码采用 GNU AGPL 许可证,服务器端使用 Node.js(JavaScript)编写,Android 和 iOS 的 SDK 则分别用 Java 和 Objective C 编写。
Countly 的基础插件提供针对 Web 和移动设备的常规分析指标,例如简单统计和引荐来源,同时也具备一些更高级的功能,如定时发送基于邮件的报告、记录 JavaScript 和移动应用崩溃等。不过,其企业版则引入了大量插件(由 Countly 或第三方开发者制作),提供 HTTP 性能监控、带目标和完成率的漏斗、A/B 测试等高级功能。总体而言,对于拥有移动应用或在线销售产品的公司来说,Countly 的社区版已经是相当丰富的功能集合,并且日后如有需要还可以选择升级到企业版。
Snowplow
一个更为通用的事件分析系统是 Snowplow Analytics,成立于 2012 年,被宣传为“企业级事件数据收集平台
”。Snowplow 负责数据收集这一环节,而如何建模和展示数据则由部署者自行决定。对于希望掌控会话建模方式或想用业务特定字段来丰富数据的大型公司来说,它很有用。
搭建 Snowplow 绝非胆小者所能胜任;它需要配置各个组件,并进行大量的 Amazon Web Services(AWS)设置;虽然或许可能在 AWS 之外安装,但并不容易。不过,在 GitHub Wiki 上有一份详尽的 AWS 搭建指南(该公司也提供付费托管方案)。企业可以将其配置为将事件写入 PostgreSQL、AWS 的列式 Redshift 数据库,或将数据留在 Amazon S3 中以便进一步处理。通常会使用 Looker 或 ChartIO 这类商业智能工具来查看数据,但 Snowplow 对此并不做强制规定。
Snowplow 是一组用多种语言编写的工具集合,主要是 Scala(通过 Spark)和 Ruby。它采用 Apache 2.0 许可证。Snowplow 被排名前 10,000 的网站中近 3% 的站点所使用,因此对于希望完全掌控自身数据管道的大型公司来说,它可能是一个合理的选择。
基于 Web 访问日志的分析
上述所有系统都使用基于 JavaScript 的追踪:这种方式的好处在于能提供更丰富的信息(例如屏幕分辨率),且无需访问 Web 日志。然而,如果可以获取服务器访问日志,将这些日志直接输入分析软件或许是更好的选择。有不少开源工具可以做到这一点:其中三款都已有超过 20 年的历史,分别是 AWStats、Analog 和 Webalizer。AWStats 用 Perl 编写,是其中功能最全、维护最积极的一款;Analog 用 Python 编写,Webalizer 用 C 编写,但后两者目前都已无人积极维护。
一个较新的竞争者是采用 MIT 许可证的 GoAccess,它最初被设计为基于终端的日志分析器,但也提供了美观的 HTML 视图。GoAccess 用 C 编写,仅依赖 ncurses,支持所有常见的访问日志格式,包括来自 Amazon S3 和 Cloudfront 等云服务的日志格式。
GoAccess 无疑是外观最现代、维护最好的访问日志工具,它能生成所有基础指标:按页面 URL 统计的点击量和访客数、按操作系统和浏览器类型的细分、引荐网站和 URL 等。它还包含一些基于 JavaScript 的工具通常不提供的指标,例如未找到页面的 URL、HTTP 状态码和服务器响应时间。
GoAccess 默认模式下输出静态报告,但也提供实时更新数据的选项:在终端模式下每 200 毫秒更新一次,在 HTML 模式下则每秒更新一次(通过其自带的小型 WebSocket 服务器)。GoAccess 的设计似乎经过深思熟虑,支持增量日志解析(使用存储到磁盘的数据结构),并通过快速解析代码和内存哈希表来支持对大型日志文件的解析。
该工具在大多数系统上都易于安装,为所有主流 Linux 包管理器提供了预编译包,并为 macOS 用户提供了 Homebrew 版本。它甚至可以通过 Cygwin 或通过 Windows 10 上的 Linux 子系统在 Windows 上运行。
总结
总的来说,对于那些需要更强大分析功能、或需要与 GA 类似但又希望是开源系统的人来说,有几个不错的选择。对于运营电子商务网站或需要漏斗分析等功能的用户,Matomo 和 Countly 似乎是不错的选择。需要直接掌控事件存储和建模方式的企业,或许可以考虑部署 Snowplow。而对于能够获取 Web 日志或只是不想使用基于 JavaScript 追踪的用户来说,GoAccess 在 2020 年似乎是进行 Web 日志分析的良好选择。
随机一篇博客
![Matomo 界面 [来自 matomo.org 的 Matomo 界面]](https://static.lwn.net/images/2020/wa-matomo-sm.png)
![Countly 界面 [来自 count.ly 的 Countly 界面]](https://static.lwn.net/images/2020/wa-countly-sm.png)
![GoAccess 界面 [GoAccess 界面]](https://static.lwn.net/images/2020/wa-goaccess-sm.png)
评论
登录后参与讨论