all-inkl.com | Sinnvolle Benachrichtigungen bei Cronjobs
Email Filterwort Bei den Cronjob Benachrichtigungen

all-inkl.com | Sinnvolle Benachrichtigungen bei Cronjobs

all-inkl.com hat seit kurzem endlich eine sinnvolle Benachrichtigungsfunktion für die (erfolgreiche) Ausführung der Cronjobs eingebaut. Ich zeige am Beispiel einer automatisierten Archivierung der Berichte des Webanalysetools Piwik, wie man die Benachrichtigung nur im Falle eines Fehlers aktiviert.

Cronjob

Ein Cronjob ist eine automatisierte immer wiederkehrende Aufgabe, die von einem Programm (Daemon) im Hintergrund, in diesem Falle auf einem Server, ausgeführt wird. Beispiele: Tägliche BackUps, Archivierungsaufgaben, das Löschen von Logdateien usw.
Verwaltet werden die verschiedenen Cronjobs in einer zentralen Tabelle, der Crontab. Diese wird am einfachsten über einen Terminalzugang angelegt und bearbeitet.

Im Shared-Hosting Bereich wird der aus Sicherheitsgründen meist gesperrte Terminalzugriff durch die Möglichkeit ersetzt, über das jeweils genutzte Verwaltungspanel wie z. B. cPanel (Cron-Aufgaben) oder Plesk (Geplante Aufgaben), entsprechende Vorgänge anzulegen. Die verwendete Syntax weicht häufig von dem ursprünglichen Unix-Crontab Format ab, wird aber meistens in den entsprechenden Hilfeseiten erläutert.

Cronjobs bei all-inkl.com

Bei all-inkl.com sind ab dem Tarif „Privat Plus“ 25 Cronjobs im monatlichen Preis enthalten, die Verwaltung erfolgt über das KAS (Kunden-Administrations-System). Die Cronjobs lassen sich dort ziemlich leicht anlegen und verwalten. So weit, so gut.
Bis vor kurzem gab es allerdings einen Punkt, der mich immer wieder geärgert hat.
Eine sinnvolle Überwachung der Cronjobs war bisher nicht möglich. Man konnte auswählen, eine entsprechende Mailbenachrichtigung entweder ein- oder auszuschalten. Wenn man nun Cronjobs angelegt hat, die stündlich ausgeführt werden bekommt man im Extremfall 25 Mails pro Stunde, die einem die Ausgabe des entsprechenden Skriptes mitteilen. Falls der Cronjob nicht ausgeführt werden kann, kommt auch eine Mail, die dann allerdings nur eine Fehlermeldung enthält.
Diese Mails müssen dann auch noch jedesmal geöffnet werden, da die in beiden Fällen identische Betreffzeile es nicht zulässt, mit einem Blick zwischen Erfolg oder Fehlermeldung zu unterscheiden. Es gab also bis jetzt nur die Wahl zwischen dem Einschalten der Benachrichtigung durch die Angabe einer Mailadresse in dem entsprechenden Feld mit der Folge einer evtl.  Mailflut, oder dem Ausschalten mit der Gefahr, über eine Fehlfunktion nicht zeitnah informiert zu werden.

Benachrichtigung nur im Falle eines Fehlers

Das “ entweder An oder Aus“ hat sich zum Glück endlich geändert. Seit einiger Zeit hat all-inkl.com eine Option in die Cronjobverwaltung im KAS implementiert, die es erlaubt mittels eines Filterwortes das Versenden einer Benachrichtigungsmail zu steuern. Also kein simpler Ein-/Ausschalter wie bei Erfolg = keine Mail, Fehler = Mail versenden, sondern man muss sich zu mindestens einmalig die Ausgabe des Cronjobs anschauen um diese Filterfunktion korrekt zu konfigurieren.

Hier erklärt am Beispiel der Piwik Archivierung

Ich habe hier als Beispiel einmal das Webanalysetool Piwik genommen. Bei einem höheren Benutzeraufkommen empfiehlt es sich, die Verarbeitung der Daten der Besucher per Cronjob zeitgesteuert im Hintergrund durchführen zu lassen. Im Screenshot ist die Ausführung eines Cronjobs alle 5 Minuten nach der vollen Stunde zu sehen.

So sieht der Menüpunkt „Cronjobs bearbeiten“ im KAS bei all-inkl.com aus:

