Параметры qf-analytics
Сервис настраивается переменными окружения. Принципы работы, API и экспорт описаны в руководстве по аналитике.
В Helm-чарте несекретные значения задаются в env, а строки подключения — в
secrets.sourceDSN и secrets.enrichDSN. Оба значения попадают в Kubernetes Secret, а не в
Deployment.
Источник данных
| Ключ | Дефолт | Назначение |
|---|---|---|
ANALYTICS_SOURCE | postgres | Источник: 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_INDEX | qf-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_ROLES | admin,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_MULT | 3 | Множитель всплеска: интервал deny отмечается при count > mult × медиана. |
ANALYTICS_ANOMALY_MIN_COUNT | 100 | Минимальное число событий во всплеске. |
ANALYTICS_ANOMALY_MIN_BUCKETS | 3 | Минимальное число временных интервалов для анализа. |
Ограничения источника
| Ключ | Дефолт | Назначение |
|---|---|---|
ANALYTICS_SOURCE_HTTP_TIMEOUT_SECONDS | 30 | Тайм-аут одного запроса _search к OpenSearch, в секундах. |
ANALYTICS_PG_MAX_WINDOW_HOURS | 0 — без ограничения | Максимальный период отчёта для 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.