SET - примеры

При использовании правил рекомендуется расширять таблицу данных всеми метриками первым действием, иначе метрики, не указанные в правилах, не будут обновляться в таблице данных:

[
  {
    "actions": [
      {
        "type": "extend"
      }
    ]
  },
...
]

Пример 1: в качестве value установлены числовые и текстовые значения

Цель: расширить возможности по настройке условий перехода состояний и повысить уровень визуализации.

Пошаговое руководство:

Шаг 1: в секции Мониторинг настроить тип проверки Ping

Здесь будет рассмотрена метрика packetLossPercentile (процентиль потерь пакетов). В этом примере допустимое значение packetLossPercentile = 10.

Шаг 2: расширить таблицу данных всеми метриками

[
  {
    "actions": [
      {
        "type": "extend"
      }
    ]
  },
...
]

Шаг 3: в правилах формирования данных настроить условия и действия (всё в порядке)

Если packetLossPercentile = [0;10], то

  • в таблицу данных запишется метрика packetLossPercentile со значением OK,

  • будет создана метрика over_packetLossPercentile - число ошибок - со значением 0.

[
...
  {
    "conditions": [
      {
        "_field": {
          "name": "new.packetLossPercentile",
          "value": {
            "_lte": "10"
          }
        }
      }
    ],
    "actions": [
      {
        "type": "set",
        "field": "packetLossPercentile",
        "value": "OK"
      },
      {
        "type": "set",
        "field": "over_packetLossPercentile",
        "value": "0"
      }
    ]
  },
...
]

Шаг 4: задать условие перехода состояний для Working

Если packetLossPercentile = OK, то объект переходит в состояние WORKING.

condition ok

Шаг 5: в правилах формирования данных настроить условия и действия (аварийная ситуация)

Если packetLossPercentile > 10, и это значение пришло больше одного раза (ситуация для одного раза описывается позже), то в таблицу данных метрика packetLossPercentile записывается со значением ALERT.

  [
...
 {
    "conditions": [
      {
        "_field": {
          "name": "new.packetLossPercentile",
          "value": {
            "_gt": "10"
          }
        }
      },
      {
        "_field": {
          "name": "new.over_packetLossPercentile",
          "value": {
            "_eq": "1"
          }
        }
      }
    ],
    "actions": [
      {
        "type": "drop",
        "include": "over_packetLossPercentile"
      },
      {
        "type": "set",
        "field": "packetLossPercentile",
        "value": "ALERT"
      }
    ]
  }
]

Шаг 6: задать условие перехода состояний для Alarm

Если packetLossPercentile = ALERT, то объект переходит в состояние ALARM, требуя от технической поддержки немедленного вмешательства.

condition ok alert

Шаг 7: в правилах формирования данных настроить условия и действия (ошибка)

Если packetLossPercentile > 10, и это значение пришло один раз, то:

  • в таблицу данных записывается метрика packetLossPercentile со значением WARNING,

  • факт превышения допустимых потерь фиксируется в метрике over_packetLossPercentile.

  [
...
 {
    "conditions": [
      {
        "_field": {
          "name": "new.packetLossPercentile",
          "value": {"_gt": "10"}
        }
      },
      {
        "_field": {
          "name": "current.over_packetLossPercentile",
          "value": {"_eq": "0"}
        }
      }
    ],
    "actions": [
  {
  "type": "set",
  "field": "over_packetLossPercentile",
  "value": "1"
 },
      {
        "type": "set",
        "field": "packetLossPercentile",
        "value": "WARNING"
      }
    ]
  }]

Шаг 8: задать условие перехода состояний для Overloaded

Если packetLossPercentile = WARNING, то объект переходит в состояние OVERLOADED, не являясь приоритетным для решения технической поддержкой.

condition ok alert warn

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

widget ok

Пример 2: в качестве value установлены формулы с использованием метрик из таблицы данных с указателями current и new

Цель: получить отображение шаговых значений.

Пошаговое руководство:

Шаг 1: в секции Мониторинг настроить тип проверки Процесс по имени

Здесь будет рассмотрена метрика bytesResident (объём используемой физической памяти) в рамках одного процесса. То есть разница между вновь пришедшим значением (new) и текущим (current): {{new.bytesResident}}-{{current.bytesResident}}.

Шаг 2: расширить таблицу данных всеми метриками

[
  {
    "actions": [
      {
        "type": "extend"
      }
    ]
  },
...
]

Шаг 3: в правилах формирования данных создать новую метрику last_diff (разность), а в значении прописать формулу

[
...
  {
    "actions": [
      {
        "type": "set",
        "field": "last_diff",
        "value": "{{new.bytesResident}}-{{current.bytesResident}}"
      }
    ]
  }
]