Cronjobs anlegen und bearbeiten bei all-inkl.com
Eigentlich ganz einfach: Cronjobs anlegen und bearbeiten bei all-inkl.com

 

Die Zeile, die bei „Pfad“ einzutragen ist, ist der Pfad zu der Datei archive.php. Angehängt wird dann noch ein Autorisierungstoken. Beispiel: „piwik/misc/cron/archive.php?token_auth=xxx“

Wer Piwik nicht über https:// aufruft, was allerdings sehr zu empfehlen ist, lässt das Protokoll bei http:// stehen.

Wenn Piwik auf einer Subdomain wie z. B. „http://piwik.meine-domain.com“ läuft, lauten die richtigen Einträge:

Protokoll: „http://“ und Pfad: „piwik.meine-domain.com/misc/cron/archive.php?token_auth=xxx“

Den entsprechenden Token findet ihr in eurem Piwik unter dem Punkt API:

Piwik Token
Piwik Token

 

Kurzer Test, ob alles funktioniert

Zum Testen gebt ihr die URL (Pfad) von oben in die Adressleiste des Browsers ein. Nach einigen Sekunden gibt der Browser euch eine Ergebnisseite aus. Bei erfolgreicher Ausführung des Cron Jobs sieht die Browserausgabe oder der Text der Bestätigungsmail ungefähr so aus:

Browserausgabe bei erfolgreichem Cronjob
Der Cronjob wurde ausgeführt

 

Im Falle eines Fehlers sieht man z. b. dieses Ergebnis:

Zugriffsfehler bei Piwik Archivierungs-Cronjob
Der Cron Job wurde nicht ausgeführt

 

Fehler in Piwik?

Das Beispiel Piwik Archivierungsfunktion habe ich jetzt nicht zufällig ausgewählt. Es gibt eine Besonderheit beim Einsatz von Piwik, die offensichtlich nur unter bestimmten Bedingungen oder bei bestimmten Hostern auftritt. Bei der automatischen wöchentlichen oder monatlichen Aktualisierung der GEO-IP Datenbanken wird zeitgleich mit dem Einspielen der neuen Datenbank eine .htaccess Datei angelegt, die sämtliche Zugriffe auf den Ordner /misc blockiert. Siehe z. B. diesen Thread im Piwik Forum. Damit scheitert auch die Ausführung der Archivierung per Cron-job.

Die Benachrichtigungen

Sobald man also in den erweiterten Einstellungen eine Mailadresse einträgt, erhält man bei jeder Ausführung des Cronjobs (Erfolg und Fehler) eine Email mit der Ausgabe des entsprechenden Skriptes als Inhalt, s. o.

Leider sind die Absender- und Betreffzeile der jeweiligen Mails identisch. Ich kann also bei einem schnellen Blick in mein Mailprogramm nicht erkennen, um welche Art der Benachrichtigung es sich handelt. Das ist auf Dauer sehr nervig. Ich habe mir angewöhnt, meine Mail  nach dem Inhalt der Betreffzeilen zu scannen und bin auch ziemlich schnell mit der „ENTF“ taste dabei – da stören diese Benachrichtigungsmails einfach meine Arbeitsabläufe, da ich jede Mail öffnen muss, um reinzuschauen.

Ich möchte also nur im Falle einer Nichtausführung der Cronjobs benachrichtigt werden, um dann entsprechend einzugreifen.

Lösung:

Ich muss mir nur ein Wort aussuchen, welches ziemlich am Ende in der Ausgabe eines erfolgreichen Durchlaufes des Cronjobs enthalten ist und sicherstellen, dass dieses Wort im Text einer evtl. Fehlermeldung nicht vorkommt.

Ich habe mir das Wort „Done“ von „Done archiving!“ ausgesucht (Leerzeichen und Sonderzeichen sind hier nicht erlaubt). Das wird noch in der Zeile „E-Mail-Filter“ eingetragen – und fertig.

Email Filterwort Bei den Cronjob Benachrichtigungen
Email Filterwort Bei den Cronjob Benachrichtigungen

 

Da die Bedingung des Filters lautet: „Wenn dieses Filterwort in der Skriptausgabe vorkommt, erhalten Sie keine Email“, ist sichergestellt, das nur bei einer (wie auch immer gearteten) nicht korrekten Ausführung des Cronjobs eine Benachrichtigung verschickt wird.

 

Menü schließen
Panel schließen