InfraNestInfraNest
Monitore & Checks

Einen Cronjob oder ein Skript überwachen

Die meisten Checks greifen aktiv auf etwas von dir zu. Ein Heartbeat-Monitor funktioniert umgekehrt: Dein Backup-Skript, Cronjob oder geplanter Task meldet sich bei…

Diese Anleitung richtet sich an alle, die wissen möchten, ob ein Backup-Skript, Cronjob oder geplanter Task unbemerkt aufhört zu laufen – statt eines Monitors, der etwas von dir prüft, wartet dieser darauf, dass sich dein Job meldet.

Überblick

  • Ein Heartbeat-Monitor funktioniert umgekehrt: Dein Skript ruft InfraNest auf, wenn es fertig ist, statt dass InfraNest es aufruft.
  • Trifft die Meldung nicht rechtzeitig ein, benachrichtigt dich InfraNest.
  • Es ist die beste Methode, um einen Job zu erfassen, der aufhört zu laufen, ohne irgendwo einen Fehler auszulösen, den du bemerken würdest.

Einrichtung

  1. Gehe zu Monitoring und wähle add a monitor.
  2. Wähle Heartbeat / Cron monitor als Typ.
Einen Cronjob oder ein Skript überwachen
  1. Gib ihm einen Namen, den du in einer Benachrichtigung wiedererkennst – „Nightly database backup“ ist besser als „job 1“.
  2. Lege das check interval fest – wie oft der Job laufen soll.
  3. Lege eine grace period fest – zusätzliche Zeit, die vergehen darf, bevor der Job als verspätet gilt. Ein Backup, das normalerweise vier Minuten dauert, aber gelegentlich acht, braucht eine Kulanzzeit, die deutlich länger ist als diese Überschreitung.
  4. Wähle create monitor.

Für diesen Typ gibst du keine URL ein – InfraNest erstellt beim Speichern automatisch eine für dich.

Deinen Job sich melden lassen

  1. Öffne den Monitor, um seine Ping-URL sowie einen fertigen, einfügbaren Einzeiler zu sehen.
  2. Füge diese Zeile am Ende deines Skripts oder Cronjobs ein, damit sie nur ausgeführt wird, wenn der Job tatsächlich erfolgreich war:
0 3 * * *  /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 https://your-infranest-url/api/heartbeat/your-uuid

Das && ist entscheidend: Es bedeutet, dass die Meldung nur erfolgt, wenn das Backup selbst erfolgreich beendet wurde. Ein fehlgeschlagener Job bleibt dann stumm, und genau diese Stille löst die Benachrichtigung aus.

TipVerwende die Kopieren-Schaltfläche, statt die URL neu einzutippen – die darin enthaltene Kennung ist eindeutig für diesen Monitor.

Aus einem GitHub-Actions-Workflow

Wenn dein Backup, deine Erneuerung oder dein nächtlicher Sync als geplanter GitHub-Actions-Workflow läuft, funktioniert derselbe Monitor – der Workflow meldet sich als letzter Schritt.

  1. Öffne in deinem Repository auf GitHub Settings → Secrets and variables → Actions und füge ein Repository-Secret namens HEARTBEAT_URL mit der Ping-URL als Wert hinzu.
  2. Füge diesen Schritt am Ende des Jobs hinzu:
      - name: Check in with InfraNest
        run: curl -fsS -m 10 --retry 3 "$HEARTBEAT_URL"
        env:
          HEARTBEAT_URL: ${{ secrets.HEARTBEAT_URL }}

GitHub überspringt die restlichen Schritte, sobald einer fehlschlägt, sodass die Meldung nur erfolgt, wenn alles davor erfolgreich war – derselbe Effekt wie das && oben.

Das erfasst außerdem etwas, worüber GitHub dich nicht deutlich informiert: In einem öffentlichen Repository schaltet GitHub geplante Workflows nach 60 Tagen ohne jegliche Aktivität im Repository ab. Der Workflow läuft dann nicht mehr, nichts schlägt fehl, und die fehlende Meldung ist es, die die Benachrichtigung auslöst.

Was als Nächstes passiert

  • Jede Meldung markiert den Monitor als Aktiv und speichert die Zeit als letzten Ping.
  • Ein neu erstellter Monitor bleibt ausstehend, bis sein erstes Zeitfenster abgelaufen ist, sodass du Zeit hast, die Meldung einzurichten, ohne deswegen benachrichtigt zu werden.
  • Trifft innerhalb des Intervalls plus der Kulanzzeit nichts ein, geht der Monitor auf Ausfall und eröffnet einen Vorfall, sodass deine üblichen Benachrichtigungsziele ausgelöst werden.
  • Die nächste Meldung löst den Vorfall auf und benachrichtigt dich, dass alles wieder funktioniert – du musst ihn nicht manuell schließen.

NoteDas Pausieren eines Heartbeat-Monitors ist unbedenklich: Die Ping-URL antwortet weiterhin normal, sodass ein Job, der sie weiterhin aufruft, keine Fehler meldet. InfraNest beobachtet den Job einfach nicht mehr, bis du ihn fortsetzt.

Tipps

  • GitHub kann geplante Workflows bei hoher Auslastung um mehrere Minuten verspätet starten. Gib dem Monitor eine Kulanzzeit, die das zusätzlich zur eigentlichen Laufzeit des Jobs berücksichtigt.
  • Behandle die Ping-URL wie ein Geheimnis. Wer sie kennt, kann deinen Job als gesund melden – was einen echten Fehler verschleiern würde.

Fehlerbehebung

  • No ping received yet am Monitor bedeutet, dass InfraNest noch gar nichts vom Job gehört hat. Führe die curl-Zeile manuell auf derselben Maschine aus: Wird der Monitor dadurch grün, liegt das Problem in deinem Skript, nicht hier.
  • Kann die Maschine das Internet nicht ausgehend erreichen, kann die Meldung nicht ankommen – erlaube ausgehendes HTTPS zu InfraNest.
  • Ein Monitor, der jede Nacht zur gleichen Zeit Alarm schlägt, hat meist eine Kulanzzeit, die kürzer ist als die tatsächliche Worst-Case-Laufzeit des Jobs.

Verwandte Artikel

In Sekunden startklar

Bring deine gesamte Infrastruktur in ein modernes Dashboard.

Kostenloser Plan · Keine Kreditkarte nötig · In Minuten eingerichtet