InfraGuard

Оповещения

Создавайте политики групп оповещения, объединяющие системные, веб-, СУБД- и охранные условия; при нарушении они автоматически уведомляют получателей по SMS и электронной почте.

Обзор — что делает этот экран

Инфраструктура ▸ Оповещения (/infra/alert) — это консоль групп оповещения (политик). Оператор добавляет в одну политику (infr_alert_policy) условия из четырёх областей (система / веб / БД / безопасность), настраивает на экране коэффициент каждого порога, и при нарушении получатели группы (infr_alert_recipient) автоматически уведомляются по SMS или электронной почте.

Экран заменяет прежнюю страницу «Ёмкость и оповещения» (/infra/capacity), которая теперь перенаправляет сюда.

Ключевые особенности:

Этот экран управляет только политиками, оповещениями и историей доставки. Графики по каждому серверу см. в разделе Серверы; доступность веб-сервисов — Сервисы ▸ Веб; нагрузку на БД — Сервисы ▸ База данных. Значения порогов по умолчанию задаются в разделе Операционная политика.

Когда использовать

Устройство экрана

Сетка карточек политик

Каждая политика отображается одной карточкой, где сведены её переключатель активности, значок серьёзности, включённые области и число получателей, а также следующие действия:

Действие Описание Доступ
Переключатель активна/на паузе is_active — вычисляет ли её планировщик уровень≥2
Изменить Модальное окно областей, условий, каналов и получателей уровень≥2
Проверить сейчас Немедленно вычислить и отправить эту политику (run) уровень≥2
Тест Немедленно отправить получателям тестовое письмо или SMS (test) уровень≥2
Удалить Удалить политику вместе с получателями уровень≥2
Изменение порядка перетаскиванием Порядок отображения и вычисления (seq, reorder) уровень≥2

Модальное окно изменения (области, условия, каналы, получатели)

Лента последних оповещений

Показывает infr_alert в порядке убывания last_seen, до 60 строк (опрос каждые 30 с). В каждой строке отображаются наблюдаемое значение, порог, сводный count и число успешных отправок из общего (по данным infr_alert_delivery), а также переходы состояния [Подтвердить] и [Закрыть].

Как использовать

1) Создайте политику

  1. [Новая группа оповещения] → введите название, серьёзность и паузу.
  2. Включите области, за которыми хотите наблюдать.
  3. Для каждой области включите условия и настройте коэффициенты порогов. Значения по умолчанию подставляются из alertDefaults() раздела Операционная политика.
  4. Выберите каналы (SMS или почта) и добавьте получателей.
  5. Сохраните.

2) Каталог условий

Система (server_status, окно seq)

Условие Переключатель Коэффициент По умолчанию Формируемая метрика
Средняя нагрузка выше sys_load_on sys_load_max 20 load_avg (>20, по каждому серверу)
Свободное место на диске ниже sys_disk_on sys_disk_free_mb 500 disk_free (<500MB)

Веб (живой HTTP-зонд · infr_web_cert)

Условие Переключатель Коэффициент По умолчанию Формируемая метрика
Сервис недоступен (статус ≠ ожидаемому) web_code_on web_expect_code 200 http_status
Задержка выше web_latency_on web_latency_ms 5000 latency
Скорое истечение сертификата web_cert_on web_cert_hours 48 cert_expiry

Достаточно включить «Скорое истечение сертификата», чтобы наблюдать за сертификатом каждого сайта. Условие работает не по отдельному сайту — это глобальное сканирование всех доменов.

База данных (последняя выборка infr_db_metric)

Условие Переключатель Коэффициент По умолчанию Формируемая метрика
Рост очереди ожидания db_waiting_on db_waiting_max 5 db_waiting (>=5)
Медленные запросы за час db_slow_on db_slow_per_hour 60 db_slow (slow_qps×3600 >= 60)

Безопасность (таблицы обнаружения legacy_glory · составное)

Окно вычисления задаётся параметром sec_window_min (по умолчанию 10 мин). Нарушение возникает, если хотя бы один сигнал превысил свой порог.

Условие Переключатель Коэффициент По умолчанию Источник
Серьёзность IDS + количество sec_ids_on sec_ids_severity, sec_ids_count 2, 20 suricata_alert_ct (серьёзность≥S, количество в окне≥N)
Всплеск блокировок по аномалиям ИИ sec_kitsune_on sec_kitsune_count 5 kitsune_detail_log (is_blocked=1, количество≥N)
Всплеск новых заблокированных IP sec_blacklist_on sec_blacklist_count 10 blacklist_info (новые created_at в окне, количество≥N)

См. также: Угрозы · Обнаружения · Блок-лист.

3) Проверить сейчас / Тест

