Управление квотами

Отслеживайте и управляйте лимитами использования для ваших приложений Observability.

Что такое квоты

Квоты ограничивают месячное использование:

  • предотвращают неожиданные расходы
  • контролируют объём данных
  • оповещают о высоком использовании

Квоты RUM

Сессии

Уникальные сессии браузера (таймаут 30 минут).

Что засчитывается:

  • новая сессия браузера
  • возврат после 30 минут неактивности
  • другое устройство/браузер

Что не засчитывается:

  • перезагрузки страницы в рамках сессии
  • навигация в SPA
  • переключение вкладок

События

Всего захваченных событий:

  • загрузки страниц
  • Core Web Vitals
  • ошибки
  • клики (если включено)
  • логи консоли (если включено)
  • сетевые запросы (если включено)

Снижение использования:

rum.configure({
  trackInteractions: false,  // Disable clicks
  trackConsole: false,       // Disable console
  trackNetwork: false        // Disable network
});

Хранилище записей (Replay Storage)

Сжатые данные записи сессий (GB).

Средние размеры:

  • простая страница: 50-100KB
  • e-commerce: 200-500KB
  • насыщенный SPA: 500KB-2MB

Снижение использования:

rum.configure({
  sessionReplay: {
    sampleRate: 0.1,  // Record 10%
    blockSelector: '.heavy-element'
  }
});

Квоты OTLP

Спаны

Количество спанов трасс.

Что засчитывается:

  • каждый спан в трассе
  • запросы к базе данных
  • HTTP-запросы
  • пользовательские операции

Снижение использования:

// Sample traces
const sampler = new TraceIdRatioBasedSampler(0.1);

// Filter spans
if (span.name === 'healthcheck') return false;

Логи

Хранилище для структурированных логов (GB).

Снижение использования:

  • логируйте только ошибки/предупреждения в продакшене
  • сэмплируйте высокочастотные логи
  • фильтруйте шумные источники логов

Метрики

Неограниченное число точек метрик (применяются лимиты по хранению).

Хранение:

  • raw: 7 дней
  • агрегация 5min: 30 дней
  • агрегация 1hour: 90 дней
  • агрегация 1day: 1 год

Мониторинг использования

Просмотр в панели

Observability → Apps → [Your App] → Usage

Показывает:

  • потребление за текущий месяц
  • процент использованной квоты
  • прогноз использования на конец месяца
  • исторические тренды

Оповещения об использовании

Настройте оповещения: App Settings → Quotas → Alerts

Срабатывают при:

  • использовании 50% квоты
  • использовании 80% квоты (предупреждение)
  • превышении 100% квоты (критично)

Каналы уведомлений:

  • Email
  • Slack
  • Telegram
  • Webhooks

Превышение квоты

При достижении лимита квоты:

Поведение по умолчанию

Новые данные отклоняются со статусом 429:

{
  "error": "Quota exceeded",
  "quota_type": "rum_sessions",
  "limit": 10000,
  "used": 10000,
  "reset_at": "2024-02-01T00:00:00Z"
}

Использование баланса пополнений

Если доступен баланс пополнений:

  1. автоматическое списание с баланса
  2. продолжение приёма данных
  3. оповещение при низком балансе

См.: Пополнения

Изменение квот

Повышение плана

Планы более высокого уровня включают больше квоты:

План Сессии События Спаны Логи
Free 1,000 10,000 10,000 100MB
Pro 10,000 100,000 100,000 1GB
Business 50,000 500,000 500,000 10GB
Enterprise Custom Custom Custom Custom

Пользовательские квоты

Планы Enterprise поддерживают пользовательские квоты для каждого приложения.

Контакт: [email protected]

Лучшие практики

СТОИТ:

  • настроить оповещения при 80% использования
  • еженедельно отслеживать тренды использования
  • сэмплировать высокочастотные события
  • использовать подходящие периоды хранения

НЕ СТОИТ:

  • ждать превышения квоты
  • логировать всё в продакшене
  • игнорировать паттерны использования
  • ставить квоты слишком низко для трафика

Доступ через API

Запрос использования программно:

curl -H "Authorization: Bearer $API_KEY" \
  https://statusradar.dev/api/observability/apps/{app_id}/usage

Ответ:

{
  "period": "2024-01",
  "quotas": {
    "rum_sessions": { "limit": 10000, "used": 7523, "remaining": 2477 },
    "rum_events": { "limit": 100000, "used": 45201, "remaining": 54799 }
  },
  "overage_handling": "reject",
  "top_up_balance": { "sessions": 5000, "events": 10000 }
}

Следующие шаги