Berechnung der Tage, bis die Festplatte voll ist

9

Wir verwenden Graphit, um den Verlauf der Festplattenauslastung im Laufe der Zeit zu verfolgen. Unser Warnsystem überprüft die Daten von Graphit, um uns zu warnen, wenn der freie Speicherplatz eine bestimmte Anzahl von Blöcken unterschreitet.

Ich möchte intelligentere Benachrichtigungen erhalten. Was mich wirklich interessiert, ist "Wie lange habe ich Zeit, um etwas gegen den freien Speicherplatz zu unternehmen?", ZB wenn der Trend zeigt, dass mir in 7 Tagen die Festplatte ausgeht Leerzeichen dann eine Warnung auslösen, wenn es weniger als 2 Tage ist, dann einen Fehler auslösen.

Die Standard-Dashboard-Oberfläche von Graphite kann mit Derivaten und Holt Winters Confidence-Bändern ziemlich intelligent sein, aber bisher habe ich keine Möglichkeit gefunden, dies in umsetzbare Metriken umzuwandeln. Ich kann die Zahlen auch auf andere Weise zerkleinern (extrahiere einfach die Rohzahlen aus Graphit und führe dazu ein Skript aus).

Eine Komplikation besteht darin, dass das Diagramm nicht glatt ist - Dateien werden hinzugefügt und entfernt, aber der allgemeine Trend im Laufe der Zeit besteht darin, dass die Speicherplatznutzung zunimmt. Daher müssen möglicherweise die lokalen Minimums berücksichtigt werden (wenn die Metrik "festplattenfrei" betrachtet wird) ) und zeichnen Sie einen Trend zwischen den Tälern.

Hat jemand das getan?

Amos Shapira
quelle
Was ist Ihre Infrastruktur? Wenn Sie beispielsweise ein VMware-Unternehmen sind, können Sie sich die Operations Manager-Produkte ansehen, die diese Art der prädiktiven Ansicht des Speicherplatzes durchführen.
Chopper3
The volume of crap people have to store will expand to fill the disk available.- Old Sysadmin Axiom
voretaq7
Unsere Server sind zwischen VMware-VMs mit IBM XIV für Festplatten und KVMs mit lokalen SDs aufgeteilt. Ich bin nicht sicher, ob wir Zugriff auf diese Art von Informationen haben (mein Team verwaltet VMware oder XIV nicht) und würde eine produktunabhängige Lösung bevorzugen.
Amos Shapira

Antworten:

8

Ehrlich gesagt ist "Days Until Full" sowieso eine miese Metrik - Dateisysteme werden WIRKLICH DUMM, wenn sie sich einer 100% igen Auslastung nähern.
Ich empfehle wirklich die Verwendung der herkömmlichen Schwellenwerte von 85%, 90%, 95% (Warnung, Alarm und kritisch, die Sie wirklich JETZT beheben müssen) - dies sollte Ihnen auf modernen Festplatten viel Warnzeit geben (Nehmen wir ein 1-TB-Laufwerk an: 85% eines Terabytes lassen Ihnen immer noch viel Speicherplatz, aber Sie sind sich eines potenziellen Problems bewusst. Zu 90% sollten Sie eine Festplattenerweiterung oder eine andere Reduzierung planen, und zu 95% ein Terabyte Sie haben noch 50 GB übrig und sollten verdammt noch mal eine Lösung in Bewegung haben.

Dies stellt auch sicher, dass Ihr Dateisystem mehr oder weniger optimal funktioniert: Es verfügt über ausreichend freien Speicherplatz zum Erstellen / Ändern / Verschieben großer Dateien.

Wenn Ihre Festplatten nicht modern sind (oder wenn in Ihrem Verwendungsmuster größere Datenmengen auf die Festplatte geworfen werden), können Sie die Schwellenwerte einfach anpassen.


Wenn Sie immer noch eine Metrik "Tage bis zur Vollendung" verwenden, können Sie die Daten aus Graphit extrahieren und einige Berechnungen durchführen. Die Überwachungstools von IBM implementieren mehrere Tage bis zur vollständigen Metrik, die Ihnen eine Vorstellung davon geben können, wie sie implementiert werden sollen. Grundsätzlich nehmen Sie jedoch die Änderungsrate zwischen zwei Punkten im Verlauf.

Aus Gründen Ihrer Gesundheit können Sie das Derivat von Graphite (das Ihnen die Änderungsrate im Laufe der Zeit angibt) verwenden und damit projizieren. Wenn Sie jedoch WIRKLICH "intelligentere" Warnungen wünschen, empfehle ich die Verwendung der täglichen und wöchentlichen Änderungsrate (berechnet) basierend auf der Spitzenauslastung für den Tag / die Woche).

