Правила порогов
В данном разделе документации предоставлена информация о работе с правилами обработки метрик и генерации новых объектов в системе Monq - Порогов.
Порог метрики (англ. threshold) - это предельное значение, которое устанавливается для определенной метрики с целью определения критического состояния метрики. Когда значение метрики превышает или достигает установленного порога, это может сигнализировать о проблеме, ошибке, перегрузке или другом важном событии, требующем внимания или реагирования.
Генерация событий по порогам из метрик, с целью дальнейшего прохождения по пайплайну обработки событий дает возможность полноценной обработки метрик внутри Monq.
Пороги генерируются из собираемых метрик в специальном процессоре Monq - mcs-thresholds-service, который запускает правила расчета с определенной периодичностью. Результатом работы процессора могут быть: открытие нового порога, закрытие существующего порога и подтверждение порога.
В случае открытия или закрытия порога на выходе генерируются специальные события, которые далее поступают в основной тракт обработки событий Monq.
События открытия  поступают в маршрутный узел "Автоматона" привязки порога к КЕ - ThresholdsProcessor.
Привязка Порогов происходит автоматически в специальном маршрутном узле "Автоматона" при помощи разработанных пользователями сценариев, с указанием правил привязки по меткам получаемых метрик.
Порог аналогично Сигналу представляет собой короткоживущий объект, у которого есть время начала и время завершения.
Открывать завершённые пороги в Monq не допускается.
Установка подходящих порогов метрик является важным аспектом мониторинга и управления системами. Они должны быть настроены в соответствии с требованиями и характеристиками конкретной системы или приложения. Неправильно установленные пороги метрик могут приводить к ложным предупреждениям или недостаточному обнаружению проблем, поэтому требуется внимательное исследование и настройка для достижения оптимальных результатов.
Управление правилами порогов
Экран управления порогами расположен в разделе меню "Сбор данных (ETL)" - Правила порогов.
Для работы с правилами перейдите в соответствующий раздел.

Создание правила порога
Для создания нового правила расчета порогов нажмите кнопку + Создать правило в правом верхнем углу экрана управления правилами порогов.
Заполните форму создания правила:

- Название правилаНазвание правила должно быть уникальным в рамках Рабочей группы 
- ВладелецРабочая группа, которой принадлежит правило расчета порога 
- Описание (опционально)
- ИмпортКод правила расчета порога в формате base64(подробнее в разделе Экспорт/импорт правил порогов)
После создания правила расчета порогов, его необходимо настроить:

- Настройки правила - Частота расчетаВременной интервал, определяющий, с какой частотой будет производиться расчет правила. По умолчанию: 10 мин
 
- Частота расчета
- Запрос метрик - Потоки данных - Необходимо выбрать как минимум один поток данных - источник метрик 
- Запрос - Запрос значений метрики на языке MetricsQL (PromQL) - Например: - aggregator_openapi_v2_regeneration_count{endpoint="https", instance="10.18.0.100:6443", job="apiserver"}- Чем более подробно указан набор лейблов, тем более точно будет производиться идентификация конкретного вектора. - Если указать просто название метрики: - aggregator_openapi_v2_regeneration_count, то запрос так же будет валиден, но вместо одного вектора, придет набор из нескольких векторовСправка- При необходимости внести изменения в Запрос - Правило необходимо предварительно остановить, чтобы закрылись созданные Пороги. В противном случае открытые Пороги останутся висеть, а новые не смогут их перезаписать. 
- Окно вычисления - Временной период, в котором будет рассчитываться функция агрегации значений метрик. Окно позволяет исключить резкие изменения значения метрик, реагируя только на изменения за больший промежуток времени 
- Функция агрегации - Last (Последнее)- для расчета берет последнее значение вектора
- Average (Среднее)- берет среднее значение вектора
- Max (Максимум)- берет максимальное значение вектора
- Min (Минимум)- берет минимальное значение вектора
- Sum (Сумма)- суммирует все значения вектораСправка- Все функции агрегации применяются к временным рядам в рамках заданного окна расчета 
 - Введенный запрос можно проверить соответствующей кнопкой "Проверить запрос". Будут загружены все попадающие под запрос временные ряды.  
 
