Уведомления и алерты
Нотификация — сообщение о наступившем событии, алерт — её подвид в мониторинге, требующий реакции инженера.
Что такое нотификация
Нотификация (от англ. notification, «уведомление») — сообщение, которое система сама отправляет пользователю или другой системе, когда произошло значимое событие. Ключевое здесь — инициатива на стороне системы: не пользователь спрашивает «что нового», а система сообщает сама. Пришло письмо, списались деньги, закончилось место на диске — все эти сообщения нотификации.
Слово пришло из интерфейсов и прижилось в русском IT-жаргоне как есть; «нотификации» и «уведомления» в разговоре взаимозаменяемы.
Технически доставка бывает двух видов:
- Push — сервер сам инициирует доставку в момент события. Быстро, но требует постоянного соединения или сервиса доставки (APNs, FCM, WebSocket).
- Pull (polling) — клиент периодически спрашивает сервер, нет ли новостей. Проще, но либо запаздывает, либо нагружает сервер лишними запросами.
Пуш-код в обиходе — одноразовый код подтверждения, доставленный push-уведомлением в приложение вместо SMS. Для банков и сервисов это дешевле SMS и безопаснее: код не перехватить подменой SIM. По сути это обычная двухфакторная аутентификация, просто с другим каналом доставки.
Что такое алерт
Алерт (alert, «тревога») — уведомление о проблеме, которое требует чьей-то реакции. Это подвид нотификации, но с жёстким дополнительным условием: на алерт кто-то должен что-то сделать. Если на сообщение реагировать не нужно, это лог или метрика, а не алерт.
| Нотификация | Алерт | |
|---|---|---|
| Повод | Любое событие | Отклонение от нормы |
| Адресат | Пользователь | Дежурный инженер |
| Требует действия | Нет | Да, по определению |
| Пример | «Бэкап завершён» | «Бэкап не выполнялся 26 часов» |
Разница не формальная: как только в канал алертов попадают сообщения «всё хорошо», канал перестают читать — и вместе с шумом пропускают настоящую аварию.
Как устроен алертинг
Схема одинакова у Prometheus, Zabbix и облачных мониторингов:
Метрики / логи / health check
↓
Правило (условие + длительность)
↓
Alert: pending → firing
↓
Маршрутизация: группировка, дедупликация, silence
↓
Каналы: Telegram, email, SMS, звонок, PagerDuty
↓
Эскалация, если не подтвердили за N минут
Правило в Prometheus выглядит так:
groups:
- name: gpu
rules:
- alert: GPUMemoryAlmostFull
expr: nvidia_gpu_memory_used_bytes / nvidia_gpu_memory_total_bytes > 0.95
for: 10m
labels:
severity: warning
annotations:
summary: "VRAM на {{ $labels.instance }} занята более 95% уже 10 минут"
Параметр for здесь — самое важное. Без него алерт сработает на любой секундный всплеск. Условие должно держаться заданное время, иначе это не проблема, а шум.
Severity: как расставлять уровни
| Уровень | Смысл | Куда шлём |
|---|---|---|
| Critical | Сервис недоступен клиентам, горит SLA | Звонок дежурному, ночью тоже |
| Warning | Тренд ведёт к аварии, есть часы на реакцию | Чат команды в рабочее время |
| Info | Полезно знать, реагировать не надо | Лог, дашборд — не в алерты |
Простой критерий разделения: если на сообщение не нужно вставать ночью — это не critical. Если по нему вообще ничего не делают — уровня Info для него не существует, такое правило надо удалять.
Alert fatigue: главная проблема
Усталость от алертов — состояние, когда инженер получает столько уведомлений, что перестаёт их различать и пропускает важное. Это не проблема дисциплины, а проблема настройки: человек физически не может внимательно читать сотое сообщение за смену.
Что помогает:
- Алертить по симптомам, а не по причинам. «Ошибок 5xx больше 5%» полезнее, чем «CPU 90%»: высокая загрузка процессора сама по себе не проблема, если пользователям хорошо.
- Группировка. Упал узел — один алерт, а не сорок от каждого сервиса на нём.
- Дедупликация и silence. Повторы схлопываются, на время плановых работ алерты глушатся заранее.
- Правило одного действия. К каждому алерту привязан runbook — что конкретно делать. Нет ответа — алерт не нужен.
- Регулярная чистка. Правило, которое за квартал сработало 200 раз и ни разу не привело к действию, удаляют.
Каналы доставки
- Чат (Telegram-бот, Rocket.Chat, Slack) — основной канал для warning. Дёшево и мгновенно, но легко тонет в потоке.
- Email — годится для отчётов и info, для критики бесполезен: почту ночью никто не читает.
- SMS и звонок — только для critical. Единственный канал, который реально будит.
- Webhook — универсальный способ отдать алерт в свою систему, тикетницу или автоматику самовосстановления.
- SIEM — куда идут алерты безопасности, там их разбирает SOC.
Практика дежурства: у каждого critical-алерта есть on-call с телефоном и эскалация — если за 10–15 минут никто не подтвердил, звонят следующему в списке. Алерт без адресата бесполезен, даже если технически он корректен.
Связанные термины
- Prometheus — сбор метрик и правила алертов
- Zabbix — классический мониторинг с триггерами и оповещениями
- health check — простейший источник алертов о недоступности
- SLA и отказоустойчивость — что именно защищает алертинг
- APM и трейсинг — где искать причину после срабатывания алерта
- Инцидент ИБ — алерты безопасности и их разбор
Готовы запустить GPU-задачу?
Запустить GPU-сервер