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