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?
quelle
The volume of crap people have to store will expand to fill the disk available.
- Old Sysadmin AxiomAntworten:
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.
quelle
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.
quelle
(90 - z[1]) / z[0]
stattdessen verwenden.