Die spezifische Projektion, die Sie verwenden (kleinste Änderungsrate, größte Änderungsrate, durchschnittliche Änderungsrate, gewichteter Durchschnitt usw.), hängt von Ihrer Umgebung ab. Die Tools von IBM bieten so viele verschiedene Ansichten, weil es wirklich schwierig ist, ein einheitliches Muster zu finden.


Letztendlich wird kein Algorithmus sehr gut darin sein, die Art von Berechnung durchzuführen, die Sie wollen. Die Festplattenauslastung wird von den Benutzern gesteuert, und die Benutzer sind das Gegenteil des Rational Actor-Modells: Alle Ihre Vorhersagen können aus dem Fenster gehen, wenn eine verrückte Person entscheidet, dass heute der Tag ist, an dem sie einen vollständigen Systemspeicherauszug für sie durchführen Home-Verzeichnis. Nur weil.

voretaq7
quelle
Vielen Dank für Ihre Erkenntnisse. Ich sehe deine Punkte. Ich denke immer noch, dass konstante Schwellenwerte nur versuchen zu reflektieren, "wie lange muss ich noch Abhilfe schaffen?" und fühlen Sie sich durch Ihren Kommentar "Schwellenwerte anpassen" etwas bestätigt. Einfache Graphitableitungen funktionieren nicht, da der ursprüngliche Graph nicht glatt ist. Vielen Dank für den Hinweis auf die IBM-Tools. Was Sie beschreiben, klingt genau so, wie ich es mir vorgestellt habe (extrahieren Sie die letzten beiden Minima und berechnen Sie die Steigung daraus).
Amos Shapira
Der Sinn einer "Tage bis zur vollen" Metrik ist sicherlich, dass Sie bei statischen Schwellenwerten von 85/90/95 keine Ahnung haben, wie schnell sich die Festplatte füllt? Sicher, Sie sind sich eines potenziellen Problems bewusst, aber wie können Sie wissen, ob Sie Tage oder Wochen / Monate Zeit haben, um es anzugehen?
Ich finde es wirklich interessant, dass Sie diese Meinung haben würden. Lassen Sie es mich so zusammenfassen: Ihr Unternehmen verfügt über einen Beschaffungsprozess, der zwischen der ersten Anforderung weiterer Festplatten und dem Tag, an dem diese Festplatten tatsächlich in den Boxen installiert sind und die Lastumverteilung beginnt, etwa 6 Wochen dauert. Angesichts des Zeitrahmens von 6 Wochen bei welchem ​​Festplattenprozentsatz müssen Sie benachrichtigt werden, damit eine Festplatte rechtzeitig installiert werden kann? 80%? 75%? Tatsache ist, dass Sie es nur wissen, wenn Sie sich um die Berechnung der Wachstumsrate bemühen.
JHixson
2

Wir haben kürzlich eine benutzerdefinierte Lösung mit linearer Regression eingeführt.

In unserem System sind Streuprotokolldateien, die nicht gedreht werden, die Hauptursache für die Erschöpfung der Festplatte.

Da diese sehr vorhersehbar wachsen, können wir eine lineare Regression der Festplattenauslastung durchführen (z. B. z = numpy.polyfit(times, utilization, 1)) und dann die 100% -Marke für das lineare Modell berechnen (z. B. (100 - z[1]) / z[0]).

Die eingesetzte Implementierung sieht aus wie diese mit Ruby und GSL, obwohl numpy funktioniert recht gut zu.

Durch die Zufuhr der durchschnittlichen Nutzungsdaten einer Woche in Abständen von 90 Minuten (112 Punkte) konnten wahrscheinliche Kandidaten für eine Festplattenerschöpfung ohne zu viel Rauschen ermittelt werden.

Die Klasse im Kern ist in eine Klasse eingeschlossen, die Daten vom Scout abruft, Warnungen zum Durchhängen ausgibt und Laufzeit-Telemetrie an statsd sendet. Ich werde dieses bisschen weglassen, da es spezifisch für unsere Infrastruktur ist.

matschaffer
quelle
Ich habe die Antwort mit einigen Informationen aktualisiert, nachdem wir sie eingeführt haben.
Matschaffer
1
Habe gerade einen lustigen Fall mit diesem Ansatz gefunden. Wir haben auch 90% Alarme. Einer unserer Gastgeber wuchs so allmählich, dass er 90% erreichte und diesen Alarm auslöste, obwohl er noch mehr als eine Woche dauerte, bevor er 100% erreichte, sodass der Vorhersagealarm nie ausgelöst wurde;) Ich denke, ich sollte (90 - z[1]) / z[0]stattdessen verwenden.
Matschaffer