- Условия создания порога  - Пользователь системы может задать условия для расчета уровня порога, чтобы разделить полученные значения метрик по степени критичности. - Для настройки условий доступно несколько уровней критичности: - Fatal
- Critical
- Major
- Warning
- Info
 - По-умолчанию, для вновь созданных правил расчета порогов устанавливается статус - Ok.- В качестве дополнительной функции, условия создания порогов, пользователи могут задавать уникальность метрики (правило формирования хэша), по следующим критериям: - По всем меткам метрики (по умолчанию для всех правил)
- По всем меткам, кроме - перечисление меток в соответствующем полеДанные метки, также должны быть исключены из основного запроса правила 
- Только по меткам - перечисление меток в соответствующем поле
 Важно- При изменении настроек правила формирования хэша допускается ситуация, при которой на экране порогов для одного порога будет отображаться несколько графиков, т.к. общий хэш будет уже не у уникальной метрики, а у нескольких метрик одновременно. 
- Настройки порога - Автозакрытие - Время, через которое порог автоматически будет закрыт, если события подтверждения порога не приходят. - Отсчет выполняется с момента открытия/подтверждения порога. 
- Название порога - Допускается использование макросов (указываются в двойных фигурных скобках): - 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.<название метки>- позволяет указать название метки метрики
 - :::tip Справка При отсутствии значения - макрос игнорируется 
- Аннотации - Дополнительные поля порога, которые будут присвоены ему при создании 
 
Запуск/остановка правил порогов
Запуск
После настройки правило расчета порогов можно запустить и начать анализ метрических рядов, поступающих в систему.
Нажмите кнопку Запустить в правом верхнем углу настроек правила, чтобы начать расчет по данному правилу.

Сразу после запуска правила будут проверены подходящие под Запрос метрические ряды и сгенерированы пороги в соответствии с условиями создания порогов.
По-умолчанию пороги создаются без привязки к каким-либо КЕ.
Чтобы увидеть сгенерированные без привязки к КЕ пороги, на вкладке Пороги панели РСМ активируйте соответствующую настройку фильтра - "Без КЕ - Показать"

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

После удаления правила расчета будут закрыты все созданные по данному правилу пороги.
Экспорт/импорт правил порогов
Для удобства настройки логики обработки метрик пользователям доступны функции:
- Клонирование - создание копии правила порога в текущем пространстве  
- Экспорт - экспорт настроек правила порога в формат - base64 
- Импорт - импорт настроек из формата - base64в текущее правилоВАЖНО- Все текущие настройки правила будут заменены значениями из импортируемого правила.  
Расчетчик (процессор) порогов
Расчет правила производится в указанный пользователем интервал времени в правиле. При расчете производится запрос к хранилищу метрик, согласно выбранных потоков данных и указанного запроса.
Каждый запрос оборачивается в агрегационную функцию, указанную пользователем в настройках правила.
Для каждого полученного временного ряда формируется хэш-идентификатор, при помощи которого производится проверка наличия ранее созданного порога для данного временного ряда.
После выполнения выражения правила, полученный результат сравнивается с таблицей текущих открытых порогов по хэш-идентификатору:
- Если порога с таким хэш-идентификатором нет - создается новый порог
- Если порог с таким хэш-идентификатором есть и уровень критичности совпадает - обновляется время жизни порога
- Если порог с таким идентификатором есть и уровень не совпадает - старый порог закрывается и открывается новый с другим уровнем критичности.
Права доступа к разделу
При помощи ролевой модели Рабочей группы, менеджер проекта может настроить определенные роли пользователей, которым будет доступно:
- Чтение - доступен просмотр всех правил в рамках Рабочей группы
- Редактирование - полный доступ для управления правилами Порогов
- Запрещено - доступ к просмотру правил Порогов запрещен