Условия перехода состояний

В этой секции настраиваются условия перехода состояния для сущностей.

conditions ui

В этой секции есть следующие элементы управления:

  • Кнопка позволяет добавлять комментарии, которые будут отображаться в истории состояний сущности и отправляться в уведомлениях.

  • Кнопка Применить применяет изменения к условиям перехода состояний. Кнопка Отмена их отменяет.

  • Кнопка Применить к классу устанавливает настроенные условия в качестве условий по умолчанию для всех объектов класса текущего объекта.

    Если у каких-либо иных объектов данного класса ранее были изменены условия перехода состояний, то они считаются "уникальными" для этих объектов, и нажатие этой кнопки не приведёт к их изменению.

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

    apply to class popup
  • Кнопка Унаследовать от класса применяет к текущему объекту условия по умолчанию, указанные для данного класса.

  • Кнопкой , расположенной в правой части заголовка секции, графический конструктор условий можно переключить на текстовый режим:

    image

Настройка условий

Секция Условия перехода состояний содержит набор записей. Каждая запись состоит из:

  1. Условия:

    • тип (сравнение/прогноз/всплеск/экспирация данных);

    • источник данных - имя метрики из Данных текущего или внешнего объекта;

    • оператор сравнения из списка, например, = или совпадает с;

    • значение, с которым выполняется сравнение.

  2. Действия - переход состояния в указанное при выполнении условия.

Типы Прогноз и Всплеск доступны только при включенном модуле аналитики.

Условие типа Экспирация данных выполняется, если данные не поступили в систему в течение периода проверки; по умолчанию в таком случае объект переходит в состояние NO DATA. Остальные поля у такого условия отсутствуют.

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

Операторы = и также могут использоваться с текстовыми значениями, регистр букв учитывается.

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

Построение условий

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

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

Кнопки и справа от значения добавляют условие в систему и удаляют условие из системы соответственно.

Условие может быть пустым, такое условие выполняется всегда.

Кнопки и справа от действия добавляют и удаляют систему условий целиком соответственно.

Кнопка активирует ручной ввод источника данных. Ручной ввод позволяет:

image

Смена состояний при ошибках

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

  • если у объекта не настроены условия перехода состояний или ни одно из них не удовлетворяет условию по метрике Ошибка сенсора, то объект переходит в состояние ALARM;

  • если выполняется условие, настроенное по метрике Ошибка сенсора, то объект переходит в состояние данного условия.

image

Если условия перехода состояний составлены с ошибкой, то объект при поступлении данных переходит в состояние ALARM. В истории состояний будет указана причина Ошибка в условии перехода состояния:

image

Дополнительные операторы

По кнопке справа от значения доступны дополнительные операторы:

  • длительность - определяет период, в течение которого условие должно выполняться непрерывно, чтобы перевести объект в указанное состояние:

    image

  • период - позволяет указать временной промежуток, на протяжении которого выполняется настроенное условие:

    image

  • переключения - позволяет указать требуемое число выполнений настроенного условия за выбранный временной интервал:

    Переключения позволяют отследить краткосрочные самовосстанавливающиеся аварийные ситуации, однако стабильную аварийную ситуацию с их помощью не зафиксировать. Рекомендуется использовать функционал переключений в сочетании с функционалом длительности, чтобы аварийная ситуация не была потеряна.

    На изображении ниже демонстрируются условия смены состояний для устройства, которое отправляет SNMP-Trap о смене состояния интерфейса. Если устройство пришлёт последовательность "Down - Up (или любое другое, отличное от Down) - Down - Up (или любое другое, отличное от Down) - Down" за 10 секунд, то сработает первое условие, и объект перейдёт в состояние OVERLOADED.

    Если устройство пришлёт строку "Down", и она продержится 10 секунд, то сработает второе условие, и объект перейдёт в состояние ALARM.

    Если устройство пришлёт строку "Up", и она продержится 10 секунд, то сработает последнее условие, и объект перейдёт в состояние WORKING.

    image

Возможно задать условие без указания метрики и её значения. Например, в выходные переходить в состояние WORKING:

image

Действия при отсутствии данных

По умолчанию, в случае отсутствия данных в системе по истечении периода проверки, объект переходит в состояние NO DATA.

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

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

Например, если объект собирает данные об ошибках (когда ошибок нет, данные не поступают), при отсутствии данных переводить объект в состояние WORKING:

image

Использование метрик из внешних объектов

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

Для использования метрик из внешних объектов нужно иметь доступ к этим объектам.

Для использования метрик из внешних объектов, укажите ID объекта и имя используемой метрики через двоеточие с помощью функции ручного ввода метрики (кнопка ).

Например, для использования метрики packetsTransmitted из объекта с ID = 634020c368413b26524a3424 необходимо ввести следующую строку:

