Настройка кастомных метрик и алертов (Prometheus / CloudWatch)

Стандартные метрики не показывают, почему падают заказы или растёт время ответа — вы остаётесь слепыми к реальным проблемам. Мы настраиваем кастомные метрики и алерты в Prometheus и CloudWatch, чтобы вы видели бизнес-показатели и технические узкие места. Наша команда реализует проект под ключ — от аудита до внедрения и последующей поддержки.

Разработка и обслуживание любых видов сайтов:

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Настройка кастомных метрик и алертов (Prometheus / CloudWatch)
Средний
~2-3 дня
Часто задаваемые вопросы

Представьте: ваш интернет-магазин теряет заказы, но метрики CPU и памяти в норме. Где искать проблему? Мы столкнулись с таким кейсом: клиент жаловался на медленную загрузку страницы корзины. После внедрения кастомных метрик мы обнаружили, что время ответа от платёжного шлюза превышало 5 секунд при нагрузке. Стандартные метрики этого не показывали. Кастомные метрики — единственный способ увидеть реальное поведение приложения. Без них вы слепы: инцидент может стоить до 10% выручки за час простоя. В этой статье разберём, какие метрики стоит кастомизировать, как их настроить в Prometheus и CloudWatch, и сколько времени занимает интеграция. Более 5 лет опыта в мониторинге и 50+ проектов подтверждают: кастомные метрики экономят миллионы на инцидентах.

Какие метрики кастомизировать в первую очередь?

Бизнес-метрики: количество созданных заказов в минуту, конверсия checkout воронки, активные пользовательские сессии. Технические метрики: размер очереди обработки задач, cache hit rate, время выполнения конкретных операций, количество ошибок по типу. Внешние зависимости: latency к сторонним API, доступность платёжного шлюза, статус интеграций. Например, конверсия упала с 3% до 1% — метрику conversion_rate мы бы отслеживали и били тревогу. Для быстрого выявления проблем мы также мониторим 99-й перцентиль времени ответа и количество ошибок базы данных (N+1 query).

Как настроить кастомные метрики в Prometheus?

Для инструментирования Python (FastAPI) используем библиотеку prometheus_client:

from prometheus_client import Counter, Histogram, Gauge
from prometheus_fastapi_instrumentator import Instrumentator

# Счётчик
order_counter = Counter(
    'orders_created_total',
    'Total orders created',
    ['status', 'payment_method']
)

# Гистограмма (для percentile)
checkout_duration = Histogram(
    'checkout_duration_seconds',
    'Time spent in checkout process',
    buckets=[0.1, 0.5, 1.0, 2.0, 5.0, 10.0]
)

# Gauge (текущее значение)
queue_size = Gauge(
    'task_queue_size',
    'Current size of processing queue'
)

# Использование в коде
async def create_order(order_data: dict):
    with checkout_duration.time():
        result = await process_order(order_data)
        order_counter.labels(
            status=result.status,
            payment_method=order_data['payment_method']
        ).inc()
    return result

Node.js (prom-client):

const client = require('prom-client')
const httpDuration = new client.Histogram({
  name: 'http_request_duration_ms',
  help: 'Duration of HTTP requests in ms',
  labelNames: ['method', 'route', 'code'],
  buckets: [1, 5, 15, 50, 100, 200, 500, 1000, 2000]
})
app.use((req, res, next) => {
  const end = httpDuration.startTimer()
  res.on('finish', () => {
    end({ method: req.method, route: req.route?.path, code: res.statusCode })
  })
  next()
})

После добавления метрик не забудьте экспортировать их через /metrics endpoint и настроить сбор в prometheus.yml.

Что выбрать: Prometheus или CloudWatch?

Критерий Prometheus CloudWatch
Частота сбора до 10 мс 1 минута (минимум)
Хранение локально (до 15 дней) до 15 месяцев
Сложность настройки выше (нужен свой сервер) ниже (встроен в AWS)
Стоимость бесплатно (свой хостинг) плата за метрики
Гибкость алертов высокая (Alertmanager) средняя (SNS)

Prometheus позволяет собирать метрики с частотой до 10 мс, что в 20 раз быстрее, чем CloudWatch. Однако CloudWatch удобнее для AWS-окружений. Для детального изучения обратитесь к документации Prometheus и CloudWatch.

Prometheus Rules: Recording и Alerting

Для быстрых дашбордов и своевременных уведомлений мы настраиваем recording и alerting rules. Recording rules предрассчитывают сложные выражения (например, job:request_errors:rate5m), что ускоряет запросы в Grafana. Alerting rules запускают уведомления при превышении порогов. Пример конфигурации:

