暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

应用统计埋点神器:Matomo的部署与使用

Sumslack团队 2018-11-07
5393

概述

matomo
的前身是piwik
,是一个强大的网站流量分析工具,提供多种嵌入方式,matomo
通过客户端API支持移动端的应用统计,我可以随时在手机上查看网站访问情况,不管是开发什么项目,都必须了解用户的使用情况,相关的数据采集工作可交由matomo
,在matomo
以图表的形式展现相关采集数据的结果,如下图:

安装

  • 准备一台Linux服务,本文使用Ubuntu;

  • 安装一台WebServer,如Apache,Nginx等;

  • PHP 5.5.9+,官方推荐PHP 7.0+;

  • MySQL 5.5+ 或 MariaDB;

  • 安装PHP扩展:pdo,pdo_mysql;

  • 下载matomo
    最新版;

Ubuntu
为例,执行以下语句:

1$sudo apt-get install php7.2 php7.2-curl php7.2-gd php7.2-cli mysql-server php7.2-mysql php-xml php7.2-mbstring

安装好支撑软件后,将matomo
解压到/var/wwww/html
目录下即可通过:http://IP/matomo 访问,初次会有个安装向导,按步骤一步步安装完后即可使用。

注:

  1. MySQL配置:mysql 5.7以上安装后,密码被存储在/etc/mysql/debian.cnf
    文件中,使用mysql命令登录后,以debian-sys-maint
    用户登录,设置root密码后即可使用;

  2. 下载后matomo.tar.gz
    解压到/var/wwww/html
    目录下即可;

  3. 修改matomo
    安装目录下的config/config.ini.php
    文件:
    [General]
    proxy_client_headers[] = HTTP_X_FORWARDED_FOR
    proxy_host_headers[] = HTTP_X_FORWARDED_HOST
    proxy_uri_header = 1

  4. 如果要访问matomo
    的后台,可通过trusted_hosts
    添加信用名单在config/config.ini.php
    文件中;

  5. 如果matomo
    通过nginx提供对外服务,nginx的配置如下:

1location /matomo/{
2    add_header Referrer-Policy origin;
3    proxy_set_header X-Real-IP $remote_addr;
4    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
5    proxy_set_header Host $http_host;
6    proxy_set_header X-NginX-Proxy true;
7    proxy_pass http://192.168.1.31/matomo/;
8}

使用

通过matomo
进行站点统计,只需要在后台点击设置
图标,在左侧的网站
-> 管理
菜单下添加一个新站点即可(官方翻译名字叫新评价指标),如图:

然后点击“显示跟踪代码”将相应的js代码或img标签放在需要进行站点统计的web页面的之前即可。

跟踪代码支持:

所以理论上,他不只是可以进行站点统计,还可以在任意系统(客户端,移动应用,服务端程序等)中通过这些嵌入方式提供追踪功能!

我们也可以通过它提供的一系列JS API
为网站提供更多追踪指标(理论上任意指标,支持自定义指标):

1var piwik = Piwik.getTracker( "//wstest.idbhost.com/matomo/pwiki.php""2");
2piwik.trackPageView("标题"); //追踪访客访问了什么页面
3piwik.trackEvent(category, action, [name], [value]);//追踪一个自定义事件,比如用户播放了某个视频,听了什么歌,提交了什么订单,把什么加入了购物车等;
4piwik.trackSiteSearch(keyword, [category], [resultsCount]);//追踪站内搜索,用户搜索了什么关键字等;
5//其他的函数详见:https://developer.matomo.org/api-reference/tracking-javascript

Web的站点统计的浏览器兼容情况如下:

 1/*
2 * Browser [In]Compatibility
3 * - minimum required ECMAScript: ECMA-262, edition 3
4 *
5 * Incompatible with these (and earlier) versions of:
6 * - IE4 - try..catch and for..in introduced in IE5
7 * - IE5 - named anonymous functions, array.push, encodeURIComponent, decodeURIComponent, and getElementsByTagName introduced in IE5.5
8 * - Firefox 1.0 and Netscape 8.x - FF1.5 adds array.indexOf, among other things
9 * - Mozilla 1.7 and Netscape 6.x-7.x
10 * - Netscape 4.8
11 * - Opera 6 - Error object (and Presto) introduced in Opera 7
12 * - Opera 7
13 */

首页上可添加面板:

访客分析:

行为分析:

来源分析:


非Web项目的使用

matomo
也可以被使用在任意非Web项目,只需要使用Tracking HTTP Api
即可,不管你使用何种语言,只需要通过Tracking HTTP Api
封装几个函数,即可将用户使用习惯和自定义的埋点数据发往matomo
,以下是具体使用:

访问URL:http://wstest.idbhost.com/matomo/piwik.php
提交方式:GET/POST
参数信息: 

必须的参数:

  • idsite:后台申请的统计网站的ID,整数;

  • rec:跟踪时必须用到的参数,可设置为1


推荐的参数:


  • action_name:跟踪用户行为的名称,可以使用/
    分割,如帮助 / 反馈
    ,表示跟踪用户的帮助菜单下的反馈这个行为;

  • url:当前动作访问的完整URL,如果是移动项目,可以是页面路径,如home/page1

  • _id:访问唯一ID,16位的16进制数:如af344a398df83874

  • rand:随机字符串;

  • apiv:设置为1即可,定义api版本号;


可选参数:


  • urlref:来源地址

  • _cvar:JSON字符串,详见:https://matomo.org/docs/custom-variables/

  • _idvc:访问次数

  • _viewts:上一次访问时间;

  • _idts:第一次访问时间;

  • res:分辨率,如1280x1240;

  • cookie:设置为1表示用户端支持cookie;

  • lang:客户端的语言,如zh-CN等;

  • uid:用户ID

  • ua:HTTP请求头的User-Agent的值;

  • cid:定义访客ID;

其他更多的参数信息详见:https://developer.matomo.org/api-reference/tracking-api

比如如下请求:

1http://wstest.idbhost.com/matomo/piwik.php?_cvar=%7B%221%22%3A%5B%22OS%22,%22iphone%205.0%22%5D,%222%22%3A%5B%22Matomo%20Mobile%20Version%22,%221.6.2%22%5D,%223%22%3A%5B%22Locale%22,%22en%3A%3Aen%22%5D,%224%22%3A%5B%22Num%20Accounts%22,%222%22%5D%7D&action_name=View%20settings&url=http%3A%2F%2Fmobileapp.piwik.org%2Fwindow%2Fsettings%20&idsite=3&rand=351459&h=18&m=13&s=3%20&rec=1&apiv=1&cookie=1&urlref=http%3A%2F%2Fiphone.mobileapp.piwik.org&_id=af344a398df83874%20&_idvc=19&res=320%C3%97480

后台访问信息如下:


总体来说,如果您在项目的开发过程中,需要跟踪应用终端用户的使用情况,那么matomo是一个不错的选择,不管您开发的应用是基于Web的还是移动端的,亦或是客户端的,它都能帮到你!


你可以继续阅读:


ElasticSearch 6的集群部署与使用|“大”中台,“小”前端的架构演变|SQL审核监控平台的设计与实现|云服务推送API中消息中间件的使用 | 云服务平台中推送服务的设计与实现 | 对微服务的理解以及实现一套微服务对外发布API管理平台 | 项目开发中常用的设计模式整理 | 异构语言调用平台的设计与实现 | 大话正则表达式 | 云API平台的设计与实现 | 个税改了,工资少了,不要慌!文末附计算器



关注我们的公众号 

长按识别二维码关注我们


文章转载自Sumslack团队,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论