提前在服务器安全组/防火墙开放8080、3000、3306三个端口的入站规则,服务器配置要求2核4G,操作系统支持CentOS7+、Ubuntu20.04+。
执行以下命令一键安装,全程不需要额外配置:
```bash curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun sudo systemctl enable --now docker 验证安装成功,输出版本号即正常 docker -v && docker compose version ```Matomo是开源用户行为分析工具,自带成熟埋点SDK,不需要自己从零开发埋点能力。执行以下操作:
```bash 新建工作目录 mkdir matomo-growth && cd matomo-growth ```在当前目录新建`docker-compose.yml`文件,内容可直接复制:
```yaml version: "3" services: matomo: image: matomo:4.15.1 container_name: matomo ports: - "8080:80" volumes: - ./matomo/config:/var/www/html/config - ./matomo/data:/var/www/html/data environment: - MATOMO_DATABASE_HOST=db - MATOMO_DATABASE_ADAPTER=PDO_MYSQL - MATOMO_DATABASE_TABLES_PREFIX=matomo_ - MATOMO_DATABASE_USERNAME=matomo - MATOMO_DATABASE_PASSWORD=matomo123456 - MATOMO_DATABASE_DBNAME=matomo depends_on: - db restart: always db: image: mysql:8.0 container_name: matomo_db ports: - "3306:3306" command: --max_allowed_packet=32505856 volumes: - ./mysql/data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=root123456 - MYSQL_DATABASE=matomo - MYSQL_USER=matomo - MYSQL_PASSWORD=matomo123456 restart: always ```执行启动命令:`docker compose up -d`,等待30秒后访问`http://你的服务器IP:8080`,按照引导完成初始化:
把刚才复制的埋点JS代码粘贴到所有页面的``标签之前即可。如果是Vue/React单页应用,在`index.html`加入埋点代码后,还需要添加路由切换上报逻辑:
```javascript // Vue3示例,放在router/index.js文件末尾 router.afterEach((to) => { window._paq.push(['setCustomUrl', to.fullPath]); window._paq.push(['setDocumentTitle', to.meta.title || document.title]); window._paq.push(['trackPageView']); }) // React示例,在App组件的useEffect中监听location变化执行上述3行代码即可 ```针对注册、加购、下单等核心增长事件,在对应动作触发时执行上报代码即可,示例如下:
```javascript // 点击注册按钮上报 window._paq.push(['trackEvent', '转化', '点击', '注册按钮', 0]); // 注册成功上报 window._paq.push(['trackEvent', '转化', '完成', '注册成功', 0]); // 下单成功上报,最后一个参数为订单金额,可用于统计客单价 window._paq.push(['trackEvent', '转化', '完成', '下单成功', 199.9]); ```所有事件命名统一使用英文,不要中英文混写,避免后续统计出现匹配错误。如果需要监控小程序、APP,可直接使用官方SDK:安卓端用https://github.com/matomo-org/matomo-sdk-android,iOS端用https://github.com/matomo-org/matomo-sdk-ios,按照文档接入即可。
执行以下命令一键部署Grafana,用于可视化展示增长指标:
```bash docker run -d --name=grafana -p 3000:3000 --restart=always grafana/grafana:9.5.2 ```
访问`http://你的服务器IP:3000`,默认账号密码都是`admin`,第一次登录后修改密码即可。
登录Grafana后,左侧菜单选择「Connections」->「Data sources」->「Add data source」,搜索MySQL,填写以下配置:
点击「Save & test」,提示连接成功即可。
新建看板,添加对应面板,以下SQL可直接复制使用,查询结果支持生成折线图、数值卡、表格等可视化组件:
① 日活用户(DAU):
```sql SELECT DATE(visit_first_action_time) AS 日期, COUNT(DISTINCT idvisitor) AS DAU FROM matomo_log_visit WHERE visit_first_action_time >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) GROUP BY 日期 ORDER BY 日期 DESC ```② 每日新增用户:
```sql SELECT DATE(visit_first_action_time) AS 日期, COUNT(DISTINCT idvisitor) AS 新增用户 FROM matomo_log_visit WHERE visitor_days_since_first_visit = 0 AND visit_first_action_time >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) GROUP BY 日期 ORDER BY 日期 DESC ```③ 注册转化率:
```sql SELECT DATE(visit_first_action_time) AS 日期, (SELECT COUNT(DISTINCT idvisitor) FROM matomo_log_link_visit_action WHERE idaction = (SELECT idaction FROM matomo_log_action WHERE name = '注册成功' AND type = 11) AND DATE(server_time) = 日期) / COUNT(DISTINCT matomo_log_visit.idvisitor) 100 AS 注册转化率 FROM matomo_log_visit WHERE visit_first_action_time >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) GROUP BY 日期 ORDER BY 日期 DESC ```④ 次日留存率:
```sql SELECT DATE(a.visit_first_action_time) AS 新增日期, COUNT(DISTINCT b.idvisitor)/COUNT(DISTINCT a.idvisitor)100 AS 次日留存率 FROM matomo_log_visit a LEFT JOIN matomo_log_visit b ON a.idvisitor = b.idvisitor AND DATEDIFF(b.visit_first_action_time, a.visit_first_action_time) =1 WHERE a.visitor_days_since_first_visit=0 AND a.visit_first_action_time >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) GROUP BY 新增日期 ORDER BY 新增日期 DESC ```在对应指标面板点击「Alert」->「Create alert rule」,配置告警阈值,比如DAU同比昨日跌幅超过20%触发告警。通知渠道配置步骤:
告警阈值不要设置过于灵敏,建议设置为指标同比波动超过20%才触发,避免频繁误报。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图