Skip to content

Метрики и аналитика

можно. собирает метрики использования фиче-флагов: сколько раз флаг оценивался и какой результат вернул. Метрики визуализируются в веб-панели через sparkline-графики и доступны через REST API.

Как собираются метрики

SDK накапливает счётчики оценок каждого флага в памяти и отправляет их на сервер с заданным интервалом (по умолчанию — 60 секунд):

sequenceDiagram
    participant App
    participant SDK
    participant Server

    loop Оценка флагов
        App->>SDK: isEnabled("new-checkout", ctx)
        SDK-->>App: true/false
        Note over SDK: trueCount++ или falseCount++
    end

    loop Каждые 60 секунд
        SDK->>Server: POST /api/client/metrics
        Note over Server: Сохраняет в flag_metrics
    end

Каждая запись содержит:

ПолеОписание
flagIdID флага
environmentIdID окружения
evaluationTrueCountКоличество возвратов true
evaluationFalseCountКоличество возвратов false
timeBucketВременной интервал (округление до минуты)
instanceIdИдентификатор экземпляра SDK
appNameИмя приложения

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

На странице флага отображается sparkline-график — миниатюрный график, показывающий тренд оценки флага за выбранный период. Зелёная линия — true, серая — false.

При клике на sparkline открывается диалог «Метрики флага» с полным графиком и фильтрами:

ФильтрОписание
ОкружениеDevelopment / Production
ЭкземплярКонкретный instance SDK
ПриложениеИмя приложения
ПериодПоследний час / 24 часа / 7 дней / 30 дней

REST API для метрик

Метрики флага

http
GET /api/v1/flags/{flagId}/metrics
ПараметрТипОписание
environmentIdlongID окружения
instanceIdstringID экземпляра SDK
appNamestringИмя приложения
bash
curl "http://localhost:8080/api/v1/flags/42/metrics?environmentId=3" \
  -H "Authorization: Bearer $JWT_TOKEN"

Ответ:

json
{
  "metrics": [
    {
      "timeBucket": "2026-06-21T13:41:00Z",
      "trueCount": 150,
      "falseCount": 50,
      "instanceId": "instance-1",
      "appName": "web-app"
    }
  ]
}

Метрики проекта

http
GET /api/v1/metrics
ПараметрТипОписание
environmentIdlongID окружения

Возвращает агрегированные метрики по всем флагам проекта.

Отключение метрик

Если метрики не нужны, отключите их в SDK:

java
MozhnoConfig config = MozhnoConfig.builder()
    .appName("my-app")
    .instanceId("instance-1")
    .mozhnoUrl("http://localhost:8080")
    .apiKey("<api-key>")
    .disableMetrics(true)
    .build();

Экспорт метрик через SPI

Через MetricsSinkSpi метрики можно направить во внешние системы:

НазначениеРеализация
PrometheusСтандартный эндпоинт /actuator/prometheus
Datadog, New RelicEnterprise-реализация MetricsSinkSpi
Локальное хранениеJdbcMetricsSinkProvider (по умолчанию)

Что значат метрики

ПаттернИнтерпретация
trueCount растётФлаг включается для всё большей аудитории — роллаут работает
falseCount растёт, trueCount = 0Флаг выключен или никто не подпадает под правила
Резкий скачок falseCountВозможная проблема: флаг внезапно перестал включаться
Нет метрикSDK не отправляет данные — проверьте подключение

Лимиты

ПараметрПо умолчаниюОписание
Интервал отправки (SDK)60 секундsendMetricsInterval / metricsInterval
Макс. метрик на API-ключ1000CLIENT_MAX_METRICS_PER_KEY

Что дальше?

Released under the AGPL v3.0 License.