Gibt es gute Techniken zum Überwachen von Cron-Tasks in einem Cluster?
Wir fangen an, cron zu verwenden, um täglich Aufgaben zu starten. Einige Ideen zum Auschecken von Informationen:
- Fügen Sie eine spezielle Anwendungsbehandlung hinzu, die Informationen an einem "netzwerkfähigen" Ort wie einer Datenbank protokolliert
- Erstellen Sie ein Protokolldateisystem, das das Cron-Protokoll (zusammen mit anderen möglichen Protokolldateien) regelmäßig an einen zentralen Punkt zum Verarbeiten / Abfragen überträgt.
Ich frage mich, ob es den Leuten gelungen ist, Dinge für cron im Vergleich zu anderen Dingen separat zu erledigen, oder ob die Aufgaben vollständig in einen anderen Ansatz integriert wurden. Ich neige zu # 2, aber ich würde gerne wissen, was erfahrenere Leute ausprobieren könnten.
monitoring
cron
Tristan Juricek
quelle
quelle
Antworten:
Neben den anderen Antworten:
Wir verwenden die erste Option , um Nagios ( Icinga ) die Überprüfung zu erleichtern , z. B. ob der letzte geschriebene Zeitstempel älter als n Stunden ist (plus der von Ihnen benötigten Logik) - wir wissen, dass ein Fehler aufgetreten ist.
quelle
Mein gemeinsamer Ansatz ist also:
quelle
/dev/null
um zumindest|| echo "service $service is FUBAR"
die Befehlszeile zu ergänzen ...Zusätzlich zum oben genannten:
quelle
Es gibt einige Techniken, mit denen Sie Cronjobs überwachen können.
So erhalten Sie Benachrichtigungen über Cronjob-Fehler:
Das System, das Sie für die Protokollierung von Informationen in einem "netzwerkfähigen" Ort vorschlagen, klingt wie Syslog . syslog bietet eine einfache Methode zum Erstellen von Protokollen und verwaltet normalerweise Dateien wie / var / log / messages. Sie können grundlegende Anpassungen vornehmen, z. B. auswählen, welche Dateien die Protokollnachrichten erhalten.
Syslog kann in einem netzwerkfähigen Modus gestartet werden. Sie können es beispielsweise so konfigurieren, dass sich ein Slave bei einem Master anmelden kann:
Für eine Red Hat-basierte Distribution lautet eine Beispielkonfiguration wie folgt:
(Die erste Konfigurationszeile leitet local1. * -Protokollnachrichten an @ 192.168.1.3 ("master") weiter. Das Flag -r der zweiten SYSLOGD_OPIONS-Zeile aktiviert die Netzwerkunterstützung. Zuletzt leitet die dritte Konfigurationszeile local1. * -Nachrichten an "master" weiter. in eine Datei).
Der Syslog-Ansatz ist besser, um nur Fehler / Informationen zu protokollieren. Protokolldateien sind weniger sichtbar als E-Mails, sodass Sie die Protokolle wahrscheinlich erst dann anzeigen, wenn ein Fehler aufgetreten ist.
Wenn Sie sich für den Syslog-Stil entscheiden, sollten Sie auch syslog-ng: http://freshmeat.net/projects/syslog-ng/ in Betracht ziehen .
Natürlich können Sie das Beste aus beiden Techniken herausholen, indem Sie beide verwenden. Zum Beispiel das Sysloggen von Fehlern und Erfolgen und nur das Versenden von E-Mails bei Fehlern.
quelle
Ich habe eine ähnliche Antwort auf eine Frage zu StackOverflow gepostet ( /programming/21025495/system-for-monitoring-cron-jobs-and-automated-tasks )
Cronitor ( https://cronitor.io ) war ein Tool, das ich genau für diesen Zweck gebaut habe. Es läuft im Grunde genommen darauf hinaus, ein Tracking-Beacon zu sein, das http-Anforderungen als Pings verwendet.
Zu den Anforderungen, die das OP in seinem Kommentar erwähnt, gehört es jedoch, informiert zu werden, wenn die Ausführung eines Auftrags zu lange dauert.
Ich hatte das gleiche Bedürfnis und stellte fest, dass ähnliche Tools diese Art der Überwachung nicht einfach unterstützen. Cronitor löst dieses Problem, indem Sie optional ein Start- und ein Endereignis auslösen können, um die Dauer zu verfolgen.
Die Verfolgung der Dauer war ein Muss für mich, da ich einen Cronjob hatte, der stündlich geplant war, aber mit der Zeit mehr als eine Stunde in Anspruch nahm. Ich hoffe, Sie finden es nützlich!
quelle
Zum Zeitpunkt, als ich das schreibe, befindet es sich noch in einer ziemlich intensiven Entwicklung, aber ich würde empfehlen, einen Blick auf https://github.com/jamesrwhite/minicron zu werfen . Es wurde entwickelt, um die von Ihnen beschriebenen Probleme zu lösen. Mit einer geringfügigen Änderung des von Ihnen ausgeführten Befehls kann er den Ausgabe- und Beendigungsstatus von Jobs aufzeichnen und diese Daten in Echtzeit an einen zentralen Server zurücksenden und Benachrichtigungen per E-Mail, SMS und PagerDuty senden, wenn ein Job fehlschlägt (Beendigungsstatus> 0). oder wird nicht ausgeführt, wenn es sollte.
Haftungsausschluss: Ich bin der Entwickler, der daran arbeitet.
quelle
Dies sieht aus wie ein klassischer Anwendungsfall für AlertGrid .
Es ist keine Installation erforderlich. Alles, was Sie tun müssen, um die Vorteile dieses Tools zu nutzen, ist Folgendes:
execution_time
!Wenn my_job nicht innerhalb von X Minuten geantwortet hat (in Ihrem Fall Stunden) -> senden Sie eine SMS an den Administrator
oder
if execution_time> 60 seconds -> E-Mail an interessierte Personen senden
Eigentlich ist das alles. Sie können Benachrichtigungsregeln mit einem schönen visuellen Editor verwalten. Sie müssen den Quellcode oder einige Konfigurationsdateien nicht ändern, wenn sich etwas ändert. Es handelt sich um eine zentralisierte Lösung, mit der Sie Regeln von einer zentralen Stelle aus verwalten können.
Hoffe das hilft jemandem. Es gibt ein kostenloses Konto, mit dem Sie AlertGrid bei Interesse testen und verwenden können. Ich bin eines der AlertGrid-Teammitglieder. Bei Fragen stehe ich Ihnen gerne zur Verfügung.
quelle
Ihre Cron-Jobs werden bereits über Syslog protokolliert. Diese Daten können mit syslogd, einem weiteren Standarddienst, an einen zentralen Server gesendet werden.
http://www.debuntu.org/how-to-remote-syslog-logging-on-debian-and-ubuntu/ enthält Details zur Einrichtung.
quelle
ich benutze http://cronrat.com, füge einfach && curl "... your cronrat url" zu deinen Cron Jobs hinzu. Die beste Funktion, die ich mag, ist, dass Sie nichts einrichten müssen, nachdem Sie das erste Konto erstellt haben. Jede Warnung ist in dem Moment aktiv, in dem Sie sie verwenden. Daher kann ich alle automatisierten Tools verwenden, um meine Jobs zu starten, die es noch nicht gibt, im Gegensatz zu einigen Services, bei denen ich zuerst einen Job einrichten muss.
quelle
Ich habe Power Cron nach diesen genauen Anforderungen erstellt. Ich brauchte eine zentrale Sicht auf meine Cron-Jobs und eine Vorstellung von der Abhängigkeit zwischen den Jobs verschiedener Cluster-Mitglieder.
Ich brauchte außerdem mehr Informationen als ich in den Protokollen finden konnte, und fügte Jobprofile hinzu.
quelle
Dafür haben wir PushMon ( http://www.pushmon.com) erstellt . Angenommen, Ihr täglicher Job wird um 3 Uhr morgens ausgeführt und endet normalerweise um 4 Uhr morgens. Sie können einen PushMon-Zeitplan von "jeden Tag bis 4:00 Uhr" einrichten. Oder ein etwas weiter fortgeschrittener Zeitplan wie "jeden Tag bis 4:00 Uhr in einer Stunde". Alles, was Sie tun müssen, ist, die PushMon-URL bei jeder Ausführung Ihres Jobs zu "pingen", und Sie werden über fehlende Pings informiert. Wenn Sie sicher sind, dass ein Fehler aufgetreten ist, z. B. wenn Sie eine Ausnahmebedingung abfangen, die Sie nicht behandeln können, können Sie die Warnfunktion auf Anforderung verwenden.
quelle
Gesundheitschecks ( https://github.com/healthchecks/healthchecks/ ) ist ein Service & Dashboard, das für die Überwachung von Cron-Jobs entwickelt wurde. Es wird in der Produktion verwendet, wird gepflegt und akzeptiert Code-Beiträge.
Es funktioniert ähnlich wie Cronitor, Dead Man's Snitch und Friends: Sie richten Ihren Cron-Job so ein, dass eine HTTP / HTTPS-Anforderung an eine spezielle, eindeutige URL gesendet wird, bevor diese beendet wird. Healthchecks empfängt und protokolliert diese Pings. Es wird ständig überprüft, ob die Pings in den erwarteten Intervallen eintreffen. Wenn ein Problem erkannt wird, erhalten Sie eine Benachrichtigung. Unterstützte Benachrichtigungsmethoden sind E-Mail, Webhooks, Slack, Telegramm, Zwietracht, SMS, Pushover, Pusbullet, PagerDuty, PagerTree, HipChat, VictorOps, OpsGenie.
Sie können dies alles selbst einrichten und hosten, aber wie bei jedem Webdienst ist es mit einigem Aufwand verbunden, den Domain-Namen und das Zertifikat einzurichten, den HTTP-Reverse-Proxy zu konfigurieren, Datenbank-Backups einzurichten usw. Ein relativ einfacher Weg, dies zu erreichen Laufen ist diese Heroku-angepasste Version zu verwenden: https://github.com/iphoting/healthchecks . Ich kenne Leute, die dieses Projekt selbst leiten und Hunderte von Diensten überwachen.
Haftungsausschluss: Ich bin der Autor und betreibe Healthchecks auch als gehosteten Dienst unter https://healthchecks.io
quelle