giorni di calcolo fino a quando il disco è pieno


9

Usiamo la grafite per tenere traccia della cronologia dell'utilizzo del disco nel tempo. Il nostro sistema di allerta esamina i dati dalla grafite per avvisarci quando lo spazio libero scende al di sotto di un certo numero di blocchi.

Vorrei ricevere avvisi più intelligenti: quello che mi interessa davvero è "quanto tempo devo prima di dover fare qualcosa per lo spazio libero?", Ad esempio se la tendenza mostra che tra 7 giorni finirò il disco spazio quindi genera un avviso, se è inferiore a 2 giorni, genera un errore.

L'interfaccia del dashboard standard di Graphite può essere piuttosto intelligente con i derivati ​​e le bande di Holt Winters Confidence, ma finora non ho trovato il modo di convertirlo in metriche utilizzabili. Sto anche bene a sgranocchiare i numeri in altri modi (basta estrarre i numeri grezzi dalla grafite ed eseguire uno script per farlo).

Una complicazione è che il grafico non è fluido: i file vengono aggiunti e rimossi, ma la tendenza generale nel tempo è quella di aumentare l'utilizzo dello spazio su disco, quindi forse è necessario esaminare i minimi locali (se si guarda alla metrica "disco libero" ) e tracciare una tendenza tra i trogoli.

Qualcuno l'ha fatto?


qual è la tua infrastruttura? ad esempio, se sei una casa di vmware, puoi guardare i loro prodotti Operations Manager che fanno questo tipo di vista predittiva sullo spazio su disco.
Chopper3

The volume of crap people have to store will expand to fill the disk available.- Old Sysadmin Axiom
voretaq7

I nostri server sono suddivisi tra VM VMware che utilizzano IBM XIV per dischi e KVM che utilizzano SD locali. Non sono sicuro di avere accesso a quel tipo di informazioni (il mio team non gestisce VMware o XIV) e preferirebbe una soluzione indipendente dal prodotto.
Amos Shapira,

Risposte:


8

Sinceramente "Days Until Full" è comunque una metrica pessima: i filesystem diventano davvero stupidi quando si avvicinano al 100% di utilizzo.
Consiglio vivamente di usare le soglie tradizionali dell'85%, 90%, 95% (avvertenza, allarme e critiche-che-hai-bisogno-di-riparare-questo-ORA, rispettivamente) - questo dovrebbe darti un sacco di tempo di avviso sui dischi moderni (diciamo un'unità da 1 TB: l'85% di un terabyte ti lascia ancora molto spazio ma sei consapevole di un potenziale problema, del 90% dovresti pianificare un'espansione del disco o qualche altra mitigazione e al 95% di un terabyte hai ancora 50 GB e dovresti avere una soluzione in movimento).

Questo assicura anche che il tuo filesystem funzioni più o meno in modo ottimale: ha un sacco di spazio libero per gestire la creazione / modifica / spostamento di file di grandi dimensioni.

Se i tuoi dischi non sono moderni (o se il tuo modello di utilizzo prevede che una quantità maggiore di dati venga lanciata sul disco) puoi facilmente regolare le soglie.


Se sei ancora impostato sull'uso di una metrica "giorni fino al completo", puoi estrarre i dati dalla grafite e fare dei calcoli su di essa. Gli strumenti di monitoraggio di IBM implementano metriche di alcuni giorni fino al completo che possono darti un'idea di come implementarlo, ma fondamentalmente stai prendendo il tasso di cambiamento tra due punti della storia.

Per motivi di sanità mentale potresti usare la derivata dalla grafite (che ti darà il tasso di variazione nel tempo) e proiettarla usando quella, ma se vuoi VERAMENTE avvisi "più intelligenti" ti suggerisco di usare la velocità di variazione giornaliera e settimanale (calcolata in base al picco di utilizzo per il giorno / settimana).

La proiezione specifica che si utilizza (il più piccolo tasso di variazione, il più grande tasso di variazione, il tasso medio di variazione, la media ponderata, ecc.) Dipende dal proprio ambiente. Gli strumenti di IBM offrono così tanti punti di vista diversi, perché è davvero difficile definire un modello di taglia unica.


Alla fine nessun algoritmo sarà molto bravo a fare il tipo di calcolo che desideri. L'utilizzo del disco è guidato dagli utenti e gli utenti sono l'antitesi del modello di Rational Actor: tutte le tue previsioni possono uscire dalla finestra con una persona pazza che decide che oggi è il giorno in cui eseguiranno un dump della memoria di sistema completo per il loro home directory. Solo perché.


Grazie per i tuoi approfondimenti. Vedo i tuoi punti. Continuo a pensare che le soglie costanti provino solo a riflettere "da quanto tempo devo rimediare?" e sentiti in qualche modo giustificato dal tuo commento "regola le tue soglie". I derivati ​​della grafite semplice non funzionano perché il grafico originale non è uniforme. Grazie per il puntatore agli strumenti di IBM, ciò che descrivi suona proprio come quello a cui ho iniziato a pensare (estrai gli ultimi due minimi e calcola la pendenza da essi).
Amos Shapira,

Sicuramente il punto di una metrica da "giorni a pieno" è che, con soglie statiche 85/90/95, non hai idea di quanto velocemente si stia riempiendo il disco? Certo, sei a conoscenza di un potenziale problema, ma come fai a sapere se hai giorni per risolverlo o settimane / mesi?

Trovo davvero interessante che tu abbia questa opinione. Consentitemi di inquadrare in questo modo: la vostra azienda ha un processo di approvvigionamento che impiega circa 6 settimane tra la richiesta iniziale di ulteriori dischi rigidi e il giorno in cui tali dischi rigidi sono effettivamente installati nelle scatole e inizia la ridistribuzione del carico. Dato il periodo di 6 settimane in quale% disco è necessario ricevere una notifica per poter installare un disco in tempo? 80%? 75%? Il fatto è che non lo sai a meno che non ti sforzi di calcolare il tasso di crescita.
JHixson,

2

Di recente abbiamo implementato una soluzione personalizzata per questo usando la regressione lineare.

Nel nostro sistema la fonte principale di esaurimento del disco sono i file di registro vaganti che non vengono ruotati.

Poiché questi crescono in modo molto prevedibile, possiamo eseguire una regressione lineare sull'utilizzo del disco (ad es. z = numpy.polyfit(times, utilization, 1)) , Quindi calcolare il segno del 100% dato il modello lineare (ad es. (100 - z[1]) / z[0])

Gli sguardi di implementazione distribuiti come questo con il rubino e GSL, ThoughtWorks NumPy abbastanza bene troppo.

Fornendo questo valore di una settimana di dati di utilizzo medio a intervalli di 90 minuti (112 punti) è stato in grado di individuare i probabili candidati all'esaurimento del disco senza troppo rumore finora.

La classe in sintesi è racchiusa in una classe che estrae i dati dallo scout, avvisa per allentarsi e invia alcuni dati di telemetria di runtime a statsd. Lascio fuori quel pezzo dato che è specifico per la nostra infrastruttura.


Ho aggiornato la risposta con alcune informazioni ora che l'abbiamo implementata.
matschaffer,

1
Ho appena trovato un gotcha divertente con questo approccio. Abbiamo anche il 90% di allarmi. Uno dei nostri host stava crescendo così gradualmente che ha toccato il 90% e ha innescato quell'allarme anche se aveva ancora più di una settimana prima di colpire il 100%, quindi l'avviso predittivo non è mai stato attivato;) Immagino che dovrei usare (90 - z[1]) / z[0]invece.
matschaffer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.