Перейти к содержимому
Skip to main content

429 quota_exceeded

info

Перевод в процессе / Translation in progress. See русская версия.

Ingestion возвращает HTTP 429 с телом quota_exceeded, как только объём логов или метрик за окно исчерпан. В этом состоянии агент не выбрасывает события: он буферизует их в локальный SQLite spool и ждёт окна разблокировки, честно уважая подсказки backoff от сервера. Ниже — как убедиться, что вы действительно упёрлись в квоту, и как вывести агент из throttle.

Симптом

  • Метрика flaree_ingest_quota_denied_total растёт на backend, её хорошо видно в dashboard.
  • SQLite spool на хосте агента начинает расти (размер файла flaree-spool.db увеличивается с каждым tick-ом отправки).
  • В логах агента journalctl -u flaree-agent появляются записи вида 429 quota_exceeded с полями reset_at и заголовком Retry-After.
  • В dashboard app.flaree.ru соответствующий компонент/агент помечен как throttled, поток данных визуально «замер».

Диагностика

Сначала подтвердите, что backend действительно возвращает 429, и соберите оба источника backoff — тело ответа (reset_at) и заголовок (Retry-After):

journalctl -u flaree-agent | grep -E 'quota_exceeded|Retry-After' | tail -n 10
curl -sS -H "X-Flaree-Token: ${FLAREE_TOKEN}" -X POST https://api.flaree.ru/ingest/logs -d '[]' -o - -w '\nHTTP %{http_code}, Retry-After: %header{retry-after}\n'

Что ожидать в ответе ingestion-шлюза:

  • В теле — JSON с полями error: "quota_exceeded" и reset_at (UTC-timestamp окончания окна квоты).
  • В HTTP-заголовках — Retry-After в секундах, указывающий авторитетный (authoritative) backoff-интервал.

Явное правило приоритета: при одновременном наличии и reset_at, и Retry-After агент ДОЛЖЕН уважать именно Retry-After как authoritative backoff. reset_at в этом случае остаётся справочным полем для UI и логов, но именно Retry-After определяет, когда agent возобновит отправку. Это поведение зафиксировано в AGENTS.md и в Flaree.Ingestion.

Исправление

  1. Проверьте текущую квоту плана в dashboard (app.flaree.ru) — раздел Billing / Usage, колонки logs и metrics за активное окно.
  2. Снизьте объём входящего потока: включите sampling и redact на источниках с самым большим usage, отключите заведомо шумные источники логов.
  3. Если нагрузка легитимна — перейдите на тариф выше или попросите у support временное расширение квоты на окно.
  4. Пока квота не восстановится, ничего делать не нужно: агент автоматически буферизует события в SQLite spool и возобновит отправку после истечения Retry-After (или reset_at, если Retry-After отсутствует).

Ручная проверка, что агент вышел из throttle после шагов выше:

systemctl restart flaree-agent
curl -sS -H "X-Flaree-Token: ${FLAREE_TOKEN}" https://api.flaree.ru/ingest/heartbeat -o /dev/null -w '%{http_code}\n'

Код 200 на heartbeat и отсутствие новых 429 quota_exceeded в journalctl подтверждают, что окно разблокировано.

Связанные страницы