Настроить алерты для сервиса
Алертинг позволяет следить за изменениями в метриках и отправлять уведомления, когда показатели достигают критических значений. Изменения в метриках отслеживаются с помощью периодически отправляемых запросов — алертов. Когда они достигают пороговых значений, система отправляет уведомление через указанный канал связи. Например, по электронной почте или в мессенджер.
В сервисе Smart Web Security доступны метрики скорости входящих запросов:
load_balancer.smart_web_security.requests_per_second— количество запросов к защищаемому ресурсу в секунду. Это значение соответствует количеству запросов, обработанных профилем безопасности.load_balancer.smart_web_security.arl_requests_per_second— количество запросов к защищаемому ресурсу в секунду, которые обработаны модулем Advanced Rate Limiter.
С помощью меток можно отслеживать запросы к отдельному ресурсу или запросы с определенным результатом проверки, например заблокированные.
Чтобы настроить алертинг:
- Создайте канал уведомлений.
- Выберите метрики и метки для контроля.
- Создайте алерт.
Во всех запросах на получение метрик укажите общие метки:
project=folder__<идентификатор_каталога>.cluster=default.service=__application-load-balancer__.
В метке load_balancer укажите имя балансировщика или прокси-сервера, если защищаете домен. В запросах A и B одного алерта используйте одинаковые значения меток ресурса: балансировщика, профиля безопасности и при необходимости HTTP-роутера и виртуального хоста.
Примеры алертов для выявления аномалий:
Пороги, окно и задержку вычисления из примеров подберите под нагрузку приложения и частоту поступления метрик.
Алерт об увеличении доли заблокированных запросов
Алерт будет срабатывать, когда количество заблокированных запросов составляет 50% и более от общего количества запросов. Такой алерт поможет выявить различные типы атак, например, DDoS-атаки или попытку взлома с использованием ботов.
Обозначим буквами количество входящих запросов в секунду:
A— общее количество запросов.B— количество запросов, заблокированных профилем безопасности.
Настроим алерты:
Bсоставляет 30% отA— предупреждение (Warning);Bсоставляет 50% отA— критический уровень (Alarm).
Создание канала уведомления
-
В консоли управления
выберите каталог. -
Перейдите
в сервис Monium. -
На панели слева выберите
Алерты и SLO → Способы уведомления. -
В правом верхнем углу нажмите Создать
и выберите Канал уведомления. -
Задайте имя канала уведомлений.
-
(Опционально) Укажите уровни алертов, для которых канал будет работать по умолчанию.
-
В поле Метод выберите метод отправки уведомлений.
-
В появившемся поле выберите получателей уведомлений.
Примечание
Чтобы получать уведомления, пользователь должен:
- иметь роль
monium.viewerна каталог, в котором настроен алерт; - в настройках
консоли управления:- в разделе Уведомления на вкладке Категории включить опцию Мониторинг для соответствующего метода отправки;
- указать адрес электронной почты, номер телефона и Telegram-аккаунт или группу.
- иметь роль
-
Нажмите Сохранить.
Выбор метрик для контроля
Для расчета доли заблокированных запросов используйте:
A— метрикаload_balancer.smart_web_security.requests_per_secondсо всеми значениями меткиantirobot_verdict.B— та же метрика с фильтромantirobot_verdict=deny.C— доля заблокированных запросов в процентах:100 * B / A.
При A = 0 доля не определена.
Создание алерта
-
Перейдите
в сервис Monium. -
На панели слева выберите
Алерты и SLO → Алерты. -
Справа сверху нажмите кнопку Создать
и выберитеПользовательский. -
Введите название алерта, например,
exceeding-blocked-requests. -
В блоке Настройки алерта опишите запрос для получения
A:-
Установите курсор в свободном пространстве в поле правее значка и добавьте параметры:
service=Application Load Balancer;name=load_balancer.smart_web_security.requests_per_second;antirobot_verdict=allow;load_balancer=<имя_балансировщика_нагрузки>.
-
Установите курсор в свободном пространстве в поле правее значка , выберите
Преобразование, затем выберите и задайте функцию для обработки данныхreplace_nan(0)— замена пропусков данных на значение0, чтобы график был непрерывным.
-
-
Нажмите Добавить запрос.
-
Опишите запрос для получения
B:-
Укажите данные для сбора:
service=application-load-balancer;name=load_balancer.smart_web_security.requests_per_second;antirobot_verdict=deny;load_balancer=<имя_балансировщика_нагрузки>.
-
Задайте функцию
replace_nan(0).
-
-
Нажмите Добавить запрос.
-
Опишите запрос
Cдля получения долиBотAв процентах:- Нажмите
, чтобы переключиться в текстовый режим редактирования запроса. - В строке запроса введите
100 * B / A.
- Нажмите
-
В блоке Настройки алерта укажите:
- Запрос для проверки —
C. - Функция агрегации —
Все значения. - Warning —
30(предупреждение). - Alarm —
50(критический уровень). - Окно вычисления —
30s. - Задержка вычисления —
15s.
- Запрос для проверки —
-
В блоке Обработка отсутствия данных оставьте значения по умолчанию.
-
(опционально) В блоке Аннотации добавьте информацию, которую следует записывать при срабатывании алерта.
-
В блоке Уведомления добавьте канал для отправки уведомления.
-
Нажмите Создать.
Алерт о высокой скорости легитимных запросов
Обозначим буквами количество входящих запросов в секунду:
A— разрешенных профилем безопасности.B— разрешенных профилем ARL.
Если A близко к B, профиль ARL пропускает большинство запросов, разрешенных профилем безопасности.
Если A значительно превышает B, часть запросов блокируется или направляется на дополнительную проверку профилем ARL. Проверьте характер трафика и настройки ARL: разница сама по себе не означает, что приложение не справляется с нагрузкой.
Чтобы выявить такое превышение скорости, настроим алерты:
AпревышаетBна 30% — предупреждение (Warning);AпревышаетBна 50% — критический уровень (Alarm).
Создание канала уведомления
-
В консоли управления
выберите каталог. -
Перейдите
в сервис Monium. -
На панели слева выберите
Алерты и SLO → Способы уведомления. -
В правом верхнем углу нажмите Создать
и выберите Канал уведомления. -
Задайте имя канала уведомлений.
-
(Опционально) Укажите уровни алертов, для которых канал будет работать по умолчанию.
-
В поле Метод выберите метод отправки уведомлений.
-
В появившемся поле выберите получателей уведомлений.
Примечание
Чтобы получать уведомления, пользователь должен:
- иметь роль
monium.viewerна каталог, в котором настроен алерт; - в настройках
консоли управления:- в разделе Уведомления на вкладке Категории включить опцию Мониторинг для соответствующего метода отправки;
- указать адрес электронной почты, номер телефона и Telegram-аккаунт или группу.
- иметь роль
-
Нажмите Сохранить.
Выбор метрик для контроля
Для сравнения запросов, разрешенных профилями безопасности и ARL, используйте:
A— метрикаload_balancer.smart_web_security.requests_per_secondс фильтромantirobot_verdict=allow.B— метрикаload_balancer.smart_web_security.arl_requests_per_secondс фильтромarl_verdict=allow.C— превышениеAнадBв процентах:100 * (A - B) / B.
Пример применим при B > 0. Если ARL не пропускает ни одного запроса, процент превышения не определен.
Создание алерта
-
Перейдите
в сервис Monium. -
На панели слева выберите
Алерты и SLO → Алерты. -
Справа сверху нажмите кнопку Создать
и выберитеПользовательский. -
Введите название алерта, например,
inbound-over-ARL. -
В блоке Настройки алерта опишите запрос для получения
A:-
Установите курсор в свободном пространстве в поле правее значка и добавьте параметры:
service=Application Load Balancer;name=load_balancer.smart_web_security.requests_per_second;antirobot_verdict=allow;load_balancer=<имя_балансировщика_нагрузки>.
-
Установите курсор в свободном пространстве в поле правее значка и задайте функции для обработки данных:
Комбинирование→series_sum()— сумма значений метрик с разными метками для конкретной точки. В нашем примере метка одна —antirobot_verdict, но для других метрик эта функция будет полезна.Преобразование→replace_nan(0)— замена пропусков данных на значение0, чтобы график был непрерывным.
-
-
Нажмите Добавить запрос.
-
Опишите запрос для получения
B:-
Укажите данные для сбора:
service=application-load-balancer;name=load_balancer.smart_web_security.arl_requests_per_second;arl_verdict=allow;load_balancer=<имя_балансировщика_нагрузки>.
-
Задайте функции
series_sum()иreplace_nan(0).
-
-
Нажмите Добавить запрос.
-
Опишите запрос
Cдля получения разницы междуAиBв процентах:- Нажмите
, чтобы переключиться в текстовый режим редактирования запроса. - В строке запроса введите
100 * abs(A - B) / B.
- Нажмите
-
В блоке Настройки алерта укажите:
- Запрос для проверки —
C. - Функция агрегации —
Все значения. - Warning —
30(предупреждение). - Alarm —
50(критический уровень). - Окно вычисления —
30s. - Задержка вычисления —
15s.
- Запрос для проверки —
-
В блоке Обработка отсутствия данных оставьте значения по умолчанию.
-
(опционально) В блоке Аннотации добавьте информацию, которую следует записывать при срабатывании алерта.
-
В блоке Уведомления добавьте канал для отправки уведомления.
-
Нажмите Создать.