Представьте: за ночь упала конверсия checkout'а на 40%, а технический мониторинг молчит — CPU в норме, latency в норме. Только утром CEO видит цифры в Google Analytics и теряет выручку. Custom alerting rules по бизнес-метрикам решают эту проблему: вы узнаёте о падении заказов или росте ошибок оплаты через 5 минут. Мы настроили такие алерты для десятков e-commerce, SaaS и контентных проектов. Подход прост: инструментируем код прометеевскими метриками, задаём пороги с учётом сезонности и настраиваем маршрутизацию в Slack или PagerDuty. Результат — время реакции на бизнес-критические проблемы сокращается с часов до минут. По данным исследований, час простоя checkout'а обходится крупному e-commerce в среднем в 500 000 рублей. В этой статье разберём, какие метрики мониторить, как реализовать алерты на Prometheus и CloudWatch, и как не утонуть в ложных срабатываниях.
Какие бизнес-метрики мониторить?
Метрики зависят от типа продукта. Мы выделяем три основные категории.
E-commerce
- Количество завершённых заказов в час (резкое снижение) — критично для выручки
- Конверсия из корзины в оплату — если падает ниже baseline на X%, это сигнал к проверке платёжного шлюза
- Объём выручки за скользящий час — помогает быстро обнаружить аномалии
- Количество ошибок при оплате — важно для технической команды
SaaS
- Регистрации новых пользователей (нулевые за последние N часов) — сигнал о сбое в процессе sign-up
- Активные пользователи онлайн — неожиданный провал может указывать на проблему с API
- API-запросы от ключевых клиентов — аномальный рост или падение
Контентные проекты
- Просмотры страниц — резкое снижение = SEO или CDN проблема
- Bounce rate — резкий рост может говорить о медленной загрузке
- Формы отправленные — нулевые за N часов указывают на баг в форме
| Тип проекта | Метрика | Порог срабатывания | Действие |
|---|---|---|---|
| E-commerce | Orders завершённых | 0 за 30 мин в час пик | Проверить платёжный шлюз, CDN |
| E-commerce | Конверсия checkout | < 30% (было 60%) | Проверить воронку, баги формы оплаты |
| SaaS | Регистрации | 0 за 60 мин | Проверить процесс аутентификации, базу |
| Контент | Просмотры страниц | -50% за час | Проверить CDN, SEO-трафик, серверную нагрузку |
Как мы реализуем алерты на бизнес-метрики
Мы используем два основных подхода: Prometheus (для self-hosted) и CloudWatch (для AWS). Выбор зависит от вашей инфраструктуры. По опыту, Prometheus даёт больше гибкости в кастомизации, а CloudWatch лучше интегрирован с Lambda и API Gateway.
Реализация через Prometheus
Инструментируем код с помощью Prometheus client:
from prometheus_client import Counter, Histogram
orders_completed = Counter(
'orders_completed_total',
'Total completed orders',
['payment_method', 'product_category']
)
order_value = Histogram(
'order_value_rub',
'Order value in rubles',
buckets=[100, 500, 1000, 2500, 5000, 10000, 25000, 50000]
)
payment_errors = Counter(
'payment_errors_total',
'Payment processing errors',
['error_code', 'payment_provider']
)
Alerting rules для бизнес-метрик:
groups:
- name: business_alerts
rules:
- alert: NoOrdersReceived
expr: |
(
rate(orders_completed_total[30m]) == 0
and
hour() >= 9 and hour() <= 22
)
for: 5m
labels:
severity: critical
team: business
annotations:
summary: "No orders completed in last 30 minutes during business hours"
runbook_url: "https://wiki.company.com/runbooks/no-orders"
- alert: ConversionDropped
expr: |
rate(orders_completed_total[1h])
/
rate(cart_checkout_started_total[1h])
< 0.3
for: 15m
labels:
severity: warning
annotations:
summary: "Checkout conversion dropped to {{ $value | humanizePercentage }}"
- alert: PaymentErrorRateHigh
expr: |
rate(payment_errors_total[5m]) > 0.5
for: 3m
labels:
severity: critical
annotations:
summary: "{{ $value }} payment errors/sec — potential payment gateway issue"
Реализация через CloudWatch (AWS)
Для AWS-проектов используем CloudWatch. Код инструментируется через SDK (boto3) — отправка метрик OrdersCompleted и OrderRevenue с размерностями PaymentMethod и Environment. Alerting rules задаются Terraform:
resource "aws_cloudwatch_metric_alarm" "no_orders" {
alarm_name = "no-orders-30min"
comparison_operator = "LessThanThreshold"
evaluation_periods = 1
metric_name = "OrdersCompleted"
namespace = "MyApp/Business"
period = 1800
statistic = "Sum"
threshold = 1
treat_missing_data = "breaching"
dimensions = {
Environment = "production"
}
alarm_description = "No orders in 30 minutes"
alarm_actions = [aws_sns_topic.critical_alerts.arn]
}
Как настроить алерты для сезонных метрик?
Фиксированные пороги плохо работают для метрик с сезонностью. В пятницу вечером заказов в 3 раза больше, чем в понедельник утром. CloudWatch Anomaly Detection строит прогноз на основе исторических данных и срабатывает только при отклонении за пределы полосы. В наших проектах это снижает количество ложных срабатываний на 70%.
resource "aws_cloudwatch_metric_alarm" "orders_anomaly" {
alarm_name = "orders-anomaly"
comparison_operator = "LessThanLowerOrGreaterThanUpperThreshold"
evaluation_periods = 2
threshold_metric_id = "e1"
metric_query {
id = "e1"
expression = "ANOMALY_DETECTION_BAND(m1, 2)"
return_data = true
}
metric_query {
id = "m1"
return_data = false
metric {
metric_name = "OrdersCompleted"
namespace = "MyApp/Business"
period = 300
stat = "Sum"
}
}
}
Маршрутизация бизнес-алертов
Бизнес-алерты не должны будить разработчика ночью. Мы настраиваем маршрутизацию через Alertmanager: алерты с меткой team=business и severity=critical уходят в Slack, а PaymentErrorRateHigh — в PagerDuty, так как это техническая проблема.
routes:
- match:
team: business
severity: critical
receiver: business-slack
- match:
team: business
alertname: PaymentErrorRateHigh
receiver: pagerduty-oncall
Дополнительные настройки: группы уведомлений и временные окна
Для предотвращения шума настраиваем группировку одинаковых алертов в один тикет с интервалом 5 минут, а также задаём временные окна для уведомлений: в нерабочее время алерты с severity=warning просто логируются.
Почему бизнес-алерты дают ложные срабатывания? Как это исправить
Ложные срабатывания — главная головная боль мониторинга. Они заставляют игнорировать предупреждения. Несколько правил:
- Используйте anomaly detection вместо фиксированных порогов для метрик с сезонностью.
- Добавляйте временные окна "for" (например, 5 минут) — кратковременные скачки не вызывают алерт.
- Для некритичных алертов (конверсия упала на 10%) используйте низкий приоритет, чтобы не перегружать ответственных.
- Регулярно ревьюйте алерты по историческим данным и отключайте бесполезные.
Что входит в работу
- Инструментирование кода метриками (2–4 дня)
- Настройка alerting rules и маршрутизации (1–2 дня)
- Anomaly Detection для сезонных метрик (1 день)
- Бизнес-дашборд в Grafana (1–2 дня)
- Документация по метрикам и алертам
- Обучение команды работе с бизнес-алертами
- Пост-деплой поддержка: 30 дней сопровождения
Процесс работы
- Аналитика — определяем бизнес-метрики и их baseline, выбираем инструмент (Prometheus, CloudWatch или другое)
- Инструментирование — добавляем метрики в код, настраиваем экспорт
- Alerting rules — пишем правила с учётом сезонности и бизнес-приоритетов
- Маршрутизация — настраиваем уведомления для разных команд и времени суток
- Дашборд — создаём бизнес-дашборд в Grafana с read-only доступом для CEO
- Тест и деплой — тестируем алерты на исторических данных, деплоим в production
Сроки реализации
| Этап | Срок |
|---|---|
| Оценка проекта | Бесплатно за 2 дня |
| Базовая реализация (5–7 метрик) | от 5 рабочих дней |
| Комплексное решение с anomaly detection | от 8 рабочих дней |
Свяжитесь с нами для консультации. Закажите реализацию custom alerting под ключ. Мы имеем опыт настройки мониторинга для e-commerce, SaaS и контентных проектов. Гарантируем стабильную работу и адекватные уведомления без ложных срабатываний.







