开源的网站数据分析统计平台——Matomo

Matomo

文章目录

  • Matomo
    • 前言
    • 一、环境准备
      • [1. 整体安装流程](#1. 整体安装流程)
      • [2.安装PHP 7.3.30](#2.安装PHP 7.3.30)
      • 3.nginx配置
      • 4.安装matomo
          • [4.1 访问安装页面 http://192.168.10.45:8088/index.php](#4.1 访问安装页面 http://192.168.10.45:8088/index.php)
          • [4.2 连接数据库](#4.2 连接数据库)
          • [4.3 设置管理员账号](#4.3 设置管理员账号)
          • [4.4 生成js跟踪代码](#4.4 生成js跟踪代码)
          • [4.5 安装完成](#4.5 安装完成)
          • [4.6 警告修改](#4.6 警告修改)
          • [4.7 刷新页面,就可以看到登陆页面](#4.7 刷新页面,就可以看到登陆页面)
    • 二、Matomo使用
      • [1. JS代码跟踪](#1. JS代码跟踪)
          • [1.1 获取生成js](#1.1 获取生成js)
          • [1.2 网站粘贴js代码](#1.2 网站粘贴js代码)
          • [1.3 访问后查看报表](#1.3 访问后查看报表)
          • [1.4 js方法封装](#1.4 js方法封装)
          • [1.5 测试代码](#1.5 测试代码)
          • [1.6 报表](#1.6 报表)
      • [2. IMG跟踪](#2. IMG跟踪)
      • [3. HTTP API 跟踪](#3. HTTP API 跟踪)
      • [4.HTTP API 获取报告](#4.HTTP API 获取报告)
          • [4.1 创建身份验证token](#4.1 创建身份验证token)
    • 身份验证
          • [4.2 拼接查询参数](#4.2 拼接查询参数)
          • [4.3 发起请求](#4.3 发起请求)

Matomo: 一款开源的网站数据分析统计平台,以前称为 `Piwik,可以让您轻松地从访问者那里获得您想要的信息。例如查看您的网站访问者来自何处、正在查看哪些页面、单击了哪些链接以及其他各种有用的信息。

可以用于跟踪、分析您的网站的流量,同时充分保障数据安全性、隐私性,

提供了丰富的报告和实时数据分析功能,并提供了一套完整的隐私保护措施,确保用户数据安全。

官网传送门:matomo

前言

​ 本文是为了在linux系统上安装matomo,并使用它完成页面跟踪统计数据获取

一、环境准备

1. 整体安装流程

  • PHP 7.2.5 或者以上的版本
  • 安装php扩展:pdo 和pdo_mysql
  • MySQL 5.5或者以上的版本
  • nginx配置
  • 下载安装matomo 4.15.1

2.安装PHP 7.3.30

  • 1.安装epel

    sh 复制代码
    #yum list installed | grep php #查看已安装的PHP,
    #查到后rpm -e 卸载 #yum repolist all | grep php
    yum install epel-release -y
  • 2.安装REMI源:

    sh 复制代码
     rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm
  • 3.查看可以安装的PHP版本:

    sh 复制代码
    yum repolist all | grep php
  • 4.安装管理工具

    shell 复制代码
    yum install yum-utils
  • 5.设置默认安装的版本

    sh 复制代码
    yum-config-manager --enable remi-php73
  • 6.安装php

    sh 复制代码
    yum install php
  • 7.查看php安装版本

    sh 复制代码
    php -v
  • 8.查看哪些可以安装的PHP扩展

    sh 复制代码
    yum search php74-php
  • 9.安装php拓展

    sh 复制代码
    yum install php74-php-bcmath php74-php-gd php74-php-pdo php74-php-mbstring php74-php-cli php74-php-fpm php74-php-mysqlnd php74-php-simplexml php74-php-devel
    
    yum install php php-curl php-gd php-cli mysql-server php-mysql php-xml php-mbstring php-fpm
  • 10.运行php-fpm

    修改/etc/php-fpm.d/www.conf文件

    启动fpm程序 systemctl start php-fpm.service

    sh 复制代码
    #启动 php-fpm
    systemctl start php-fpm.service
    #停止 php-fpm
    systemctl stop php-fpm.service
    #重启 php-fpm
    systemctl reload php-fpm.service
  • 11.查看php扩展

    sh 复制代码
    php -m

3.nginx配置

matomo的安装包是通过php的网页安装,但php直接访问会被当成普通文件直接下载,不会被编译,

所以需要在nginx中配置 php-fpm 解释器

  • nginx.conf文件配置

    shell 复制代码
    user nginx nginx;
    #user  nobody;
    worker_processes  1; 
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
    	server {
            listen 8088;
            server_name 192.168.10.45;
            charset utf-8;
    		root   /matomo/matomo;
        
            #location / {
            #    try_files $uri $uri/ /index.php?$query_string;
            #}
    		
    		location / {
                index  index.php  index.html index.htm;
            }
    
            location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
        }
    
    }

​ 重启nginx nginx -s reload

4.安装matomo

sh 复制代码
# 解压matomo压缩包
unzip matomo-latest.zip -d ./

#给解压的安装包赋权限
chown -R nginx:nginx /matomo
chown -R 777 /matomo/*

注:如果出现 nginx No input file specified错误,检查nginx错误日志如有 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream ,尝试关闭selinux解决:``setenforce 0`。

安全增强型Linux(SELinux)是一个Linux内核的功能,它提供支持访问控制的安全政策保护机制。记录操作如何关闭SELinux,并且避免系统无法启动的问题。执行命令:setenforce 0临时关闭SELinux

4.1 访问安装页面 http://192.168.10.45:8088/index.php


*

4.2 连接数据库


*

4.3 设置管理员账号


*

4.4 生成js跟踪代码
js 复制代码
<!-- Matomo -->
<script>
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="//192.168.10.45/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '1']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->
4.5 安装完成


*

4.6 警告修改

修改 config.ini.php

找到 trusted_hosts[] = "192.168.10.45" ,增加端口,改为 trusted_hosts[] = "192.168.10.45:8088"

另外还需要再增加一行 enable_trusted_host_check=0,用于跳过受信任检测,否则反代之后登录可能会失败


*

4.7 刷新页面,就可以看到登陆页面

二、Matomo使用

1. JS代码跟踪

1.1 获取生成js


*

1.2 网站粘贴js代码


*

1.3 访问后查看报表


*

1.4 js方法封装

官方api参数:https://developer.matomo.org/guides/tracking-javascript-guide

js 复制代码
// https://developer.matomo.org/guides/tracking-javascript-guide

/** 页面地址信息上报 */
const setCustomUrl = (url) => {
    window._paq.push(['setCustomUrl', `${url}`])
}

/** 页面标题信息上报 */
const trackPageView = (title) => {
    window._paq.push(['trackPageView', `${title}`])
}

/** 用户信息userId上报 */
const setUserId = (userId) => {
    window._paq.push(['setUserId', `${userId}`])
    window._paq.push(['trackPageView'])
}

/** 重置userId,这里多次调用trackAllContentImpressions是为了在退出登录的时候重置调userId,并在下一次登录时重新生成一条最新的记录 */
const resetUserId = () => {
    // UserID passed to Matomo (see https://developer.matomo.org/guides/tracking-javascript-guide#user-id)
    window._paq.push(['resetUserId'])
    window._paq.push(['trackAllContentImpressions', 'new_visit=1'])
    window._paq.push(['trackPageView'])
    window._paq.push(['trackAllContentImpressions'])
}


/**
 * 点击外网地址
 * @param url
 */
const setDomains = (url) => {
    _paq(['setDomains', [url]]);
    _paq.push(['trackPageView']);
}

/**
 * 行为埋点
 * $matomo.trackEvent('行为类别', '事件', 'name', 'value')
 * behaviorCategory  行为类别
 * event 事件
 * name 事件名称
 * value 事件值
 */
const trackEvent = (behaviorCategory, event, name, value) => {
    window._paq.push(['trackEvent', `${behaviorCategory}`, `${event}`, `${name}`, `${value}`])
}

const matomoFun = {
    setCustomUrl, trackPageView, setUserId, resetUserId, trackEvent
}

export default matomoFun;
1.5 测试代码
js 复制代码
matomoF(item) {
  console.log("matomo--", item);
  matomoFun.setUserId("xxx123123xxx");
  matomoFun.trackEvent('风险申报', '点击matomo按钮', "测试事件",item.id);
},
1.6 报表

2. IMG跟踪

使用img标签追踪

当访客禁用 JavaScript 或者无法使用 JavaScript 时,img标签追踪功能(Image Tracking)允许您使用img标签中的链接来进行访客统计。 在下方产生链接,并将生成的 HTML 粘贴到网页中。如果要把它用作 JavaScript 的追踪功能失败时的备用方式,您可以把它放在 <noscript></noscript> 标签中。

查看 追踪 API 说明文档阅读可用于img标签追踪链接的全部参数列表。

img标签追踪链接
js 复制代码
<!-- Matomo Image Tracker-->
<img referrerpolicy="no-referrer-when-downgrade" src="http://192.168.10.45:8088/matomo.php?idsite=1&amp;rec=1" style="border:0" alt="" />
<!-- End Matomo -->

3. HTTP API 跟踪

要跟踪页面浏览量、事件、访问量,必须向跟踪 HTTP API 端点发送 HTTP 请求(GET 或 POST),例如,http://192.168.10.45:8088/matomo.php 设置了正确的查询参数。

官方参数地址:https://developer.matomo.org/api-reference/tracking-api

在线API URL生成器:https://http-builder.openmost.io/

注意:必填参数
  • idsite (required) --- The ID of the website we're tracking a visit/action for.
    idsite (必填) --- 我们跟踪其访问/操作的网站的 ID。
  • rec (required) --- Required for tracking, must be set to one, eg, &rec=1.
    rec (required) --- 跟踪时需要,必须设置为 1,例如 &rec=1 .
api测试
  • 查看报表

4.HTTP API 获取报告

Matomo中的所有数据,都可通过简单的API接口获取。这个插件是Web服务的切入点,那你可以通过调用获取你想要的网站分析的数据,比如XML,JSON,PHP,CSV等。

Matomo API 介绍Matomo API 参考资料

4.1 创建身份验证token

身份验证

如果要在脚本,crontab等中请求数据,则需要将URL参数token_auth添加到需要身份验证的API调用URL中。

注意:超级管理员和编辑权限生成的令牌是不能在查询中使用的,所以要换其他只读账号生成

令牌: 3c0a2e399a490607f029ae35a727b357


*

4.2 拼接查询参数

参数规范:https://developer.matomo.org/api-reference/reporting-api

标准API参数

  • idSite :您网站的整数 ID,例如。idSite=1,还可以指定以逗号分隔的 idSites 列表,例如。idSite=1,4,5,6,如果要获取所有网站的数据,请设置 idSite=all(仅某些 API 方法支持此功能)

  • period: 您请求统计信息的时间段,可以是以下任意一项:日、周、月、年或范围。所有报告都根据网站的时区返回日期

    • day:day 返回给定日期的数据。
    • week:week 返回包含指定"date"的那一周的数据
    • month:返回包含指定"date"的月份的数据
    • year:year 返回包含指定"date"的年份的数据
    • range:range 返回指定"date"范围的数据。

    例如,要请求 1 月 1 日至 2 月 15 日范围的报告,可以编写 &period=range&date=2011-01-01,2011-02-15

  • date:日期

    • 标准格式 = YYYY-MM-DD
    • 关键字= today , yesterday , lastWeek , lastMonth or lastYear. These are relative the website timezone. For example, for a website with UTC+12 timezone
    • 日期范围 = lastX previousX YYYY-MM-DD,YYYY-MM-DD
  • segment:定义要将报表筛选到的自定义区段。

  • format:定义输出的格式,XML、JSON、CSV、TSV、HTM、RSS

  • filter_limit:定义要返回的行数。

    • 默认情况下,仅返回前 100 行。
    • 设置为 -1 可返回所有行
  • module:API api类型

  • method:获取数据类型,如VisitorInterest.getNumberOfVisitsPerVisitDuration

4.3 发起请求

例子为:每次访问持续时间的访问次数

json 复制代码
GET http://192.168.10.45:8088/index.php?module=API&method=VisitorInterest.getNumberOfVisitsPerVisitDuration&idSite=1&period=day&date=2023-11-02&token_auth=ca369ba839f4c9c36df034fa1366de3c&format=json

返回参数注释

通过以上步骤,我们就可以使用linux实例来搭建自己的Matomo平台,并进行网站数据分析了。

Matomo不仅可以帮助我们获取网站的基本数据,还可以进行高级分析,如用户行为、转化率、目标跟踪、电子商务等。此外,Matomo还支持多种扩展和集成,如地理位置、社交媒体、搜索引擎优化等。通过Matomo,我们可以更深入地了解我们的网站和用户,从而提升网站的价值和效果。

尾声
感谢小伙伴们的支持吖,祝大家万圣节快乐哦!

相关推荐
小小鱼儿小小林23 分钟前
免费一键自动化申请、续期、部署、监控所有 SSL/TLS 证书,ALLinSSL开源免费的 SSL 证书自动化管理平台
开源·自动化·ssl
三花AI1 小时前
阿里开源 OmniAvatar:音频驱动数字人模型
开源·资讯
王小王-1232 小时前
基于Hadoop的京东厨具商品数据分析及商品价格预测系统的设计与实现
hadoop·数据分析·京东厨具·厨具分析·商品分析
说私域2 小时前
基于开源AI智能客服、AI智能名片与S2B2C商城小程序的微商服务质量提升路径研究
人工智能·小程序·开源
蚂蚁数据AntData2 小时前
从性能优化赛到社区Committer,走进赵宇捷在Apache Fory的成长之路
大数据·开源·apache·数据库架构
阿里云云原生3 小时前
Spring AI Alibaba 游乐场开放!一站式体验AI 应用开发全流程
开源
可观测性用观测云3 小时前
Cloudflare 日志采集和分析最佳实践
数据分析
NocoBase3 小时前
为什么越来越多 Airtable 用户开始尝试 NocoBase?
低代码·开源·资讯
算家计算3 小时前
4 位量化 + FP8 混合精度:ERNIE-4.5-0.3B-Paddle本地部署,重新定义端侧推理效率
人工智能·开源
于顾而言3 小时前
【开源品鉴】FRP源码阅读
后端·网络协议·开源