Сложные системы подвержены сбоям многих компонентов, поэтому вполне целесообразно разделить сбои на два класса. К первому можно отнести повторяющиеся сбои, которые возможно предупреждать (например, отказ жесткого диска) и выявлять с помощью непосредственных проверок. Ко второму классу относятся непредвиденные сбои.

image

Инструментом для обнаружения непредвиденных сбоев является статистика — отсюда и название статьи. Статистический детектор аномалий выслеживает характерные изменения, выходящие за пределы допустимого, и отправляет уведомления. Главное достоинство статистического метода определения аномалий заключается в том, что с помощью него можно обнаружить ранее не встречавшиеся проблемы. К недостаткам можно отнести необходимость самостоятельного определения первопричины. Все это может показаться чересчур абстрактным, поэтому я приведу конкретный пример.

Основные термины


Чтобы избежать путаницы, ниже указаны некоторые основные термины:

  • Отслеживаемые сигналы: результаты непрерывного отслеживания для выявления нарушений.
  • Нарушение: характер изменений, указывающий на то, что веб-сайт не работает должным образом. Необходимо человеческое вмешательство для определения причины.
  • Аномалия: необычный характер изменений отслеживаемых сигналов, указывающий на возможные нарушения.
  • Уведомление: автоматический сигнал, указывающий на наличие аномалии. Обычно отсылается при обнаружении аномалии.

Определенным препятствием при создании эффективных статистических детекторов является возможность ложных срабатываний: уведомлений о несуществующих нарушениях. Если детектор аномалий имеет слишком много ложных срабатываний, пользователь отключит уведомления или пометит их как спам, или просто будет игнорировать их. И такой детектор явно окажется не очень эффективным.

В этой статье я опишу статистический детектор аномалий, который используется компанией eBay. Похожая схема также используется в инструменте аналитики t.onthe.io. В рассматриваемой поисковой системе отслеживаемые сигналы будут основываться на наиболее повторяющихся результатах поиска, выдаваемых набором эталонных запросов. Для работы статистического детектора аномалий необходим способ перевода результатов в числовую форму. В нашем случае к результатам мы применим метрики.

Каждый эталонный запрос будет обработан примерно 50 метриками, которые позволят объединить возвращаемые запросом элементы. Две метрики для примера — количество возвращенных элементов и средняя цена возвращенных элементов.  Всего используется 3000 эталонных запросов и 50 метрик — то есть 150 000 значений. В настоящее время, эталонные запросы выдаются каждые 4 часа или 6 раз в день, таким образом, мы имеем 900 000 значений в день. В наши дни с терабайтными базами данных — это смешное количество. Но анализ этих значений для обнаружения аномалий, и еще с низким показателем ложных срабатываний, является достаточно сложной задачей.

Я постараюсь наглядно объяснить используемый подход с помощью схем и графиков. На первом изображении приведены отслеживаемые сигналы, то есть объединенные значения метрик:

image

Каждая пара (запрос, метрика) представляет собой значение, которое можно отслеживать во времени, что в сущности является временным рядом. В сумме это 150 000 временных рядов, и поэтому разумно ожидать, что в течение каждого 4-часового периода отслеживания, по крайней мере, один из рядов будет определен как аномальный. Из чего можно сделать вывод, что уведомлять о каждом аномальном временном ряде не имеет особого смысла, так как это приведет к большому количество ложных срабатываний.

В нашем подходе мы накапливаем данные, и процесс начинается с очень простого действия: рассмотрения каждого временного ряда и вычисления отклонения между последним и ожидаемым значением, которое вычисляется путем экстраполяции предыдущих значений. Я называю это «неожиданность» — чем больше отклонение, тем больше неожиданность. На изображении ниже показана неожиданность для каждого триплета (запрос, метрика, время).

image

Суть нашего детектора аномалий заключается в следующем: в каждый момент получения данных T мы предполагаем, что будет существовать большое значение неожиданности для нескольких триплетов (запрос, метрика, Т). В случае обнаружения необычно высокого количества триплетов с большим значением неожиданности будет отправлено уведомление об аномалии. Для возможности количественной оценки мы вычисляем 90-й перцентиль неожиданности по времени Т для всех 3000 запросов отдельных метрик:  image.

image

Что дает по новому временному ряду по Т для каждой метрики. Примерные временные ряды для первых двух метрик показаны ниже.

image

Таким образом 150 000 временных рядов были сведены всего к 50. Подобное объединение значений является очень удобным приемом при выявлении аномалий.

В конце детектор аномалий использует простую проверку объединенных временных рядов. Наличие аномалии считается в том случае, когда текущее значение любого из 50 рядов более чем в три раза больше дисперсии среднего значения этого ряда. Вот пример с использованием данных eBay с метрикой средней цены продажи. Четко заметна аномалия в моменте времени Т = 88.

image

Конспект


  1. Статистика — инструмент для обнаружения аномалий.
  2. Статистический детектор аномалий выслеживает характерные изменения, выходящие за пределы допустимого, и отправляет уведомления.
  3. В каждый момент получения данных T предполагается, что будет существовать большое значение неожиданности для нескольких триплетов.
  4. Объединение значений временных рядов является удобным приемом при выявлении аномалий.

Комментарии (9)


  1. Andoryu
    28.08.2015 13:04

    Казалось бы, причем тут eBay…


    1. io_io
      28.08.2015 13:05
      +3

      В этой статье я опишу статистический детектор аномалий, который используется компанией eBay


  1. tumbler
    28.08.2015 16:47

    Простите, а можно ссылку на оригинальную статью?


    1. io_io
      28.08.2015 16:48

      В футере статьи есть ссылка на оригинал


      1. tumbler
        28.08.2015 16:49

        О! нашел, спасибо.


    1. io_io
      28.08.2015 16:49

      ну или вот


  1. tumbler
    28.08.2015 16:53

    Странно что eBay не стал идти дальше, как твиттер например со своим детектором аномалий


    1. io_io
      28.08.2015 18:48

      возможно в будущем?


  1. Ugputu
    29.08.2015 09:51

    Статью не читай сразу пиши коммент. Т.е. все сводится к анализу дельты от тренда и реального значения?