634020c368413b26524a3424:packetsTransmitted
external metric

В текстовом режиме внешние метрики записываются так:

[
  {
    "condition": {
      "634020c368413b26524a3424:packetsTransmitted": {
        "_eq": "4"
      }
    },
    "state": 3,
    "description": "",
    "externalRefs": [
      {
        "id": "634020c368413b26524a3424",
        "metric": "packetsTransmitted"
      }
    ]
  }
]

Данный функционал также можно использовать и в редакторе формул.

Например, для сложения внешних метрик packetsTransmitted и packetsReceived из объектов с ID 634020c368413b26524a3424 и 634020d668413b26524a342b соответственно нужно записать следующую строчку:

{{634020c368413b26524a3424:packetsTransmitted}} - {{634020d668413b26524a342b:packetsReceived}}

В текстовом режиме формулы с внешними метриками записываются так:

[
  {
    "condition": {
      "_formula": {
        "definition": "{{634020c368413b26524a3424:packetsTransmitted}} - {{634020d668413b26524a342b:packetsReceived}}",
        "value": {
          "_eq": "0"
        }
      }
    },
    "state": 3,
    "description": "",
    "externalRefs": [
      {
        "id": "634020c368413b26524a3424",
        "metric": "packetsTransmitted"
      },
      {
        "id": "634020d668413b26524a342b",
        "metric": "packetsReceived"
      }
    ]
  },
  {
    "condition": {},
    "state": 5,
    "description": ""
  }
]

Математические операции

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

Ввод формул

Для ввода формулы необходимо:

  1. Перейти в режим ручного ввода .

  2. В поле Источник данных ввести название метрики или выбрать её в отфильтрованном списке вариантов. Название каждой метрики должно быть записано в двойных фигурных скобках: {{имя_метрики}}.

    image
  3. При помощи математических символов, констант и скобок ввести формулу.

    Например, разность максимального времени приёма-передачи и минимального времени приёма-передачи: {{roundTripMaximum}} - {{roundTripMinimal}}.

    Над введённой математической операцией автоматически отобразится результат вычислений.

    image

Доступные операции, операторы и функции

Операции

Операция

Описание

!

Факториал

^

Возведение в степень

*

Умножение

/

Деление

%

Остаток от деления

+

Сложение

-

Вычитание

||

Конкатенация

==

Равно

!=

Не равно

>=

Больше или равно

<=

Меньше или равно

>

Больше

<

Меньше

and

Логическое И

or

Логическое ИЛИ

not

Логическое НЕ

Операторы

Оператор Описание

x!

Факториал (x * (x-1) * (x-2) * …​ * 2 * 1).gamma(x + 1) для нецелых чисел

abs x

Модуль x

ceil x

Округление до следующего целого

floor x

Округление до предыдущего целого

length x

Длина строки x

round x

Округление до ближайшего целого

sqrt x

Квадратный корень из x

trunc x

Отбрасывает дробную часть x

exp x

Экспонента (e^x - показательная функция с основанием e)

ln x или

log x

Натуральный логарифм x

log10 x

Десятичный логарифм x

acos x

Арккосинус x (в радианах)

acosh x

Гиперболический арккосинус x (в радианах)

asin x

Арксинус x (в радианах)

asinh x

Гиперболический арксинус x (в радианах)

atan x

Арктангенс x (в радианах)

atanh x

Гиперболический арктангенс x (в радианах)

cos x

Косинус x (в радианах)

cosh x

Гиперболический косинус x (в радианах)

sin x

Синус x (в радианах)

sinh x

Гиперболический синус x (в радианах)

tan x

Тангенс x (в радианах)

tanh x

Гиперболический тангенс x (в радианах)

x ? y : z

Оператор условия (если x, то y, иначе z)

Функции

Функция Описание

random(n)

Случайное число в диапазоне [0, n). Если n равно 0 или не задано, значение приравнивается к 1.

min(a,b,…)

Минимальное значение из списка.

max(a,b,…)

Максимальное значение из списка.

hypot(a,b) или

pyt(a, b)

Гипотенуза, т.е. квадратный корень суммы квадратов двух аргументов (sqrt(a^2+b^2)).

pow(x, y)

Эквивалент возведения в степень (x^y).

atan2(y, x)

Арктангенс x/y, т.е. угол между (0, 0) и (x, y) в радианах.

if(x, y, z)

Эквивалент оператора условия (если x, то y, иначе z).

delta(x)

Разница между текущим и предыдущим значением x.

deltaRoll(x)

Только неотрицательная разница между текущим и предыдущим значением x. Отрицательное значение разницы заменяется на последний неотрицательный результат.

timestamp()

Метка времени каждой метрики из возвращаемого ряда значений в формате 13-значного числа (с миллисекундами).