Прошло 5 месяцев с тех пор, как вы задали этот вопрос, и, надеюсь, вы что-то поняли. Я собираюсь сделать несколько разных предложений здесь, надеясь, что вы найдете их для использования в других сценариях.
Для вашего случая использования я не думаю, что вам нужно смотреть на алгоритмы обнаружения пиков.
Итак, начнем: Давайте начнем с картины ошибок, происходящих на временной шкале:
Вам нужен числовой индикатор, «мера» того, как быстро появляются ошибки. И эта мера должна поддаваться пороговому значению - ваши системные администраторы должны иметь возможность устанавливать пределы, которые определяют, какие ошибки чувствительности превращаются в предупреждения.
Мера 1
Вы упомянули «спайки», самый простой способ получить спайк - это нарисовать гистограмму через каждые 20 минут:
Ваши системные администраторы установят чувствительность на основе высоты столбцов, то есть наиболее допустимых ошибок за 20-минутный интервал.
(В этот момент вы можете задаться вопросом, не может ли быть изменена эта 20-минутная длина окна. Это возможно, и вы можете думать о длине окна как об определении слова вместе в ошибках фразы, появляющихся вместе .)
В чем проблема с этим методом для вашего конкретного сценария? Ну, ваша переменная является целым числом, вероятно, меньше 3. Вы не установили бы свой порог равным 1, поскольку это просто означает, что «каждая ошибка - это предупреждение», что не требует алгоритма. Таким образом, ваш выбор для порога будет 2 и 3. Это не дает вашим системным администраторам много детального контроля.
Мера 2
Вместо подсчета ошибок во временном окне следите за количеством минут между текущей и последней ошибками. Когда это значение становится слишком маленьким, это означает, что ваши ошибки становятся слишком частыми, и вам нужно выдать предупреждение.
Ваши системные администраторы, вероятно, установят ограничение в 10 (то есть, если ошибки происходят менее чем через 10 минут, это проблема) или 20 минут. Может быть, 30 минут для менее критической системы.
Эта мера обеспечивает большую гибкость. В отличие от Меры 1, для которой был небольшой набор значений, с которым вы могли работать, теперь у вас есть мера, которая обеспечивает хорошие 20-30 значений. Поэтому ваши системные администраторы будут иметь больше возможностей для тонкой настройки.
Дружеский совет
Есть другой способ решения этой проблемы. Вместо того, чтобы рассматривать частоты ошибок, можно предсказать ошибки до того, как они возникнут.
Вы упомянули, что это происходило на одном сервере, который, как известно, имеет проблемы с производительностью. Вы можете отслеживать определенные ключевые показатели эффективности на этом компьютере и получать от них информацию о том, когда произойдет ошибка. В частности, вы бы посмотрели на использование ЦП, использование памяти и KPI, связанные с дисковым вводом / выводом. Если загрузка вашего процессора превысит 80%, система замедлится.
(Я знаю, что вы сказали, что не хотите устанавливать какое-либо программное обеспечение, и это правда, что вы можете сделать это с помощью PerfMon. Но есть бесплатные инструменты, которые сделают это для вас, например, Nagios и Zenoss .)
И для людей, которые пришли сюда в надежде найти что-то об обнаружении всплесков во временном ряду:
Обнаружение пиков во временных рядах
Икс1, х2, . ,,
MК= ( 1 - α ) Мк - 1+ α xК
αИксК
Если ваше новое значение переместилось слишком далеко от скользящей средней, например
ИксК- МКMК> 20 %
тогда вы поднимаете предупреждение.
Скользящие средние удобны при работе с данными в реальном времени. Но предположим, что у вас уже есть куча данных в таблице, и вы просто хотите выполнить SQL-запросы к ней, чтобы найти пики.
Я бы предложил:
- Вычислите среднее значение вашего временного ряда
- σ
- 2 σ
Более забавные вещи о временных рядах
Многие реальные временные ряды демонстрируют циклическое поведение. Существует модель под названием ARIMA, которая помогает вам извлечь эти циклы из ваших временных рядов.
Скользящие средние, которые учитывают циклическое поведение: Холт и Уинтерс