Skip to content

Метрики и наблюдаемость

Наблюдаемость

  • Контроллеры. Все HTTP-хэндлеры проходят через ControllerMetricsMiddleware, который фиксирует source (acp/v1/v2/ext/api), handler, latency (avg/p95) и ошибки. Эти данные видны как в /acp/system/metrics, так и в Prometheus (/metrics).
  • Внешние HTTP-клиенты. Базовый infrahttp.Client обёрнут метриками и ретраями; даже при повторных запросах счётчики http.total_requests/errors/duration_ms_sum остаются актуальными.
  • Фоновые задачи. Планировщик (internal/infrastructure/scheduler) пишет в TaskMetrics количество запусков, ошибки, последнюю длительность и timestamp. Из ACP это отдаётся в секции tasks, а в Prometheus — в marv_task_* метриках.
  • Логи ↔ метрики. Middleware RequestID сохраняет идентификатор в gin.Context и zerolog. Контроллерные метрики добавляют лейблы handler/source/request_id.
  • Экспорт. Помимо JSON-эндпоинта /acp/system/metrics, можно включить /metrics (Prometheus format) через observability.metrics.prometheus_enabled: true. Эндпоинт отдаёт marv_controller_*, marv_task_*, marv_http_client_*.

Команды CI/CD и этапы пайплайна описаны в Сборка и требования.