Umgang mit Admin-Benachrichtigungen im Fehlerfall einer Schnittstelle

Die leider wieder auftretenden Ausfälle beim Anbieter KatSys Cloud haben heute Nacht gezeigt, dass wir am Benachrichtigungs-Konzept nochmal ran müssen:

  • Die Verbindung zu KatSys ist für mehrere Stunden gestört
  • ALARMiator prüft alle paar Sekunden einen neuen Verbindungsaufbau
  • Der scheitert (Gegenstelle ist nicht erreichbar) und sendet dann direkt eine Admin Notification

Das führt nun zu mehreren tausend Benachrichtigungen bei mehrstündigen Störungen.

Probleme dabei:

  • Zu viele nichts helfende Nachrichten beim Admin
  • Belastung des Stunden-Limits für Push-Notifications

Die Frage ist nun, wie sollte das geändert werden.

Idee:

  • Plugins melden dem PluginManager einen FailureState. D.h. ist eine Verbindung gestört, dann wird der auf „true“ gesetzt. Kommt die Verbindung wieder zu Stande, wird der auf false zurückgesetzt.
  • Jede Änderung eines FailureStates durch ein Plugin (true → false, false → true) löst eine Admin Notification aus.
  • Ein Cron-Job (alle 5 Minuten) prüft auf den FailureState der Plugins im PluginManager. Ist für ein Plugin der FailureState === true → Admin Notification versenden.

Pro:

  • Maximal 12 Nachrichten / Stunde für Admins

Contra:

  • es sind dann immer noch 120 Nachrichten pro Stunde

Habt Ihr vlt. noch Ideen, wie wir das optimieren könnten?

Was ich noch zu Contra sehe:

  • Wenn ein Fehler kürzer auftritt kriegt man es nicht mehr mit bzw erst nach 5 Minuten (was ein langer Zeitraum sein kann ohne Alarmierung)

Aber wir brauchen eine andere Lösung da geb ich dir recht.

Auch kürzere Fehler sollten doch durch das Vorgehen einmalig gemeldet werden. Szenario:

  • KatSys Verbindung fällt aus
  • Plugin FailureState geht von false auf true
  • Event Admin Notification wird durch den Zustandswechsel einmalig ausgelöst

Was problematisch werden könnte wäre allerdings, wenn die Verbindung (und damit der Plugin FailureState „flattert“, also die Verbindung auf und direkt wieder abgegabut würde. (hatten wir ja auch schon mal).

Anstatt 5 Minuten, könnte man den check exponentiell für jedes Plugin machen bis zu einem maximalen Zeitraum von vlt. 5 Minuten.

Also z.B. Fehler von Plugin A kommt, FailureState wird gesetzt, wenn er innerhalb von 2 Sekunden wieder kommt, wird eine Benachrichtung geschickt und der Zeitraum wächst auf 4 Sekunden, dann auf 8 bis zu einem Limit.

Das sollte für jedes Plugin einzeln verwaltet werden, innerhalb des PluginManagers

Na das hört sich doch Mal nach dem Konzept an.

Aber als Admin würde ich evtl auch gerne die Unterschiede zwischen den Fehlermeldungen sehen. Denn vielleicht muss ich ja um einen Folgefehler zu beheben den Server Mal durchstarten oder so.

Wie wird das dann abgefahren?

Was meinst Du mit „Unterschieden“ ?

z.B. wenn KatSys erst einen DNS-Fehler wirft und danach dann gar nicht mehr erreichbar ist diesen Unterschied aufzuzeigen?

Genau sowas meinte ich.