Minęło 5 miesięcy, odkąd zadałeś to pytanie i mam nadzieję, że coś wymyśliłeś. Przedstawię tutaj kilka różnych sugestii, mając nadzieję, że znajdziesz je w innych scenariuszach.
W twoim przypadku użycia nie sądzę, że musisz patrzeć na algorytmy wykrywania szczytów.
A więc oto: Zacznijmy od zdjęcia błędów występujących na osi czasu:
To, czego chcesz, to wskaźnik numeryczny, „miara” szybkości nadchodzących błędów. I ta miara powinna być podatna na progowanie - Twoi administratorzy powinni być w stanie ustalić granice, które kontrolują, z jakimi błędami czułości zamieniają się w ostrzeżenia.
Środek 1
Wspomniałeś o „skokach”, najłatwiejszym sposobem na uzyskanie skoków jest narysowanie histogramu co 20 minut:
Twoi administratorzy ustawiliby czułość w oparciu o wysokości słupków, tj. Najwięcej błędów tolerowanych w odstępie 20 minut.
(W tym momencie możesz zastanawiać się, czy nie można dostosować tej 20-minutowej długości okna. Można, i możesz myśleć o długości okna jako o definicji słowa razem w błędach pojawiających się razem .)
Jaki jest problem z tą metodą w twoim konkretnym scenariuszu? Cóż, twoja zmienna jest liczbą całkowitą, prawdopodobnie mniejszą niż 3. Nie ustawisz swojego progu na 1, ponieważ oznacza to po prostu, że „każdy błąd jest ostrzeżeniem”, który nie wymaga algorytmu. Wybory dla progu będą wynosić 2 i 3. Nie daje to administratorom całego systemu drobiazgowej kontroli.
Środek 2
Zamiast zliczać błędy w oknie czasowym, śledź liczbę minut między bieżącym a ostatnim błędem. Gdy ta wartość staje się zbyt mała, oznacza to, że twoje błędy stają się zbyt częste i musisz zgłosić ostrzeżenie.
Twoi administratorzy prawdopodobnie ustawią limit na 10 (tj. Jeśli błędy występują mniej niż 10 minut od siebie, to problem) lub 20 minut. Może 30 minut na mniej krytyczny system.
Ten środek zapewnia większą elastyczność. W przeciwieństwie do miary 1, dla której istniał mały zestaw wartości, z którymi można pracować, teraz masz miarę, która zapewnia dobre 20-30 wartości. W związku z tym sysadmins będą mieli więcej możliwości dostrajania.
Przyjazna rada
Istnieje inny sposób rozwiązania tego problemu. Zamiast patrzeć na częstotliwości błędów, możliwe jest przewidywanie błędów przed ich wystąpieniem.
Wspomniałeś, że takie zachowanie występowało na jednym serwerze, o którym wiadomo, że ma problemy z wydajnością. Możesz monitorować niektóre kluczowe wskaźniki wydajności na tym komputerze i informować ich, kiedy wystąpi błąd. W szczególności przyjrzymy się wykorzystaniu procesora, pamięci i kluczowych wskaźników wydajności związanych z dyskowymi operacjami we / wy. Jeśli użycie procesora przekroczy 80%, system zwolni.
(Wiem, że powiedziałeś, że nie chcesz instalować żadnego oprogramowania, i to prawda, że możesz to zrobić za pomocą PerfMon. Ale są dostępne darmowe narzędzia, które zrobią to za Ciebie, takie jak Nagios i Zenoss .)
A dla ludzi, którzy tu przybyli, mając nadzieję znaleźć coś na temat wykrywania kolców w szeregu czasowym:
Wykrywanie skoków w szeregu czasowym
x1, x2), . . .
M.k= ( 1 - α ) Mk - 1+ α xk
αxk
Jeśli na przykład twoja nowa wartość odeszła zbyt daleko od średniej ruchomej
xk- MkM.k> 20 %
wtedy podnosisz ostrzeżenie.
Średnie kroczące przydają się podczas pracy z danymi w czasie rzeczywistym. Ale przypuśćmy, że masz już sporo danych w tabeli i chcesz po prostu uruchomić zapytania SQL, aby znaleźć wartości szczytowe.
Sugerowałbym:
- Oblicz średnią wartość szeregu czasowego
- σ
- 2) σ
Więcej zabawy o szeregach czasowych
Wiele szeregów czasowych w świecie rzeczywistym wykazuje cykliczne zachowanie. Istnieje model o nazwie ARIMA, który pomaga wyodrębnić te cykle z szeregów czasowych.
Średnie kroczące uwzględniające zachowanie cykliczne: Holt i Winters