Правила порогов
В данном разделе документации предоставлена информация о работе с правилами обработки метрик и генерации новых объектов в системе Monq - Порогов.
Порог метрики (англ. threshold) - это предельное значение, которое устанавливается для определенной метрики с целью определения критического состояния метрики. Когда значение метрики превышает или достигает установленного порога, это может сигнализировать о проблеме, ошибке, перегрузке или другом важном событии, требующем внимания или реагирования.
Генерация событий по порогам из метрик, с целью дальнейшего прохождения по пайплайну обработки событий дает возможность полноценной обработки метрик внутри Monq.
Пороги генерируются из собираемых метрик в специальном процессоре Monq - mcs-thresholds-service
, который запускает правила расчета с определенной периодичностью. Результатом работы процессора могут быть: открытие нового порога, закрытие существующего порога и подтверждение порога.
В случае открытия или закрытия порога на выходе генерируются специальные события, которые далее поступают в основной тракт обработки событий Monq.
События открытия поступают в маршрутный узел "Автоматона" привязки порогов к компонентам и слотам КЕ - ThresholdsProcessor
.
Порог аналогично Сигналу представляет собой короткоживущий объект, у которого есть время начала и время завершения.
Открывать завершённые пороги в Monq не допускается.
Установка подходящих порогов метрик является важным аспектом мониторинга и управления системами. Они должны быть настроены в соответствии с требованиями и характеристиками конкретной системы или приложения. Неправильно установленные пороги метрик могут приводить к ложным предупреждениям или недостаточному обнаружению проблем, поэтому требуется внимательное исследование и настройка для достижения оптимальных результатов.
Операции с правилами порогов
Экран управления порогами расположен в разделе меню "Автоматизация" - Правила порогов.
Для работы с правилами перейдите в соответствующий раздел.
Создание правила порога
Для создания нового правила расчета порогов нажмите кнопку + Создать правило в правом верхнем углу экрана управления правилами порогов.
Заполните форму создания правила:
- Название правила - должно быть уникальным в рамках Рабочей группы
- Владелец - Рабочая группа, которой принадлежит правило расчета порога
- Описание (опционально)
- Импорт - Код правила расчета порога в формате
base64
(подробнее в разделе Экспорт/импорт правил порогов)
После создания правила расчета порогов, его необходимо настроить:
1. Настройки правила
Частота расчета
Временной интервал, определяющий, с какой частотой будет производиться расчет правила.
2. Запрос метрик
Потоки данных
Необходимо выбрать как минимум один поток данных - источник метрик.
Окно вычисления
Временной период, в котором будет рассчитываться функция агрегации значений метрик. Окно позволяет исключить резкие изменения значения метрик, реагируя только на изменения за больший промежуток времени
Функция агрегации
Last (Последнее)
- для расчета будет использовано последнее значение вектораAverage (Среднее)
- среднее значение вектораMax (Максимум)
- максимальное значение вектораMin (Минимум)
- минимальное значение вектораSum (Сумма)
- суммирует все значения вектора
Запрос
Запрос значений метрики на языке MetricsQL (PromQL), например:
aggregator_openapi_v2_regeneration_count{endpoint="https", instance="10.18.0.100:6443", job="apiserver"}
Чем более подробно указан набор меток, тем более точно будет производиться идентификация конкретного вектора. Например, если указать только название метрики: aggregator_openapi_v2_regeneration_count
, запрос будет валиден, но вместо одного вектора, придет набор из нескольких векторов.
Допускается ввод многострочного запроса. Для этого реализован перенос на новую строку нажатием Shift+Enter.
Строка для запроса работает одновременно и в режиме Поиска по существующим в БД метрикам. Также выполнить обзор метрик можно по соответствующей кнопке в правой части строки запроса.
Для просмотра временных рядов, соответствующих настроенным условиям, запрос можно выполнить вручную, нажав кнопку Выполнить запрос.
При необходимости внесения изменений в строку Запроса активного правила - Правило сначала нужно остановить и выбрать "Закрыть пороги". Если это не сделать, пороги будут создаваться как новые, не заменяя предыдущие. А старые останутся открытыми.
Полученные в результате запроса названия меток и значения метрик (медианное, минимальное, максимальное и последнее) можно удобно скопировать в буфер нажатием на них:
Дополнительные настройки
Раскрыть
-
Прогнозирование
Позволяет построить Линейный или Сезонный прогноз для правила порогов на основе исторических данных.
В обоих случаях необходимо указать, на какой период строить прогноз и какой временной интервал использовать в качестве основы.
Для Линейного прогноза в качестве основы задается длительность в часах или днях, а для Сезонного, соответственно, сезонность - часовая, дневная, недельная или месячная. Более подробное описание функции - в разделе Прогнозирование. -
Проверка уникальности
Это способ использования указанных меток для определения уникальности порога (правило формирования хэша). Доступны следующие критерии:-
По всем меткам метрики (по умолчанию для всех правил)
-
По меткам, кроме - перечисление меток в соответствующем поле
Эти метки также должны быть исключены из основного запроса правила
-
Только по меткам - перечисление меток в соответствующем поле
СправкаПри изменении настроек правила формирования хэша допускается ситуация, при которой на экране порогов для одного порога будет отображаться несколько графиков, т.к. одинаковый хэш будет у нескольких метрик одновременно.
-
-
Настройка автоматизации (дробление порогов)
Некоторые правила могут одновременно создавать и закрывать большое количество порогов. Для более эффективной работы сценариев автоматизации рекомендуется дробить большое сообщение с результатом расчета на несколько более мелких. Для этого пользователю доступны опции:- не ограничено - дробление порогов осуществляться не будет
- не более - дробление порогов будет производится по заданному значению
- по умолчанию - дробление порогов будет производится по заданной политике в настройках пространства
График временных рядов
При выполнении запроса, помимо меток и значений метрик, выводится полный график временных рядов. Если рядов много, на графике будут отображены только первые 10, возвращенных Victoria Metrics.
Если временных рядов по запросу больше одного, отображение графиков можно избирательно отключать нажатием по цветовому индикатору графика.
При работе с графиком доступен датапикер. При переключении между правилами порогов выбранный в датапикере диапазон сохраняется.
Датапикер влияет только на визуальное отображение метрик в пределах выбранного диапазона времени на графике и не влияет на настройки правила порога в целом.
3. Условия создания порога
Пользователь системы может задать условия для расчета уровня порога, чтобы разделить полученные значения метрик по степени критичности.
Для настройки условий доступно несколько уровней критичности:
Fatal
Critical
Major
Warning
Info
По умолчанию, для вновь созданных правил расчета порогов устанавливается статус Ok
.
Кроме того, доступна опция автоматизированного определения пороговых значений: кнопка "Выставить автоматически" активируется после выполнения запроса, который вернет временные ряды. Уровни автоматически выставляются на основании данных за последние 7 дней.
При внесении изменений в условия создания порогов, уровни порогов на графике меняются в режиме реального времени.
4. Настройки порога
-
Автозакрытие
Время, через которое порог автоматически будет закрыт, если события подтверждения порога не приходят.
Отсчет выполняется с момента открытия/подтверждения порога.
-
Название порога
Допускается использование макросов (указываются в двойных фигурных скобках):
Rule.Id
- ID правилаRule.Name
- название правилаRule.Description
- описание правилаRule.CreatedAt
- дата создания правила порогаRule.FilterQuery
- данные из поля 'Запрос'Rule.CheckIntervalSeconds
- интервал запроса метрик в секундахRule.EvaluationWindowSeconds
- значение поля 'Окно вычисления' в секундахRule.AutoCloseTimeSeconds
- значение поля 'Автозакрытие'Rule.AggregationFunction
- указанная для правила функция агрегацииRule.StreamIds
- выбранные потоки для правилаRule.Conditions
- список настроенных условийRule.OwnerWorkGroupId
- ID РГ-владельца правила порогаRule.OwnerWorkGroupName
- название РГ-владельца порогаCondition.Function
- указанная для сработавшего правила функция сравненияCondition.Value
- с каким значением производилось сравнениеCondition.Level
- сработавший уровень условияCondition.LevelNumber
- цифровое значение уровняMetric.Value
- значение метрики при расчете порогаMetric.Labels
- метки метрикиMetric.Hash
- уникальный хэш метрикиMetric.Name
- название метрикиMetric.Labels.<название метки>
- позволяет указать название метки метрики
СправкаПри отсутствии значения - макрос игнорируется
-
Аннотации
Дополнительные поля порога, которые будут присвоены ему при создании
Запуск/остановка правил порогов
Запуск
После настройки правило расчета порогов можно запустить и начать анализ метрических рядов, поступающих в систему.
Нажмите кнопку Запустить в правом верхнем углу настроек правила, чтобы начать расчет по данному правилу.
Сразу после запуска правила будут проверены подходящие под Запрос метрические ряды и сгенерированы пороги в соответствии с условиями создания порогов.
По умолчанию пороги создаются без привязки к каким-либо КЕ.
Чтобы увидеть сгенерированные без привязки к КЕ пороги, на вкладке Пороги панели РСМ активируйте соответствующую настройку фильтра - "Без КЕ - Показать"
Для выполнения привязки Порога к КЕ необходимо создать сценарий с типом ThresholdsProcessor
и выстроить в нем логику, по которой будет выполняться проверка соответствия и привязка к КЕ.
Остановка
Для остановки расчета порогов по определенному правилу его нужно Остановить соответствующей кнопкой в настройках правила.
При остановке правила, по умолчанию, пользователю предлагается закрыть все открытые ранее пороги по данному правилу.
Удаление правила порога
Удаление правил расчета порогов доступно в настройках правила, в дополнительном меню.
После удаления правила расчета будут закрыты все созданные по данному правилу пороги.
Экспорт/импорт правил порогов
Для удобства настройки логики обработки метрик пользователям доступны функции:
-
Клонирование - создание копии правила порога в текущем пространстве
-
Экспорт - экспорт настроек правила порога в формат
base64
-
Импорт - импорт настроек из формата
base64
в текущее правилоВАЖНОВсе текущие настройки правила будут заменены значениями из импортируемого правила.
Поиск правил порогов
Для поиска необходимого правила порогов среди множества доступных используется функция поиска. Она позволяет находить правила по следующим параметрам:
- Название правила
- Название порога
- ID правила
- Описание
- Название РГ-владельца правила
- Текст запроса
- Аннотации (оба поля)
Фильтрация правил порогов
Также для отображения только релевантных правил порогов доступна функция фильтрации, которая может выполняться по следующим параметрам:
- Статус - фильтр правил порогов по их статусу: Все / Запущены / Остановлены
- Потоки - фильтр по потокам данных, доступных для текущей рабочей группы, с возможностью мультиселекта
Прогнозирование
Функция "Прогнозирование порогов по метрикам" позволяет предсказывать поведение метрик на основе их исторических данных, что дает возможность заранее выявлять потенциальные проблемы, выполнять соответствующие уведомления, обеспечивая инженеров информацией еще до того, как проблемы повлияют на систему. Сервис обучает модель и прогнозирует изменения метрик. При этом он работает независимо от традиционной системы расчета порогов. Прогнозирование не создает новых порогов, а дополняет существующие.
Для включения сервиса прогнозирования требуется раскрыть дополнительные настройки секции "Запрос метрик" и активировать его.
Прогнозы делятся на два типа: Линейный и Сезонный.
Выбирать тип прогноза следует с учетом поведения метрики, поскольку это напрямую влияет на качество прогноза.
Линейный прогноз
Линейный прогноз предполагает построение временного ряда в виде прямой линии.
Для работы с ним необходимо указать параметры:
- Окно вычисления
- На какой период строить прогноз. Минимальное время прогноза - 1 час, максимальное - 30 дней.
- На базе какого по длительности временного интервала строить прогноз (исторические данные). Минимальное время - 1 час, максимальное - 90 дней.
После активации функции на графике автоматически будет добавлен прогнозный ряд.
Все дальнейшие изменения в параметрах прогноза применяются на лету, вызывая пересчет прогноза и перерисовку графика.
Если график имеет признаки сезонности, не стоит использовать линейный прогноз. Иначе качество предсказаний может заметно упасть. Линейный прогноз предназначен для метрик с линейными изменениями.
Сезонный прогноз
Сезонный прогноз предполагает построение временного ряда, учитывая колебания графика в условиях повторяющейся сезонности.
Для работы с ним необходимо указать параметры:
- Окно вычисления
- На какой период строить прогноз. Минимальное время прогноза - 1 час, максимальное - 30 дней.
- На базе какого по длительности временного интервала строить прогноз (исторические данные). Параметр сезонности - это цикличное изменение временного ряда с постоянным периодом. Для выбора доступны следующие виды сезонности:
- Часовая
- Дневная
- Недельная
- Месячная
Для обучения модели и построения сезонного прогноза, исторический временной ряд, находящийся в БД, должен содержать не менее 3-х периодов выбранной сезонности.
Дополнительная информация
Расчет прогноза запускается в следующих случаях:
- Включена опция прогнозирования при:
- Запуске расчета правил порогов
- Изменении уровня открытого порога
- Перерасчете правила порога по времени (зависит от параметра "Частота расчета")
- Изменении настроек прогнозирования
- Если правило порогов было запущено с выключенным прогнозированием, а затем прогнозирование включено
После включения сервиса прогнозирования начинается обучение модели, которая затем будет использоваться для расчета прогноза.
Обучение модели прогнозирования происходит при:
- Первом запуске прогнозирования для порога
- Когда процент ошибки предсказаний временных рядов превышает 5%
Для обучения модели требуется минимум три значения, которые возвращаются после отработки окна вычисления.
Например, если ваш временной ряд содержит метрики за 3 часа, то максимальное значение окна вычисления не должно превышать 1 час.
Прогноз может быть двух видов:
- с сохранением уровня: порог остается на том же уровне на протяжении всего периода прогнозирования (крайнее прогнозное значение не меняется)
- с изменением уровня: порог изменяется в течение прогнозируемого периода. Прогнозное значение при это рассчитывается по следующему алгоритму:
- Вычисляется крайняя прогнозируемая точка на основе заданных настроек
- Ищется первое пересечение прогнозируемого временного ряда с уровнем, на котором находится прогнозируемая крайняя точка
Если крайняя точка не изменяет уровень, пересечение не ищется (сохранение уровня порога) - Полученная точка становится прогнозным значением
Пример: если текущий порог на уровне ОК, а прогноз построен на 3 дня, и график показывает, что через 3 дня крайняя точка будет на уровне Major, но прогнозируемый временной ряд пересекает уровень Major через 2,5 дня, это и будет нашим прогнозным значением.
Рассчитанный прогноз отображается на графике выбранного правила порога, а также в Оперативном центре на вкладке "Пороги".
Прогнозы можно использовать для автоматизации с помощью нового стартового события OnThresholdForecastEvent, который активируется при каждом пересчете порога в соответствии с его Частотой расчета. В его модели имеется ключ Forecast
, в котором содержится информация о новом прогнозе и о прошлом прогнозном значении.
Работа сервиса прогнозирования ресурсоемка и может привести к замедлению работы системы при ее повсеместном использовании.
Привязка порогов к слотам и компонентам
В зависимости от выстроенной логики РСМ, привязывать Пороги к КЕ можно по разным критериям:
- Привязка порога к КЕ и компоненту по умолчанию
- Привязка порога к КЕ с указанием определенного компонента
- Привязка порога к КЕ с указанием слотов компонентов
При этом вне зависимости от выбранных критериев, логика привязки задается через Сценарии автоматизации.
Экран управления Сценариями расположен в разделе меню "Автоматизация" - Сценарии.
Для создания нового Сценария привязки Порогов к КЕ:
-
Нажмите кнопку + Создать сценарий в правом верхнем углу экрана
-
Заполните форму создания сценария:
- Владелец сценария
Рабочая группа, которой принадлежит сценарий автоматизации
- Название
Название сценария должно быть уникальным в рамках Рабочей группы
- Тип
В данном случае необходимо выбрать
ThresholdsProcessor
- Описание (опционально)
- Импорт сценария (опционально)
Импорт готового сценария выполняется в формате
base64
(подробнее в разделе Импорт/экспорт сценария)
- Владелец сценария
-
Напишите свой сценарий привязки
Для операций привязки/отвязки порогов вам потребуются функции:
-
Нажмите кнопку Скомпилировать для применения внесенных изменений
-
Активируйте Сценарий
Если настройка была выполнена верно, Пороги начнут привязываться к слотам и компонентам КЕ по заданному в сценарии алгоритму.
Если по какой-то причине, администратор пространства удалит компонент на типе КЕ, к которому были привязаны пороги - система автоматически привяжет эти пороги к компоненту КЕ по умолчанию.
При изменении названий компонентов КЕ в настройках CMDB - информация о связи порога с компонентом КЕ обновится автоматически.
Посмотреть на готовый пример сценария привязки КЕ к порогам, а также изучить принцип его работы и необходимые настройки, можно по ссылке
Расчетчик (процессор) порогов
Расчет правила производится в указанный пользователем интервал времени в правиле. При расчете производится запрос к хранилищу метрик, согласно выбранных потоков данных и указанного запроса.
Каждый запрос оборачивается в агрегационную функцию, указанную пользователем в настройках правила.
Для каждого полученного временного ряда формируется хэш-идентификатор, при помощи которого производится проверка наличия ранее созданного порога для данного временного ряда.
После выполнения выражения правила, полученный результат сравнивается с таблицей текущих открытых порогов по хэш-идентификатору:
- Если порога с таким хэш-идентификатором нет - создается новый порог
- Если порог с таким хэш-идентификатором есть и уровень критичности совпадает - обновляется время жизни порога
- Если порог с таким идентификатором есть и уровень не совпадает - старый порог закрывается и открывается новый с другим уровнем критичности.
Права доступа к разделу
При помощи ролевой модели Рабочей группы, менеджер проекта может настроить определенные роли пользователей, которым будет доступно:
- Чтение - доступен просмотр всех правил в рамках Рабочей группы
- Редактирование - полный доступ для управления правилами Порогов
- Запрещено - доступ к просмотру правил Порогов запрещен