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

В этой секции есть следующие элементы управления:
-
Кнопка позволяет добавлять комментарии, которые будут отображаться в истории состояний сущности и отправляться в уведомлениях.
-
Кнопка
применяет изменения к условиям перехода состояний. Кнопка их отменяет. -
Кнопка класса текущего объекта.
устанавливает настроенные условия в качестве условий по умолчанию для всех объектовЕсли у каких-либо иных объектов данного класса ранее были изменены условия перехода состояний, то они считаются "уникальными" для этих объектов, и нажатие этой кнопки не приведёт к их изменению.
Список объектов, к которым не будут применены изменения отображается в следующем окне:
-
Кнопка
применяет к текущему объекту условия по умолчанию, указанные для данного класса. -
Кнопкой
, расположенной в правой части заголовка секции, графический конструктор условий можно переключить на текстовый режим:
Настройка условий
Секция Условия перехода состояний содержит набор записей. Каждая запись состоит из:
-
Условия:
-
тип (сравнение/прогноз/всплеск/экспирация данных);
-
источник данных - имя метрики из Данных текущего или внешнего объекта;
-
оператор сравнения из списка, например,
=
илисовпадает с
; -
значение, с которым выполняется сравнение.
-
-
Действия - переход состояния в указанное при выполнении условия.
Типы Прогноз и Всплеск доступны только при включенном модуле аналитики. Условие типа Экспирация данных выполняется, если данные не поступили в систему в течение периода проверки; по умолчанию в таком случае объект переходит в состояние NO DATA. Остальные поля у такого условия отсутствуют. Математические операторы сравнения используются для числовых значений; текстовые - для числовых и текстовых, без учёта регистра букв. Операторы При выборе текстового оператора сравнения, например, |
Построение условий
Любое условие может состоять из нескольких, соединенных логическим оператором И
. Такие условия объединяются справа фигурной скобкой:

Алгоритм выбора данных для условий можно найти в разделе Алгоритм выбора данных для нескольких условий. |
Кнопки
и справа от значения добавляют условие в систему и удаляют условие из системы соответственно.Условие может быть пустым, такое условие выполняется всегда. |
Кнопки
и справа от действия добавляют и удаляют систему условий целиком соответственно.Кнопка
активирует ручной ввод источника данных. Ручной ввод позволяет:-
вводить названия метрик, отсутствующих в выпадающем списке,
-
использовать маски в именах метрик, например, *pfree*,
-
указывать ID внешнего объекта, которому принадлежит метрика,
-
использовать математические формулы.

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

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

Дополнительные операторы
По кнопке
справа от значения доступны дополнительные операторы:-
длительность - определяет период, в течение которого условие должно выполняться непрерывно, чтобы перевести объект в указанное состояние:
-
период - позволяет указать временной промежуток, на протяжении которого выполняется настроенное условие:
-
переключения - позволяет указать требуемое число выполнений настроенного условия за выбранный временной интервал:
Переключения позволяют отследить краткосрочные самовосстанавливающиеся аварийные ситуации, однако стабильную аварийную ситуацию с их помощью не зафиксировать. Рекомендуется использовать функционал переключений в сочетании с функционалом длительности, чтобы аварийная ситуация не была потеряна. На изображении ниже демонстрируются условия смены состояний для устройства, которое отправляет SNMP-Trap о смене состояния интерфейса. Если устройство пришлёт последовательность "Down - Up (или любое другое, отличное от Down) - Down - Up (или любое другое, отличное от Down) - Down" за 10 секунд, то сработает первое условие, и объект перейдёт в состояние OVERLOADED.
Если устройство пришлёт строку "Down", и она продержится 10 секунд, то сработает второе условие, и объект перейдёт в состояние ALARM.
Если устройство пришлёт строку "Up", и она продержится 10 секунд, то сработает последнее условие, и объект перейдёт в состояние WORKING.
Возможно задать условие без указания метрики и её значения. Например, в выходные переходить в состояние WORKING: ![]() |
Действия при отсутствии данных
По умолчанию, в случае отсутствия данных в системе по истечении периода проверки, объект переходит в состояние NO DATA.
Если отсутствие данных у выполненной проверки не является причиной для аварии, и объект в этом случае не нужно переводить в состояние NO DATA, необходимо использовать условие с типом Экспирация данных.
В качестве действия можно установить Не переводить состояние
или выбрать из списка состояние, у которого не задана критичность аварии.
Например, если объект собирает данные об ошибках (когда ошибок нет, данные не поступают), при отсутствии данных переводить объект в состояние WORKING:
Использование метрик из внешних объектов
При настройке условий перехода состояний возможно использование метрик из других объектов.
Для использования метрик из внешних объектов нужно иметь доступ к этим объектам. |
Для использования метрик из внешних объектов, укажите ID объекта и имя используемой метрики через двоеточие с помощью функции ручного ввода метрики (кнопка
).Например, для использования метрики packetsTransmitted
из объекта с ID = 634020c368413b26524a3424
необходимо ввести следующую строку:
634020c368413b26524a3424:packetsTransmitted

В текстовом режиме внешние метрики записываются так:
[
{
"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": ""
}
]
Математические операции
Для создания более сложных условий, основанных на математических операциях, используется редактор формул.
Ввод формул
Для ввода формулы необходимо:
-
Перейти в режим ручного ввода
. -
В поле Источник данных ввести название метрики или выбрать её в отфильтрованном списке вариантов. Название каждой метрики должно быть записано в двойных фигурных скобках: {{имя_метрики}}.
-
При помощи математических символов, констант и скобок ввести формулу.
Например, разность максимального времени приёма-передачи и минимального времени приёма-передачи: {{roundTripMaximum}} - {{roundTripMinimal}}.
Над введённой математической операцией автоматически отобразится результат вычислений.
Доступные операции, операторы и функции
Операции
Операция |
Описание |
! |
Факториал |
^ |
Возведение в степень |
* |
Умножение |
/ |
Деление |
% |
Остаток от деления |
+ |
Сложение |
- |
Вычитание |
|| |
Конкатенация |
== |
Равно |
!= |
Не равно |
>= |
Больше или равно |
<= |
Меньше или равно |
> |
Больше |
< |
Меньше |
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-значного числа (с миллисекундами). |