市面上有许多商业化的Web分析平台,比如:Google Analytics、Baidu等,但这些商业平台一般以SaaS的模式提供服务,因此在使用的时候就有可能有隐私方面的担心;另一方面问题是,在一些非互联网网络环境里面的Web应用也无法使用。
下面是Google Analytics 的架构图:
参考Google Analytics 架构,Web分析系统一般由 客户端信息收集器、日志分析处理器、配置管理以及报表几个部分组成。许多开源的Web分析器实际上与Google Analytics 有所类似,因此了解Google架构有助于理解其他类似的产品。
本文列举了一些最佳开源Web性能分析工具,这些工具相比商业的Web分析平台更具透明度和数据可控性,能够在不影响隐私的情况下自主跟踪、分析网站的各项指标。
1.Matomo
GitHub:https://github.com/matomo-org/matomo
Star:18.3K
Matomo是一个开源的Web分析平台(以前称为Piwik),提供了网站的流量分析、用户行为跟踪和转换优化工具等。Matomo基于PHP、MySQL开发,您可以下载并安装在自己的Web服务器上。 在五分钟的安装过程结束时,您将获得一个JavaScript代码。 只需将此标签复制并粘贴到您希望跟踪和实时访问分析报告的网站上。
开发语言:PHP
安装要求:
- PHP 7.2.5+
- DBMySQL 5.5+,或MariaDB
- PHP扩展pdo和pdo_mysql,或MySQLi扩展
2.GoAccess
GitHub:https://github.com/allinurl/goaccess
Star:16.8K
GoAccess是一个实时的网络日志分析器和交互式查看器,可以在 *nix系统的终端中运行,也可以通过浏览器运行。它提供了Web服务器日志的实时监控和分析功能。还提供了可定制的仪表盘、访问者行为的详细报告、数据过滤和搜索等功能。
功能特征:
- 完全实时:所有面板和指标在终端上每200 ms更新一次 输出和HTML输出上的每一秒。
- 所需的最小配置:您可以只运行它对您的访问日志文件,选择日志格式,让 GoAccess解析访问日志并显示统计数据。
- 跟踪应用程序响应时间:跟踪处理请求所用的时间。非常有用,如果你想 跟踪减慢您网站速度的页面。
- 监控几乎所有的网络日志:GoAccess允许任何自定义日志格式字符串。预定义选项包括, Apache,Nginx,Amazon S3,Elastic Load Balancing,CloudFront等
- 增量日志处理:需要数据持久性?GoAccess能够以增量方式处理日志 通过磁盘上的持久性选项。
- 只有一个依赖:GoAccess是用C写的。要运行它,您只需要ncurses作为依赖项。就是这样,它甚至有自己的Web Socket服务器-http://gwsocket.io/。
- 游客访问:确定最慢的访问量、访问者、带宽和指标 按小时或日期运行请求。
- 虚拟主机:是否有多个虚拟服务器(服务器块)?它用一个面板显示哪一个虚拟主机占用了大部分Web服务器资源。
- 自治系统号映射:非常适合检测恶意流量模式并相应地阻止它们。
- 颜色方案可定制:定制GoAccess以适合您自己的色彩方案。无论是通过 终端,或者简单地在HTML输出上应用样式表。
- 支持大型数据集:GoAccess具有解析大型日志的能力,因为它的优化 内存哈希表。它有很好的内存使用和相当不错的 性能这种存储也支持磁盘上的持久性。
- Docker支持:能够构建GoAccess的Docker镜像。
开发语言:C
3.umami
GitHub:https://github.com/umami-software/umami
Star: 17.4K
Umami是一个开源的网页分析工具,Umami提供可定制化以及报表生成功能,十分灵活,支持用户根据其特定需求定制分析。
开发语言:JavaScript、TypeScript
安装要求:
- Node.js版本16.13+
- MySQL 或者PostgreSQL
4.Plausible Analytics
GitHub:https://github.com/plausible/analytics
Star:16.7
Plausible Analytics是一个易于使用,轻量级(1 KB),提供了基本的网页分析功能,包括:浏览量、跳出率、推荐来源以及实时分析等。完全符合GDPR,CCPA和PECR。
开发语言:Elixir、JavaScript
5.PostHog
GitHub:https://github.com/PostHog/posthog
Star:14.3K
PostHog是一个开源的网络分析工具,允许企业和网站所有者跟踪和分析他们网站上的用户行为。它提供了事件跟踪、用户细分和队列分析等功能。
开发语言:Python、TypeScript
6.Fathom Analytics
GitHub:https://github.com/usefathom/fathom
Star:7.4K
Fathom Analytics是一个开源的网络分析工具,Fathom不使用Cookie跟踪个人用户,而是汇总数据以提供匿名分析。另外,Fathom的用户界面非常简单易用。
开发语言:Go、TypeScript
7.Countly
GitHub:https://github.com/Countly/countly-server
Star:5.3K
Countly是一个开源的Web或移动应用分析平台,提供了用户行为与参与度的全面视图,包括:用户统计信息、设备信息、会话长度信息等。其实Countly更专注于移动的应用程序分析。
开发语言:JavaScript
8.Ackee
GitHub:https://github.com/electerious/Ackee
Star:4K
Ackee是一个轻量级开源Web分析工具,提供了独立访问者和访问者页面视图。
功能特征:
- 自托管:Ackee可以在自己的服务器上安装、运行,并且100%开源。
- 先进的技术:使用轻量级Node.js和MongoDB架构开发。
- UI美观:最小和集中的界面。
- 无需cookie:无唯一用户跟踪,因此无需cookie。
- 事件跟踪:跟踪按钮点击、新闻稿订阅等。
- 支持GraphQL API:完全文档化的GraphQL API,允许您在Ackee上构建新工具。
开发语言:JavaScript
9.GoatCounter
GitHub:https://github.com/arp242/goatcounter
Star:3.7K
GoatCounter是一个轻量级、注重数据隐私、易于使用的Web分析工具。
功能特征:
- 注重隐私:不跟踪具有唯一标识符的用户, 需要GDPR通知。对收集的数据进行细粒度控制。
- 既轻量级又快速:仅向您的网站添加约3.5K的额外数据。也 有JavaScript免费的“跟踪像素”选项,或者您可以使用它从您的 应用程序的中间件或从日志文件导入。
- 使用不可识别的散列来识别没有Cookie的唯一访问 。
- 保存有用的统计信息,如浏览器信息、位置和 屏幕尺寸。跟踪推荐网站和广告活动。
- 简单:如果你被无数的选择和灵活性所迷惑,那么GoatCounter将是一个较为简单的选择。
- 可访问性:界面运行良好 使用屏幕阅读器等辅助技术。
- 100%开源:您可以确切地看到代码的功能, 进行改进,或出于任何目的自行托管它。
- 自己掌握自己数据:您可以随时导出所有数据并随时取消。
- 只需一个脚本标签即可在您的网站上集成:
- JavaScript集成对于大多数人来说都是一个不错的选择,但是您也可以使用 无JavaScript基于图像的跟踪器,将其集成到您的后端 中间件或解析日志文件。
开发语言:Go、JavaScript
10.Open Web Analytics
GitHub:https://github.com/Open-Web-Analytics/Open-Web-Analytics
Star:2.2K
Open Web Analytics(OWA)是一个免费开源Web分析工具,提供与Google Analytics类似的功能,例如跟踪网站流量和用户行为。
功能特征:
- 跟踪访问者、页面浏览量、电子商务交易和可配置操作
- 使用单个OWA服务器实例跟踪无限数量的网站
- 客户端JavaScript跟踪器
- 提供报表、仪表盘门户
- 查看和自定义所有报表
- Heatmaps地图
- 生成“Domstream”会话记录
- 记录访客的地理位置
- 提供用于管理和访问数据的REST API
- 多用户界面
- 支持自定义模块扩展框架
开发语言:PHP、JavaScript
11.Offen
GitHub:https://github.com/offen/offen
Star:765
Offen Fair Web Analytics使用一种分散的方法,允许网站所有者在自己的服务器上收集和存储数据,让他们完全控制自己的数据。Offen还提供审计日志功能,允许网站所有者查看其数据的使用情况。
开发语言:Go、JavaScript
12.Pirsch
GitHub:https://github.com/pirsch-analytics/pirsch
Star:773
Pirsch提供了实时跟踪、自定义事件以及高级过滤和分段等功能。
Pirsch为每个访问者生成唯一的指纹。指纹是访问者IP地址、用户代理、日期和盐的散列。跟踪内容不会侵犯访用户的隐私。它不使用cookie,也不存储任何个人信息,使其符合GDPR、CCPA和PECR。如果在服务器端使用,Pirsch还可以使用广告拦截器跟踪访问者。
开发语言:Go