Page tree

SAYMON документация

Skip to end of metadata
Go to start of metadata

Модуль аналитики позволяет обнаруживать всплески значений измеряемых метрик и прогнозировать значения метрик через указанный временной интервал.

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

[
  {
    "condition": {
      "_splash": {
        "metric": "averageCpuLoad.oneMinuteAverageLoad",
        "value": {
          "_gt": "1"
        },
      }
    },
    "state": 5,
  }
]
Графический редактор условий смены состояний не поддерживает условия для модуля аналитики. Переключите редактор условий в текстовый режим кнопкой  в заголовке секции.

В примере выше правило означает, что для метрики "averageCpuLoad.oneMinuteAverageLoad" на текущем объекте при каждом новом значении будет вычисляться разница между текущим значением и тем, что ожидала увидеть система модуля аналитики. При выходе вычисляемого (значения разницы) за пределы границ установленных пользователем, происходит изменение состояния объекта на заданное.

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

Правило "value": { "_gt": "1" } здесь означает, что только при отклонении более чем на 1 (задано в единицах измерения конкретной метрики) от границ доверительного интервала (вверх или вниз) состояние объекта перейдёт в то, что указано в параметре state (в данном случае 5). Кроме "_gt" (строго больше) также можно использовать "_lt" (строго меньше), "_gte" (больше или равно) или "_lte" (меньше или равно).

Помимо "metric" и "value" в настройках проверок есть и другие поля. Их полный список приведен ниже:

ПолеДопустимые значенияОписаниеТип
Тип проверки

"_splash" или "_predict" (значение ключа)

Название проверки. Задает блок "{...}", внутри которого описываются остальные поля (приведенные ниже).Обязательно для заполнения
metricЛюбая строкаНазвание анализируемой метрики.Обязательно для заполнения
history *Синтаксис поля соответствует формату записи данных принятому в OpenTSDB.Период истории (глубина) ряда для построения модели (по умолчанию '1w-ago' - одна неделя). Отсчитывается назад во времени с момента запуска процедуры  построения/перестроения модели. Опционально
period **Положительное целое числоЧисло периодов прогнозирования (по умолчанию 1).Опционально
refitEach ***Положительное целое числоПересобирать модель через каждые n значений (по умолчанию 1000).Опционально

* Период истории ряда ("history") должен покрывать как минимум один полный сезон в жизни анализируемой метрики. Если метрика не имеет выраженной сезонности, то достаточно выбрать длину ряда, позволяющую определить его тренд. Предсказательная модель не может быть построена на наборе из менее чем 10 значений. 

** В поле "period" задаётся число периодов прогнозирования. Например, "period": 5 означает, что система будет прогнозировать пятое по счёту значение метрики от текущего. Таким образом, для получения значения горизонта прогнозирования на временной шкале необходимо умножить значение "period" на значение, указанное в поле "Период" при настройке мониторинга.

*** По мере накопления обновлений модель набирает вес и скорость обновлений постепенно снижается. Для того чтобы обновлять модель, повышая периодически скорость её работы, используется параметр "refitEach". По умолчанию его значение равно 1000 и означает, что модель будет пересобираться через каждую 1000 обработанных значений. Минимальное допустимое значение этого параметра равно 10. Однако нужно следить, чтобы время построения модели укладывалось в интервал поступления "refitEach" значений, иначе алгоритм войдет в состояние непрекращающейся пересборки модели.

Пример правила для прогнозирования значений метрики на заданном интервале:

[
  {
    "condition": {
      "_predict": {
        "metric": "memory.freeMegabytes",
        "value": {
          "_lt": "200"
        },
       "history": "1d-ago",
       "period": 10
      }
    },
    "state": 5,
  }
]

В примере выше правило означает, что для метрики "memory.freeMegabytes" на текущем объекте при каждом новом значении будет вычисляться прогнозируемое через 10 измерений значение метрики (с учетом текущего периода). Если рассчитанное значение метрики меньше 200, то состояние объекта изменится на 5. При построении/перестроении модели будет использоваться история значений метрики за последние сутки.


  • No labels