Matomo und cronjobs für Anfänger

Hallo,

das ist mein erster Beitrag hier und ich hoffe, ich frage nicht allzu doof, denn ich komme nicht weiter. Ich habe matomo auf meinem Managed Server installiert und mit einigen externen Seiten verknüpft. Managed Server deshalb, weil ich mit dem Terminal nicht wirklich gut auskenne.

Jetzt würde ich gerne einen cronjob einrichten, damit matomo nicht bei jedem Aufruf alles lahmlegt. Ich komme auf den Server und kann auch “crontab -e” starten - dann hört jedoch mein Wissen auf. Was genau gebe ich da nun ein, wie finde ich die richtigen Pfade heraus und wie kann ich das Ganze dann testen?

Vielen Dank für Eure Hilfestellungen im Voraus!

Hallo,

willkommen im Forum :slight_smile:

Eine gute Einführung in cronjobs findest du z.B. hier: https://www.ionos.de/digitalguide/hosting/hosting-technik/cronjob/

Ich vermute, du möchtest einen Archiv-Cronjob regelmäßig ausführen. Bevor du den Befehl im Cronjob ablegst, kannst du ihn direkt auf Konsole ausführen. Dabei kannst du die Parameter testen und wenn alles läuft, den Befehl als Cronjob übernehmen.

Eine Übersicht, welche Befehle Matomo auf Konsole anbietet, bekommst du, indem du den folgenden Befehl ausführst:

/usr/bin/php /pfad/zu/matomo_installation/console

Das ist eine lange Liste. Der interessante Befehl ist dabei “core:archive”. Du erhälst zu diesem speziellen Befehl ein Übersicht über die möglichen Optionen:

/usr/bin/php /pfad/zu/matomo_installation/console core:archive --help

Wenn du den Befehl ausführst ohne “–help” wird die Archivierung ausgeführt:

/usr/bin/php /pfad/zu/matomo_installation/console core:archive

Du erhälst das Ergebnis dabei direkt angezeigt. Wenn du nun einen Cronjob einrichtest, ist es sinnvoll, die Ausgabe in eine Datei umzuleiten:

/usr/bin/php /pfad/zu/matomo_installation/console core:archive > /tmp/matomo-archive.log

Die Ausgabe wird nun in die Datei /tmp/matomo-archive.log geschrieben. Du kannst später auch nach /var/log/ schreiben, dort liegen alle anderen Logdateien des Systems.

Mit dem “>”-Zeichen wird beim erneuten Ausführen eine eventuell bestehende Datei überschrieben. Möchtest du die Ausgabe an eine Datei anhängen nutzt du das “>>”-Zeichen. Hier musst du aber eventuell aufpassen, dass die Datei nicht zu groß wird, sie muss als eventuell rotiert werden. Persönlich überschreibe ich jedes Mal die Logdatei, da mir die letzte Ausgabe genügt.

So, und nun kannst du den Befehl in die Crontab übernehmen, es gibt dabei zwei Möglichkeiten:

a) Du gibst “crontab -e” als der Benutzer ein, unter dem der Befehl ausgeführt werden soll. Je nachdem, was in deinem System eingestellt ist, geht der entsprechende Editor auf. Du definierst dort den Cronjob und speicherst ihn, z.B.

5 * * * *  /usr/bin/php /pfad/zu/matomo_installation/console core:archive > /tmp/matomo-archive.log

Das bedeutet, dass jede Stunde zur Minute 5 der angegebene Befehl ausgeführt wird.

b) Du gehst bei Debian-basierten Systemen in das Verzeichnis /etc/cron.d/ und erstellst eine neue Datei, z.B. “matomo-archive”. Dort kann dann z.B. stehen:

5 * * * *  www-data /usr/bin/php /pfad/zu/matomo_installation/console core:archive > /tmp/matomo-archive.log

Der Unterschied von b) zu a) ist, dass hier der Benutzer “www-data” angegeben ist, unter dem der Befehl ausgeführt wird. Ich empfehle, den Befehl nicht als “root” auszuführen.

Sobald der Cronjob einmal ausgeführt wurde, ist die Logdatei vorhanden und du kannst sie dir anschauen.