4) Автоматическое вычисление (расписание)

Активные политики вычисляются и рассылаются автоматически каждую минуту.

Schedule::command('infr:eval-alerts --quiet-if-ok')
    ->everyMinute()
    ->withoutOverlapping(2)
    ->onOneServer()
    ->when($is_leader);

Ручной запуск:

# Вычислить все активные политики (однократный запуск, затем завершение — это не демон)
php artisan infr:eval-alerts

# Только одна политика
php artisan infr:eval-alerts --policy=12

# Подавить вывод, если нарушений нет (значение по умолчанию для планировщика)
php artisan infr:eval-alerts --quiet-if-ok

infr:eval-alerts — это однократная команда, которая завершается (она перебирает политики и возвращает управление). Никогда не превращайте её в демон с бесконечным циклом: запуск из планировщика демона, который никогда не завершается, исчерпывает общие подключения к БД (см. урок утечки подключений pulse:check). Планировщик безопасно запускает новый экземпляр каждую минуту.

Источники данных

Таблицы записи (новые infr_)

Таблица Миграция Роль
infr_alert_policy 000700 Группа оповещения (политика). JSON scopes/targets/conditions/channels + серьёзность, cooldown_min, seq
infr_alert_recipient 000701 Получатели по политике (встроенные). email/phone + via_mail/via_sms/is_active/seq
infr_alert 000702 Экземпляр оповещения (журнал срабатываний / очередь разбора). Ключ дедупликации (policy_id, metric, entity_key, status='open'), пауза по notified_at
infr_alert_delivery 000703 История доставки. channel/address/ok/provider_code/message_id/error/latency_ms

Источники чтения (устаревшие + новые, только чтение)

Процесс дедупликации / паузы / автозакрытия

  1. AlertEvaluator::evaluate($policy) → массив кандидатов на нарушение по каждой активной области. Исключения областей изолированы (сбой одной области не блокирует остальные).
  2. AlertDispatcher::handle($policy, $breaches):
    • Каждое нарушение ищется по (policy_id, metric, entity_key, status=open) → если найдено, выполняется обновление и count++; иначе вставляется новая запись (first_seen, count=1, notified_at=null).
    • Подлежит уведомлению = новое ИЛИ notified_at равно null ИЛИ notified_at <= now - cooldown_min.
    • Автозакрытие: открытые оповещения этой политики, отсутствующие среди нарушений текущего прохода → status='closed'.
    • Пакетная отправка: оповещения, подлежащие уведомлению, объединяются в одно сообщение на каждого получателя и каждый канал (тело не более 8 строк, избыток обозначается «+N more»; SMS усекается до 140 символов). После отправки для каждой цели устанавливается notified_at=now.
    • По одной строке infr_alert_delivery на каждую пару (получатель, канал).

Доступ

Операция Минимальный уровень Аудит
Просмотр консоли/списка/ленты (index/list/feed) 1 (чтение) —
Сохранение/удаление/переупорядочение политики (save/delete/reorder) 2 (запись) alert_policy.create / .update / .delete
Подтверждение/закрытие оповещения 2 alert.ack / alert.closed
Проверить сейчас (run) 2 alert.fire при отправке
Тестовая отправка (test) 2 alert.test
Автоматическая отправка по расписанию (система) alert.fire

Шкала уровней: demo=1 · staff=5 · admin=10. Для чтения требуется уровень≥1; для записи и отправки — уровень≥2. Все разрушающие операции и операции отправки записываются в infr_audit_log (см. Журнал аудита). Поставщиков каналов доставки настраивает администратор (уровень≥10).

Устранение неполадок и часто задаваемые вопросы

В. Я включил условие, но оповещения не приходят.

  1. Убедитесь, что политика активна, а планировщик (schedule:work или супервизор в промышленной среде) запущен.
  2. Нет поставщика канала — обратите внимание на предупреждение на карточке и настройте поставщика по умолчанию в разделе Почтовые адаптеры/SMS-адаптеры.
  3. Проверьте, что пересечение via_mail/via_sms получателя с каналами политики не пусто, а поля электронной почты и телефона заполнены.
  4. Во время паузы повторная отправка подавляется (cooldown_min, по умолчанию 30 мин). Кнопка [Проверить сейчас] позволяет проверить это немедленно, но уже отправленное оповещение будет отправлено повторно только после окончания паузы.

В. Мои условия по БД и системе молчат.

В. Отслеживает ли проверка истечения сертификата только конкретный сайт?

В. Накапливается ли одно и то же нарушение бесконечно?

В. Замедляет ли веб-зонд вычисление?

Связанные разделы

경보 — 정책 카드와 최근 경보 피드
경보 — 정책 카드와 최근 경보 피드