Sono passati 5 mesi da quando hai fatto questa domanda, e spero che tu abbia capito qualcosa. Ho intenzione di dare alcuni suggerimenti diversi qui, sperando che tu possa trovare un qualche uso per loro in altri scenari.
Per il tuo caso d'uso, non penso che tu abbia bisogno di esaminare gli algoritmi di rilevamento dei picchi.
Quindi ecco: iniziamo con un'immagine degli errori che si verificano su una sequenza temporale:
Quello che vuoi è un indicatore numerico, una "misura" di quanto velocemente arrivano gli errori. E questa misura dovrebbe essere suscettibile di soglia: i tuoi amministratori di sistema dovrebbero essere in grado di impostare limiti che controllano con quali errori di sensibilità si trasformano in avvisi.
Misura 1
Hai citato "punte", il modo più semplice per ottenere una punta è disegnare un istogramma su ogni intervallo di 20 minuti:
I vostri amministratori di sistema imposteranno la sensibilità in base alle altezze delle barre, ovvero agli errori più tollerabili in un intervallo di 20 minuti.
(A questo punto ti starai chiedendo se la lunghezza della finestra di 20 minuti non può essere regolata. Può, e puoi pensare alla lunghezza della finestra come a definire la parola insieme negli errori di frase che appaiono insieme .)
Qual è il problema con questo metodo per il tuo particolare scenario? Bene, la tua variabile è un numero intero, probabilmente inferiore a 3. Non imposteresti la soglia su 1, poiché ciò significa semplicemente "ogni errore è un avvertimento" che non richiede un algoritmo. Quindi le tue scelte per la soglia saranno 2 e 3. Questo non darà ai tuoi amministratori di sistema un controllo molto accurato.
Misura 2
Invece di contare gli errori in una finestra temporale, tenere traccia del numero di minuti tra l'errore corrente e l'ultimo. Quando questo valore diventa troppo piccolo, significa che i tuoi errori stanno diventando troppo frequenti e devi emettere un avviso.
I tuoi amministratori di sistema probabilmente imposteranno il limite su 10 (cioè se si verificano errori a meno di 10 minuti di distanza, è un problema) o 20 minuti. Forse 30 minuti per un sistema meno critico.
Questa misura offre maggiore flessibilità. A differenza della Misura 1, per la quale c'era un piccolo insieme di valori con cui potevi lavorare, ora hai una misura che fornisce un buon 20-30 valori. I vostri amministratori di sistema avranno quindi maggiori possibilità di perfezionamento.
Consiglio amichevole
C'è un altro modo di affrontare questo problema. Invece di guardare le frequenze degli errori, potrebbe essere possibile prevedere gli errori prima che si verifichino.
Hai detto che questo comportamento si stava verificando su un singolo server, che è noto per avere problemi di prestazioni. È possibile monitorare alcuni indicatori chiave di prestazione su quella macchina e farti sapere quando si verificherà un errore. In particolare, dovresti esaminare l'utilizzo della CPU, l'utilizzo della memoria e gli indicatori KPI relativi all'I / O del disco. Se l'utilizzo della CPU supera l'80%, il sistema rallenterà.
(So che hai detto che non volevi installare alcun software, ed è vero che potresti farlo usando PerfMon. Ma ci sono strumenti gratuiti là fuori che lo faranno per te, come Nagios e Zenoss .)
E per le persone che sono venute qui sperando di trovare qualcosa sul rilevamento di picchi in una serie temporale:
Rilevamento di picchi in una serie temporale
La cosa più semplice che dovresti iniziare facendo è calcolare una media mobile dei tuoi valori di input. Se la tua serie è , dopo ogni osservazione calcoleresti una media mobile come:x1,x2,...
Mk=(1−α)Mk−1+αxk
dove determinerebbe quanto peso darebbe l'ultimo valore di .x kαxk
Ad esempio, se il tuo nuovo valore si è spostato troppo lontano dalla media mobile
xk−MkMk>20%
poi fai un avvertimento.
Le medie mobili sono utili quando si lavora con dati in tempo reale. Supponiamo che tu abbia già un sacco di dati in una tabella e desideri semplicemente eseguire query SQL su di esso per trovare i picchi.
Suggerirei:
- Calcola il valore medio delle tue serie storiche
- Calcola la deviazione standard σ
- Isolare quei valori che sono più di sopra la media (potrebbe essere necessario regolare quel fattore di "2")2σ
Altre cose divertenti sulle serie storiche
Molte serie storiche del mondo reale mostrano un comportamento ciclico. Esiste un modello chiamato ARIMA che ti aiuta a estrarre questi cicli dalle tue serie storiche.
Medie mobili che tengono conto del comportamento ciclico: Holt e Winters