Настроить алерты для сервиса
Алертинг позволяет следить за изменениями в метриках и отправлять уведомления, когда показатели достигают критических значений. Изменения в метриках отслеживаются с помощью периодически отправляемых запросов — алертов. Когда они достигают пороговых значений, система отправляет уведомление через указанный канал связи. Например, по электронной почте или в мессенджер.
В сервисе Smart Web Security доступны метрики скорости входящих запросов:
load_balancer.smart_web_security.requests_per_second
— количество запросов к защищаемому ресурсу в секунду. Это значение соответствует количеству запросов, обработанных профилем безопасности.load_balancer.smart_web_security.arl_requests_per_second
— количество запросов к защищаемому ресурсу в секунду, которые обработаны модулем Advanced Rate Limiter.
Можно настроить алерты при достижении метриками определенных порогов скорости. А также использовать метки для расчета метрик по отдельным событиям.
Чтобы настроить алертинг:
- Создайте канал уведомлений.
- Выберите метрики и метки для контроля.
- Создайте алерт.
Рассмотрим примеры создания алертов, которые могут быть полезны для выявления аномалий:
Алерт об увеличении доли заблокированных запросов
Алерт будет срабатывать, когда количество заблокированных запросов составляет 50% и более от общего количества запросов. Такой алерт поможет выявить различные типы атак, например, DDoS или попытку взлома с использованием ботов.
Обозначим буквами количество входящих запросов в секунду:
A
— общее количество запросов.B
— запросов, заблокированных профилем безопасности.
Настроим алерты:
B
составляет 30% отA
— предупреждение (Warning
);B
составляет 50% отA
— критический уровень (Alarm
).
Создание канала уведомления
-
В консоли управления
слева выберите каталог. -
Выберите сервис Monitoring.
-
Выберите раздел Каналы уведомлений.
-
Нажмите Создать канал.
-
Укажите имя канала, метод отправки и получателей.
Примечание
Чтобы получать уведомления, пользователь должен:
- иметь роль
monitoring.viewer
на каталог, в котором настроен алерт. - в настройках
консоли управления:- включить опцию Мониторинг;
- указать адрес электронной почты, номер телефона и Telegram-аккаунт или группу.
- иметь роль
-
Нажмите Создать.
Выбор метрик для контроля
- Величину
A
будем получать с помощью метрикиload_balancer.smart_web_security.requests_per_second
. - Величину
B
будем получать с помощью метрикиload_balancer.smart_web_security.requests_per_second
, отфильтровав по меткеantirobot_verdict
=deny
. - Долю
B
отA
будем вычислять как100 * B / A
и сохранять в значенииC
.
Создание алерта
-
На странице сервиса Monitoring нажмите Создать алерт.
-
Введите название алерта, например,
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
(критический уровень).Окно вычисления
—30 секунд
.Задержка вычисления
—15 секунд
.
-
В блоке Обработка отсутствия данных оставьте значения по умолчанию.
-
(опционально) В блоке Аннотации добавьте информацию, которую следуют записывать при срабатывании алерта.
-
В блоке Уведомления добавьте канал для отправки уведомления.
-
Нажмите Создать.
Алерт о высокой скорости легитимных запросов
Обозначим буквами количество входящих запросов в секунду:
A
— разрешенных профилем безопасности.B
— разрешенных профилем ARL.
В норме величина A
должна быть равна или немного больше B
. То есть количество запросов, разрешенных профилем безопасности, незначительно превышает установленный лимит в ARL. А значит большинство запросов, разрешенных профилем безопасности, достигает вирутального хоста. В этом случае нагрузка на систему находится в пределах нормы.
Значительная разница в количестве запросов означает, что система не справляется с нагрузкой и блокирует потенциально легитимные запросы. Это возможно при недостаточной производительности или атаке. Если такая ситуация наблюдается постоянно, стоит пересмотреть настройки профиля безопасности или лимиты скорости.
Чтобы выявить такое превышение скорости, настроим алерты:
A
превышаетB
на 30% — предупреждение (Warning
);A
превышаетB
на 50% — критический уровень (Alarm
).
Создание канала уведомления
-
В консоли управления
слева выберите каталог. -
Выберите сервис Monitoring.
-
Выберите раздел Каналы уведомлений.
-
Нажмите Создать канал.
-
Укажите имя канала, метод отправки и получателей.
Примечание
Чтобы получать уведомления, пользователь должен:
- иметь роль
monitoring.viewer
на каталог, в котором настроен алерт. - в настройках
консоли управления:- включить опцию Мониторинг;
- указать адрес электронной почты, номер телефона и Telegram-аккаунт или группу.
- иметь роль
-
Нажмите Создать.
Выбор метрик для контроля
- Величину
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
. - Превышение
A
надB
в процентах будем вычислять как100 * abs(A - B) / B
и сохранять в значенииC
.
Создание алерта
-
На странице сервиса Monitoring нажмите Создать алерт.
-
Введите название алерта, например,
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
(критический уровень).Окно вычисления
—30 секунд
.Задержка вычисления
—15 секунд
.
-
В блоке Обработка отсутствия данных оставьте значения по умолчанию.
-
(опционально) В блоке Аннотации добавьте информацию, которую следуют записывать при срабатывании алерта.
-
В блоке Уведомления добавьте канал для отправки уведомления.
-
Нажмите Создать.