Перейти к основному содержимому

Параметры qf-analytics

Сервис настраивается переменными окружения. Принципы работы, API и экспорт описаны в руководстве по аналитике.

В Helm-чарте несекретные значения задаются в env, а строки подключения — в secrets.sourceDSN и secrets.enrichDSN. Оба значения попадают в Kubernetes Secret, а не в Deployment.

Источник данных​

КлючДефолтНазначение
ANALYTICS_SOURCEpostgresИсточник: postgres или opensearch. Для PostgreSQL строка подключения определяет primary или read-only replica.
ANALYTICS_SOURCE_DSN—Строка подключения. Для PostgreSQL — pgx DSN (postgres://ro_user:***@host:5432/qf). Для OpenSearch — базовый URL (https://user:***@host[:port][/prefix]). Путь в URL считается префиксом reverse proxy, а не именем индекса. Учётной записи достаточно прав на чтение.
ANALYTICS_SOURCE_INDEXqf-events*Индекс или шаблон индексов OpenSearch. Используется только с ANALYTICS_SOURCE=opensearch.
ANALYTICS_ENRICH_DSN—PostgreSQL DSN с правами чтения для сопоставления идентификаторов правил с именами правил и политик при источнике OpenSearch. Без него отчёт показывает rule_id, не строит срез по политикам и не поддерживает фильтры по именам правил и политик. Для источника PostgreSQL не нужен.

Аутентификация и доступ​

КлючДефолтНазначение
ANALYTICS_JWKS_URL—Обязательно. JWKS Control Plane (https://<cp>/.well-known/jwks.json) для проверки RS256 access-токенов. Известный ключ кэшируется на 24 часа; документ JWKS обновляется не чаще раза в 30 секунд. Из этого адреса выводится /auth/validate того же CP с сохранением префикса пути. Проверка прав выполняется без кэша с таймаутом 1 секунда; недоступность CP запрещает выдачу отчёта. Без URL сервис не стартует.
ANALYTICS_ROLESadmin,editor,auditorРоли Control Plane с доступом к отчётам активного tenant, через запятую. Оператор может сузить список. Для остальных ролей API возвращает 403.

Сеть​

КлючДефолтНазначение
ANALYTICS_METRICS_TOKEN—Bearer для операторского GET /metrics. Пустое значение отключает endpoint; неверный токен даёт 401. Метрики содержат UUID всех наблюдаемых tenant. В Helm: secrets.metricsToken.
ANALYTICS_HTTP_ADDR:8090Адрес HTTP-сервера: REST API /api/*, интерфейс /app/, /healthz и /version.

Поиск аномалий в PostgreSQL​

Пороги встроенной эвристики действуют только при ANALYTICS_SOURCE=postgres. Источник OpenSearch вычисляет аномалии своими серверными агрегациями.

КлючДефолтНазначение
ANALYTICS_ANOMALY_SPIKE_MULT3Множитель всплеска: интервал deny отмечается при count > mult × медиана.
ANALYTICS_ANOMALY_MIN_COUNT100Минимальное число событий во всплеске.
ANALYTICS_ANOMALY_MIN_BUCKETS3Минимальное число временных интервалов для анализа.

Ограничения источника​

КлючДефолтНазначение
ANALYTICS_SOURCE_HTTP_TIMEOUT_SECONDS30Тайм-аут одного запроса _search к OpenSearch, в секундах.
ANALYTICS_PG_MAX_WINDOW_HOURS0 — без ограниченияМаксимальный период отчёта для PostgreSQL, в часах. Превышение возвращает 422. Для OpenSearch не действует.

Развёртывание​

Публикация по пути /analytics и установка Helm описаны в руководстве по развёртыванию.

Метрики по tenant​

Analytics экспортирует qf_analytics_http_tenant_requests_total и histogram qf_analytics_http_tenant_request_duration_seconds с labels tenant_id, method, path (шаблон маршрута); счётчик также имеет status. Отказы до успешной проверки scope не получают tenant label. Scrape рекомендуется каждые 10–15 секунд.

Серии удаляются через 45 секунд без успешной проверки доступа на primary CP; фоновая уборка — каждые 5 секунд. Это ограничивает очистку после purge 50 секундами и работает с OpenSearch без подключения к PostgreSQL. После простоя, suspend или archive счётчики также сбрасываются; для скорости используйте rate/increase. Поздний ответ не продлевает срок. История Prometheus подчиняется его retention.