百度统计、Google Analytics平替开源网站分析工具:Umami

关注我的公众号:【编程朝花夕拾】,可获取首发内容。

01 引言

还记得之前做项目的时候,需要统计网站的PVUV等,引入了百度统计的一段js。因为公司需要上市,数据安全的越来越重视,于是由于安全问题取消了网站的统计功能。

最近,发现一款类似百度统计、Google Analytics的开源分析工具:Umami。可以云托管也可以独立部署,数据更安全。

02 简介

Umami是一款开源、注重隐私的网络分析工具,可作为谷歌分析的替代方案。它能提供有关网站流量、用户行为和性能的重要见解,同时始终将数据隐私放在首位。不收集或存储个人数据,无需使用Cookie,并且符合GDPRPECR标准。

优势:

  • 极简主义与用户体验

    界面清爽通过精美的图表和列表一目了然地展示,聚焦核心指标

  • 以隐私保护为核心

    无需Cookie警告,默认不收集任何个人身份信息,也不使用Cookie进行跟踪

  • 开源与自托管

    MIT 许可证下的开源软件,可以免费使用、修改和分发

  • 强大的多功能支持

    同时跟踪和管理多个网站,每个网站都有独立的仪表板和数据,以及共享链接

GitHub地址:github.com/umami-softw...

官方地址:umami.is/

03 部署

官方文档给了三种安装方式:

  • GitHub上源码安装
  • 使用Docker compose构建自己的镜像源
  • 使用已有的镜像

3.1 拉取镜像

本文以存在的镜像部署。镜像根据数据存储的介质分了两种:postgresql版和mysql版。

sh 复制代码
# PG版
docker pull docker.umami.is/umami-software/umami:postgresql-latest

# mysql版
docker pull docker.umami.is/umami-software/umami:mysql-latest

本节选用的PG版:

3.2 启动

官方没有给出docker启动的脚本,直接启动会报错。从源码安装的流程中发现,安装时需要指定DATABASE_URL参数,用来执行数据库驱动的连接以采集数据。如图:

所以我们启动业务需要指定数据库连接。容器的端口是3000,也需要暴露出来。

docker启动命令:

sh 复制代码
docker run \
--name umami \
-p 3000:3000 \
-e DATABASE_URL=postgresql://root:root@postgres@127.0.0.1:5432/umami \
-d docker.umami.is/umami-software/umami:postgresql-latest

这里的数据库连接需要指定数据库,所有我们需要提前创建好数据库。启动之后,需要查看日志:

sh 复制代码
docker logs -f umami 

如下图表示启动成功:

我们就可以通过,localhost:3000 访问了。localhost需要换成服务器的IP

届时,我们也会发现数据库也已经自动创建好了表:

3.3 测试

直接访问需要登录。默认的用户名和密码:admin/umami

登录之后非常简洁:

只有仪表盘、网站、报告和设置这四个Tab,且为空。

04 使用

在使用之前,默认进入的可能是英文。我们可以通过右上角的图标切换语言:

4.1 添加网站

我们需要添加需要监控的网站:

我们添加监控localhost的所有网站。同时也支持IP

查看网站,就会进入到监控的额详情的列表:

4.2 添加脚本

监控服务好了之后,就需要页面添加脚本了。

进入之后,查看跟踪代码:

js 复制代码
<script defer src="http://127.0.0.1:3000/script.js" data-website-id="6ffdf9b6-362a-42b3-afe6-4b91db81cb35"></script>

这里的data-website-id是生成的每个网站的唯一标识。只修要将这段js放在<head>标签里。

如图:

我分别在两个页面里面加了这段js

4.3 访问测试

这里可以收集到所有来自localhost的访问信息。更多信息请自行探索吧!

相关推荐
KYGALYX2 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了2 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
爬山算法3 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7253 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎3 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄3 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
Moment3 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
忆~遂愿4 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds4 小时前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化
仟濹4 小时前
【Java基础】多态 | 打卡day2
java·开发语言