开源的网站数据分析统计平台——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,我们可以更深入地了解我们的网站和用户,从而提升网站的价值和效果。

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

相关推荐
wxl7812278 小时前
如何使用本地大模型做数据分析
python·数据挖掘·数据分析·代码解释器
小尤笔记9 小时前
利用Python编写简单登录系统
开发语言·python·数据分析·python基础
FreedomLeo19 小时前
Python数据分析NumPy和pandas(四十、Python 中的建模库statsmodels 和 scikit-learn)
python·机器学习·数据分析·scikit-learn·statsmodels·numpy和pandas
lsjweiyi11 小时前
极简AI工具箱网站开源啦!
opencv·开源·微信支付·支付宝支付·百度ai·极简ai工具箱·ai图像处理
穆友航11 小时前
PDF内容提取,MinerU使用
数据分析·pdf
开源社12 小时前
一场开源视角的AI会议即将在南京举办
人工智能·开源
FreeIPCC12 小时前
谈一下开源生态对 AI人工智能大模型的促进作用
大数据·人工智能·机器人·开源
海害嗨12 小时前
阿里巴巴官方「SpringCloudAlibaba全彩学习手册」限时开源!
学习·开源
生命是有光的12 小时前
【开源风云】从若依系列脚手架汲取编程之道(八)
开源
EterNity_TiMe_12 小时前
【论文复现】神经网络的公式推导与代码实现
人工智能·python·深度学习·神经网络·数据分析·特征分析