Прогнозирование нарушений SLA
Этот урок описывает, как SberMobile может помочь с проактивным управлением устройствами, сервисами и процессами. Это происходит с помощью операторов тревог, если числовой порог SLA будет в ближайшем будущем нарушен в сответствии с динамикой статистического тренда, основанного на определенной метрике.
Вот пример конфигураций тревог:
- Создать тревогу, если загрузка HDD на критически важном сервере достигнет 95% через две недели
- Создать тревогу, если средняя доступность многокомпонентного бизнес-сервиса упадет ниже 99% через три месяца
В нашем примере мы настроим тревогу, которая будет вызываться, если средняя нагрузка на ЦП на сервере поднимется выше 80% за одну неделю.
1. Создание статистического канала
Прежде всего, необходимо установить статистический канал для расчета ежедневных средних показателей нагрузки ЦП на нашем сервере.
Для создания статистического канала во всплывающем меню сетевого устройства выберите Редактировать свойства устройства, перейдите во вкладку Статистические каналы и добавьте новый ряд к таблице каналов:
Настройте Переменную так, чтобы она указывала на переменную, содержащую значения нагрузки на ЦП. Откройте Параметры канала и установите Выражение, которое вернет числовые значения, чьи SLA будут отслеживаться тревогой.
Также хорошо отключить Периоды хранения для всех типов архивов, кроме Ежедневного, поскольку мы будем использовать только ежедневные данные для анализа. Чтобы это сделать, щелкните правой кнопкой в пределах любого периода хранения и выберите Удалить значение их контекстного меню.
Сконфигурируйте длину Ежедневного архива, чтобы убедиться, что прогноз будет основан на статистических данных достаточной длины.
2. Создание тревоги
Создайте новую тревогу, которая будет появляться при определении будущих нарушений SLA. Установите уведомления тревоги (такие как отправка письма или SMS).
К тревоге добавьте один триггер переменной и настройте его следующим образом:
- Контекстная маска:
users.admin.scripts.slaBreakdown
(скрипт расчета даты нарушения SLA) - Переменная:
childInfo
(свойства) - Выражение:
dateDiff(now(), cell({users.admin.scripts.slaBreakdown:execute("users.admin.devices.criticalServer", "cpuLoad", 4, 0, 80)}), "day") < 7 && dateDiff(now(), cell({users.admin.scripts.slaBreakdown:execute("users.admin.devices.criticalServer", "cpuLoad", 4, 0, 80)}), "day") > 0
- Задержка:
0 ms
Период проверки не должен быть очень коротким, поскольку расчет даты нарушения SLA на базе статистики - это ресурсозатратная задача. Десятиминутный или более долгий Период проверки должен быть достаточен.
Самая сложная часть этой тревоги - это его Выражение. Это выражение ссылается на скрипт Расчета даты нарушения SLA, являющейся частью дистрибутива SberMobile. Ссылка {users.admin.scripts.slaBreakdown:execute("users.admin.devices.criticalServer", "cpuLoad", 4, 0, 80)}
вызывает выполнение функции из контекста скрипта и передает ему следующие параметры:
-
users.admin.devices.criticalServer
- путь контекста устройства, соответствующий нашему целевому серверу -
cpuLoad
- имя статистического канала, откуда берутся данные -
4
- группирование констант временных единиц для ежедневного группирования -
0
- агрегирование констант типов для выведения среднего значения -
80
- числовое значение SLA
Этот скрипт вернет дату, когда тренд ежедневных средних занчений пересечет порог нагрузки на ЦП в 80%. Однако дата возвращается, "завернутая" в таблицу данных (поскольку наша ссылка вызывает контекстную функцию, а контекстные функции всегда возвращают таблицы данных), поэтому нужно использовать функцию языка выражений cell()
для извлечения актуального значения ячейки (т.е. дату нарушения SLA).
Наконец, выражение использует функцию языка выражений dateDiff()
, чтобы вернуть true, если нарушение SLA произойдет в течение следующих семи дней.