概述
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 访问,初次会有个安装向导,按步骤一步步安装完后即可使用。
注:
MySQL配置:mysql 5.7以上安装后,密码被存储在
/etc/mysql/debian.cnf
文件中,使用mysql命令登录后,以debian-sys-maint
用户登录,设置root密码后即可使用;下载后
matomo.tar.gz
解压到/var/wwww/html
目录下即可;修改
matomo
安装目录下的config/config.ini.php
文件:
[General]
proxy_client_headers[] = HTTP_X_FORWARDED_FOR
proxy_host_headers[] = HTTP_X_FORWARDED_HOST
proxy_uri_header = 1如果要访问
matomo
的后台,可通过trusted_hosts
添加信用名单在config/config.ini.php
文件中;如果
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平台的设计与实现 | 个税改了,工资少了,不要慌!文末附计算器
关注我们的公众号
长按识别二维码关注我们