Реализация Custom Alerting Rules (по бизнес-метрикам) для сайта

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Реализация Custom Alerting Rules (по бизнес-метрикам) для сайта
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1217
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1046
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Реализация Custom Alerting Rules (по бизнес-метрикам) для сайта

Технические алерты на CPU и latency важны, но бизнес часто не понимает их значимость. Алерт «Количество завершённых заказов упало на 40% за последние 15 минут» понятен всем — и разработчику, и CEO. Алерты на бизнес-метрики закрывают разрыв между техническим мониторингом и бизнес-последствиями.

Бизнес-метрики для алертинга

Метрики зависят от типа продукта, но типичные категории:

E-commerce:

  • Количество завершённых заказов в час (резкое снижение)
  • Конверсия из корзины в оплату (если < baseline на X%)
  • Объём выручки за скользящий час
  • Количество ошибок при оплате (абсолютное значение)

SaaS:

  • Регистрации новых пользователей (нулевые за последние N часов)
  • Активные пользователи онлайн (неожиданный провал)
  • API-запросы от ключевых клиентов (аномальный рост или падение)

Контентные проекты:

  • Просмотры страниц (резкое снижение = SEO или CDN проблема)
  • Bounce rate (резкий рост)
  • Формы отправленные (нулевые за N часов)

Реализация через Prometheus

Бизнес-события в коде приложения:

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']
)

# В коде оформления заказа
async def complete_order(order_data: dict):
    try:
        result = await payment_gateway.charge(order_data)
        
        orders_completed.labels(
            payment_method=order_data['payment_method'],
            product_category=order_data['category']
        ).inc()
        
        order_value.observe(order_data['total_amount'])
        
    except PaymentError as e:
        payment_errors.labels(
            error_code=e.code,
            payment_provider='stripe'
        ).inc()
        raise

Alerting Rules для бизнес-метрик:

groups:
  - name: business_alerts
    rules:
      # Нет заказов за 30 минут в рабочие часы
      - 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  # Конверсия упала ниже 30% (была ~60%)
        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)

import boto3
from datetime import datetime

cw = boto3.client('cloudwatch')

def track_order_completed(order_amount: float, payment_method: str):
    cw.put_metric_data(
        Namespace='MyApp/Business',
        MetricData=[
            {
                'MetricName': 'OrdersCompleted',
                'Value': 1,
                'Unit': 'Count',
                'Dimensions': [
                    {'Name': 'PaymentMethod', 'Value': payment_method},
                    {'Name': 'Environment', 'Value': 'production'}
                ]
            },
            {
                'MetricName': 'OrderRevenue',
                'Value': order_amount,
                'Unit': 'None',
                'Dimensions': [
                    {'Name': 'Environment', 'Value': 'production'}
                ]
            }
        ]
    )
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  # 30 минут
  statistic           = "Sum"
  threshold           = 1
  treat_missing_data  = "breaching"  # Отсутствие данных = 0 заказов
  
  dimensions = {
    Environment = "production"
  }
  
  alarm_description = "No orders in 30 minutes"
  alarm_actions     = [aws_sns_topic.critical_alerts.arn]
}

Anomaly Detection для бизнес-метрик

Фиксированные пороги плохо работают для метрик с сезонностью. В пятницу вечером заказов в 3 раза больше, чем в понедельник утром — разные пороги для одного алерта неэффективны.

CloudWatch Anomaly Detection:

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:

routes:
  - match:
      team: business
      severity: critical
    receiver: business-slack  # В Slack #alerts-business, не звонить
    
  - match:
      team: business
      alertname: PaymentErrorRateHigh
    receiver: pagerduty-oncall  # Ошибки оплаты = техническая проблема, будить

Дашборд бизнес-метрик

Отдельный дашборд для бизнеса (read-only доступ через Grafana):

  • Revenue per hour сегодня vs вчера vs прошлая неделя
  • Orders funnel: просмотр → корзина → checkout → оплата
  • Real-time счётчик заказов
  • Аномалии последних 24 часов

Сроки реализации

  • Инструментирование кода метриками — 2-4 дня
  • Alerting rules + маршрутизация — 1-2 дня
  • Anomaly Detection — 1 день
  • Бизнес-дашборд — 1-2 дня