groups:
  - name: app_slo
    interval: 30s
    rules:
      # Recording rule: предрассчитанная метрика ошибок
      - record: job:request_errors:rate5m
        expr: rate(http_requests_total{status=~"5.."}[5m])
      # Alert: высокая ошибка
      - alert: HighErrorRate
        expr: job:request_errors:rate5m > 0.05
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "Error rate {{ $value | humanizePercentage }}"

Alertmanager затем отправляет оповещения в Slack, Telegram или PagerDuty. Это позволяет реагировать за минуты, а не часы.

Как настроить CloudWatch Custom Metrics?

import boto3
cw = boto3.client('cloudwatch')

def put_metric(name: str, value: float, unit: str = 'Count', dimensions: dict = None):
    metric_data = {
        'MetricName': name,
        'Value': value,
        'Unit': unit
    }
    if dimensions:
        metric_data['Dimensions'] = [
            {'Name': k, 'Value': v} for k, v in dimensions.items()
        ]
    cw.put_metric_data(
        Namespace='MyApp/Business',
        MetricData=[metric_data]
    )

# Использование
put_metric('OrdersCreated', 1, 'Count', {'Environment': 'production'})
put_metric('CheckoutDuration', 0.85, 'Seconds', {'PaymentMethod': 'card'})
put_metric('QueueDepth', queue.size(), 'Count')

CloudWatch Alarm на кастомной метрике:

resource "aws_cloudwatch_metric_alarm" "queue_depth" {
  alarm_name = "high-queue-depth"
  comparison_operator = "GreaterThanThreshold"
  evaluation_periods = 3
  metric_name = "QueueDepth"
  namespace = "MyApp/Business"
  period = 60
  statistic = "Maximum"
  threshold = 1000
  alarm_description = "Task queue is backed up"
  dimensions = {
    Environment = "production"
  }
  alarm_actions = [aws_sns_topic.alerts.arn]
  ok_actions = [aws_sns_topic.alerts.arn]
}

Что входит в работу?

Этап Результат
Аудит текущих метрик Отчёт с рекомендациями и экономическими оценками
Выбор инструмента Prometheus или CloudWatch с обоснованием
Инструментирование кода Исходный код метрик (Python, Node.js, Go, Java)
Настройка алертов Alertmanager/SNS + каналы оповещения (Slack, Telegram, email)
Тестирование Нагрузочные тесты, верификация метрик, проверка алертов
Документация и обучение Runbook, дашборды (Grafana / CloudWatch Dashboard), доступы

Как мы настраиваем мониторинг за 3-7 дней?

Мы проходим этапы: аудит текущих метрик, выбор инструмента, написание кода метрик, настройка алертов, тестирование, документация и обучение команды. На выходе вы получаете дашборды Grafana (или CloudWatch Dashboard), оповещения в Slack/Telegram/email и полную документацию. Гарантируем SLA 99.9% на корректную работу метрик. При необходимости интегрируем с существующими системами (PagerDuty, Opsgenie).

Пошаговая инструкция: как добавить первую кастомную метрику

  1. Установите библиотеку prometheus_client (Python) или prom-client (Node.js).
  2. Создайте метрику нужного типа (Counter, Histogram, Gauge).
  3. Инструментируйте код: добавьте вызовы метрики в ключевые точки.
  4. Экспортируйте метрики (например, через /metrics endpoint).
  5. Настройте сбор метрик в Prometheus (добавьте job в prometheus.yml).

Чек-лист: что нужно для настройки

  • Установленный Prometheus или доступ к AWS CloudWatch
  • Библиотеки для инструментирования
  • Доступ к коду приложения
  • Настроенный Alertmanager или SNS топик

Почему кастомные метрики экономят бюджет?

Стандартные метрики (CPU, RAM) не показывают бизнес-показатели. Без кастомных метрик вы тратите часы на поиск несуществующих проблем. Один инцидент, обнаруженный с опозданием на час, может стоить больше, чем год обслуживания мониторинга. Кастомные метрики позволяют сократить среднее время обнаружения (MTTD) с часов до минут, а значит, снизить финансовые потери.

Закажите настройку кастомных метрик — получите полный контроль над производительностью и бизнес-показателями вашего приложения. Свяжитесь с нами для консультации — мы оценим ваш проект за 1 день. Более 50 проектов по мониторингу и 5+ лет опыта гарантируют результат.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060