Aktuelles

Donnerstag, 02. Juli 2020

Predictive Alarming mit Prometheus

Im IT Betrieb haben vermeintlich kleine und vermeidbare Fehler gravierende Auswirkungen. Berühmte Beispiele sind da abgelaufene Zertifikate, volle Festplatten und leere Batterien. Oder allgemein: aufgebrauchte Ressourcen. Im klassischen Monitoring wird dazu ein Schwellwert definiert und bei Über- oder Unterschreitung wird alarmiert. Aber gerade bei Schwellwerten ist es schwierig, allgemeingültige Werte zu ermitteln. 80% verbrauchter Festplattenplatz können unter verschiedenen Umständen sowohl kritisch als auch vollkommen in Ordnung sein. Wenn man aber den Zeitpunkt der Störung vorausberechnen kann, dann lässt sich die Anzahl der unnötigen Alarmierungen und damit auch der unnötigen Einsätze reduzieren. Am besten alarmiert man nur, wenn auch etwas zu tun ist.

Die Lösung: Predictive Alarming

Voraussetzung für ein Predictive Alarming ist in den meisten Fällen die Zugriffsmöglichkeit auf historische Werte, wie es z.B. mit Prometheus möglich ist. Schauen wir es uns für die Beispiele von oben an.

Beispiel Zertifikate: Jedes Zertifikat hat ein Ablaufdatum, die Restlaufzeit ist also bekannt und sollte linear abnehmen. Hier reicht tatsächlich ein simpler Schwellwert, der rechtzeitig vor dem Ablaufen des Zertifikats warnt. Es ist auch keine Historie vorheriger Messwerte nötig.

 

Beispiel Plattenplatz: Festplatten haben sehr unterschiedliche Kapazitäten und auch die Raten mit denen Daten geschrieben werden sind sehr verschieden. Hier wäre es hilfreich anstatt eines fixen Schwellwertes (95% oder 5GB) einen Alarm auszulösen, wenn der Festplattenplatz in 4Std erschöpft ist. Das kann die Prometheus Funktion „predict_linear()“. Sie verwendet eine lineare Regression über einen Zeitraum, um vorherzusagen, wie der Wert einer Zeitreihe in der Zukunft sein wird.

 

In diesem Beispiel wird der freie Plattenplatz der zurückliegenden Stunde (1h) betrachtet und mittels linearerer Regression berechnet, wie es bei gleichbleibendem Verlauf in 4 Stunden aussieht. Ergibt dies freien Festplattenplatz kleiner als Null, so wird ein Alarm generiert.

 

Beispiel Batterie: Bei OpenAdvice haben die Meetingräume E-Ink Displays auf denen die Belegung und anstehende Termine angezeigt werden. Die Displays sind sehr stromsparend, dennoch müssen gelegentlich die Batterien getauscht werden. Fällt die Spannung unter einen kritischen Wert, wird das Display nicht mehr ausreichend versorgt und aktualisiert sich nicht mehr. Damit dies nicht erst passiert, wenn die Displays keine Informationen mehr anzeigen, sondern schon im Voraus erkannt wird, wird die Spannungsversorgung der elektronischen Türschilder mit Prometheus überwacht.

Warum nicht lineare Regression?

Die gemessene Spannung wird von Umgebungsfaktoren wie Temperatur beeinflusst, dadurch weist der Spannungsverlauf starke Tag/Nacht-Schwankungen auf. Bei linearer Regression würden es Nachts regelmäßig falsche Alarme geben, dass die kritische Spannung demnächst unterschritten wird.

Bei schwankenden Werten besser: Holt-Winter Forcasting

Prinzipiell wird mit Holt-Winter das gleiche gemacht wie mit linearer Regression, es werden Aussagen über die Zukunft anhand von Daten aus der Vergangenheit getroffen. Holt-Winter kann zusätzlich regelmäßige zeitliche Veränderungen (Saisonality) berücksichtigen, wie beispielsweise Besucherzahlen unter Woche und am Wochenende, tägliche-, jährliche oder allgemein regelmäßige Schwankungen. Also ist die Holt-Winter Funktion genau das Richtige, um die Tag-Nacht-Schwankungen in den E-Ink Displays zu berücksichtigen.

 

Bei nicht saisonalen Schwankungen hilft leider auch Holt-Winter nicht. Eine mögliche Lösung wäre hier den Alarm mit einem laufenden Durchschnittswert auszulösen und nicht auf dem letzten Schwellwert selbst. Oder die Lineare Regression auf die geglättete Durschnittskurve anzuwenden.

Fazit:
Mit Prometheus lässt sich mit den vorhandenen historischen Messwerten und den mitgelieferten „intelligenten“ Funktionen ein Alarming realisieren, welches präziser alarmiert und dadurch weniger Arbeit verursacht.