Умные базовые тревоги

Простые тревоги часто настариваются так, чтобы возникать сразу после того, как определенная метрика превышает заданный порог. Например, тревога возникает, когда нагрузка на ЦП сервера превышает 80% и держится на этом уровне больше часа.

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

Этот урок объясняет, как настроить тревогу так, чтобы она возникала, если среднее значение нагрузки на ЦП сервера за последний час превышет это же среднее значение за последний месяц на 20 процентов.

1. Создание статистического канала

Прежде всего, нужно настроить статистический канал для расчета средних значений нагрузки на ЦП сервера.

Для создания статистического канала выберите Редактировать свойства устройства из всплывающего меню сетевого устройства, перейдите во вкладку Статистические каналы и добавьте новый ряд к таблице каналов:

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

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

2. Создание тревоги

Создайте тревогу, которая будет возникать при серьезных нарушениях базовых параметров. Настройте уведомления тревоги (такие как отправка электронного письма или SMS).

Добавьте к тревоге один триггер переменной и настройте следующим образом:

  • Контекстная маска: users.admin.devices.criticalServer (контекст сервера, чья нагрузка на ЦП отслеживается)
  • Переменная: hrProcessorTable (таблица нагрузки на ЦП)
  • Выражение: select(select({.:statistics}, "statistics", "name", "cpuLoad"), "average", "period", 3) > select(select({.:statistics}, "statistics", "name", "cpuLoad"), "average", "period", 6) + 20
  • Задержка: 0 ms

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

Выражение этой тревоги несколько сложновато. Оно сравнивает средние значения нагрузки на ЦП за последний день и последний месяц путем их извлечения из переменной статистики.

Давайте проанализируем первую часть select(select({.:statistics}, "statistics", "name", "cpuLoad"), "average", "period", 3). Во-первых, select({.:statistics}, "statistics", "name", "cpuLoad") извлекает статистические значения для канала cpuLoad из значения переменной statistics. Во-вторых, функция select(statistics, "average", "period", 3) возвращает среднее значение последнего дня (в процентах) из предыдущей таблицы.

Числовая константа 3 соответствует временной единице Час.

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