Matomo是支持以定时任务的方式去完成统计数据的归档,并输出报告。
这里主要总结下,如何通过Linux cron去完成Matomo的归档。本文以CentOS7, Matomo 3.13.3 为例。
首先,确保matomo平台的后台配置
参考官方文档(挺详细的):https://matomo.org/docs/setup-auto-archiving/#help-for-corearchive-command
CentOS7中自带了crontab,如果没有 yum install crontabs
安装即可。/sbin/service crond start
启动crontab任务。
crontab主要有两种方式可以去自定义用户的定时任务。
1、crontab -e的方式crontab -e
会编辑当前用户的定时任务,如果当前root,则编辑root的定时任务。所以一般配合-u参数显示指定用户,crontab -u apache -e
即可编辑apache用户的定时任务。如下图
/sbin/service crond reload
刷新配置即可。
2、cron.d的方式
第1种方式在多用户定时任务时不利于管理,所以linux提供了额外的cron.d的方式。cron.d 目录下包含了定时任务配置文件。
其中matomo-archive就是我自定义的归档计划任务。当编写完成后,之后Linux每次都会去读取cron.d目录下的文件,执行其中的定时任务。
关于crontab执行的日志,在 /var/log 目录下可以看到(会按日期进行切割)
crontab的内容可参考:https://www.cnblogs.com/ftl1012/p/crontab.html
下面这里总结下,具体matomo定时任务的脚本内容。
上面的官方文档中已经很详细了,
MAILTO="youremail@example.com" 5 * * * * www-data /usr/bin/php /path/to/matomo/console core:archive --url=http://example.org/matomo/ > /home/example/matomo-archive.log
配置参数:
- MAILTO =” youremail@example.com”如果脚本执行过程中出现错误,脚本输出和错误消息将发送到youremail@example.com地址。
- 5 * * * * 为cron表达式写法,具体可另行了解cron表达式,这里为每天的每小时的第5分钟执行一次任务
- www-data是将执行cron作业的用户,通常应是您的Web服务器用户。有时是“ apache”。这个可以看你的matomo目录的用户权限,ll即可。
- / usr / bin / php 是PHP可执行文件的路径。不清楚的话,
which php
即可。
- / path / to / matomo / console是服务器上Matomo安装目录中console的路径。如你的matomo安装目录为 /var/www/matomo/,那么在目录下,存在一个“console”的php执行文件。
- core:archive 无需改变
- –url=http://example.org/matomo/ 指定你搭建完成后可访问的matomo地址。
- > /home/example/matomo-archive.log 是脚本将写入输出的路径。如果您不想记录最后的Matomo cron输出文本,则可以用/ dev / null替换此路径。脚本输出包含有用的信息,例如,归档了哪些网站,处理每个日期和网站所需的时间等。此日志文件应写在Web服务器之外的位置,以便人们无法通过其查看浏览器(因为此日志文件将包含有关Matomo安装的一些敏感信息)。您也可以替换>通过>>以脚本输出追加到日志文件,而不是覆盖在每次运行时(但我们建议你旋转这个日志文件或删除它如:每周一次)。
- 2> /home/example/matomo-archive-errors.log 是脚本将在其中写入错误消息的可选路径。如果您在cron标签中省略了此选项,那么错误将通过电子邮件发送到您的MAILTO地址。如果将其写在crontab中,则错误将记录在此指定的错误日志文件中。该日志文件应写在Web服务器之外的位置,以使人们无法通过其浏览器查看它(因为该日志文件将包含有关Matomo安装的一些敏感信息)。
注意:最后两点日志均配置的结果如:5 * * * * www-data /usr/bin/php /path/to/matomo/console core:archive --url=http://example.org/matomo/ > /home/example/matomo-archive.log >
/home/example/matomo-archive-errors.log
最后两点指定的日志路径,一定要保证有权限读写!
根据自己的服务器情况,配置完成后,可以通过shell测试一下,是否无误。
su www-data -s /bin/bash -c "/usr/bin/php /path/to/matomo/console core:archive --url=http://example.org/matomo/"
该测试命令不包含指定邮箱、cron表达式以及执行用户部分。
正常的话,输入命令,回车执行完后,在终端是看不到效果的,你可以在你的matomo平台上的“报表面板”看到归档的信息,
或者“系统检查”中也能看到。
在无误的情况下,将整个完成脚本(从 MAILTO 到最后指定的 log)写入到crontab配置文件中,如果采用的第1种方式,则crontab -u “归档计划任务执行用户” -e
进入编辑界面,将脚本copy进去即可。如果采用第2种方式,则到 /etc/cron.d 目录下,编辑你新增的定时任务文件,如“matomo-archive”,将脚本内容copy进去即可。确保crontab启动后,在每次任务执行时,观察 /var/log 下的cron日志会看到执行的脚本。
发表评论