How do I setup Auto-Archiving script to run using systemd on a Linux system instead of cron?
Setting up Auto-Archiving in Matomo is very important to ensure that your reports are pre-processed automatically and for your Matomo reports to load very fast. Usually you setup the auto archiving to be executed by a cron on Linux (or a scheduled task on Windows). But on Linux systems you can also setup the Matomo auto-archiving using systemd
by following the steps below:
Steps to setup auto-archiving with systemd
1. Setup a ‘service’ file which tells systemd
what command to run
On most distributions that use systemd, the service and timer files are kept in /etc/systemd/system/
(if not, check the documentation of your specific flavour of Linux).
In this folder, let’s create a matomo.service
file with the following content:
[Unit]
Description=Matomo Auto-Archiving
[Service]
Type=oneshot
ExecStart=/usr/bin/php /path/to/matomo/console core:archive --url=https://example.com/matomo/
2. Setup a ‘timer’ file, which tells systemd
when to run the command
Then in the same folder, let’s create a matomo.timer
file with the following content:
[Unit]
Description=Hourly run of Matomo Auto-Archiving
[Timer]
OnCalendar=*:05:00
RandomizedDelaySec=10m
Persistent=true
[Install]
WantedBy=timers.target
3. start the timer and make it automatically restart on system reboot
Run the following 2 commands:
$ sudo systemctl start matomo.timer
$ sudo systemctl enable matomo.timer
A note on auto-archiving logs and systemd
Using systemd
means that the Matomo archiving command output is logged with journald
. This means you can use the full range of journalctl
commands to review the messages.
However, you also need to keep in mind that systemd
does not allow for email based log alerts as standard. Therefore, if you do you use this method instead of cron you may want to set up an external logging tool to monitor systemd
logs and send alerts from there to avoid gaps in your archiving if anything goes wrong.