Skip to content

Наблюдаемость (метрики/логи) ​

ACP: системные метрики ​

Эндпоинт: POST /acp/system/metrics — защищён ACP-авторизацией. Дополнительно можно включить Prometheus endpoint /metrics, установив observability.metrics.prometheus_enabled: true в config.{MODE}.yml. Он отдаёт те же показатели в текстовом формате Prometheus и не требует авторизации.

Возвращает агрегированные метрики:

  • cache: счетчики операций/ошибок/времени (если кэш обёрнут метриками)
  • db: счетчики запросов/ошибок/продолжительности (если БД обёрнута метриками)
  • http: метрики HTTP‑клиента (см. ниже)
  • controllers: latencies контроллеров (per-route, avg/p95, source)
  • tasks: статус и длительности cron‑задач (счётчики запусков, success/fail, p95)
  • host: сведения о системе (платформа, аптайм, ядро, runtime)

Per-handler метрики стримов и traffic-flow отдельной секцией здесь не приходят: их отдаёт блок runtime в ответах /acp/streams/list и /acp/traffic-flows/list — тот же recorder, что и controllers.

Пример:

json
{
  "http": {
    "total_requests": 1234,
    "errors": 12,
    "duration_ms_sum": 456789,
    "buckets_ms": [50,100,200,500,1000,2000,5000],
    "counts": [100,220,400,350,120,30,14] // +Inf - последний элемент
  },
  "host": { "platform": "Ubuntu 22.04", "uptime_sec": 12345, ... }
}

ACP: сводная аналитика (/acp/system/overview) ​

Эндпоинт: POST /acp/system/overview — защищён ACP-авторизацией. Предназначен для дашборда.

Возвращает:

  • users — агрегированная статистика регистраций (total, today, week, month)
  • active_users — DAU и MAU (по last_login_at)
  • snapshot_at — момент, на который посчитан снапшот users/active_users
  • online_now — количество пользователей онлайн: ZCOUNT по набору marv:persist:online_users, окно — app.online_ttl
  • sessions_today — счётчик сессий за сегодня (Redis INCR)
  • cluster — server_id, is_leader, leader_id — состояние кластера
  • memory — RAM сервера (total, used, available, percent)
  • go_memory — память Go-рантайма (alloc, sys, heap, stack, циклы и паузы GC)
  • redis — сводка Redis INFO (memory, clients, uptime)
  • tasks — статусы и метрики всех cron-задач
  • api_metrics / task_metrics / http_metrics — те же снимки, что в /acp/system/metrics
  • server — аптайм процесса (uptime_sec), аптайм ОС (os_uptime_sec), hostname, Go runtime, CPU, горутины

Секции users, active_users и snapshot_at приходят только когда снапшот уже посчитан; memory — только если ОС отдала данные о памяти.

Данные users и active_users кэшируются cron-задачей stats_snapshot (по умолчанию раз в час). Остальные поля вычисляются в реальном времени.

ACP: точка входа (POST /acp/me) ​

Возвращает всю информацию, необходимую для инициализации ACP-панели: текущий оператор (email из HELM-токена), привязанные аккаунты, версия/аптайм сервера, список модулей, платформы, активные маршруты.

HTTP‑метрики: buckets ​

Bucket’ы (мс) для времени HTTP‑запросов настраиваются конфигом:

yaml
observability:
  metrics:
    http_buckets_ms: [50, 100, 200, 500, 1000, 2000, 5000]

Если не заданы - используется дефолтный набор [50,100,200,500,1000,2000,5000]. Даже если поверх HTTP-клиента навешен ретрай-декоратор, он проксирует Stats() базовой реализации, поэтому /acp/system/metrics и /metrics всегда видят агрегированные данные.

Таймауты HTTP‑клиента ​

См. docs/config/main.md, секция app.http.timeouts.*. Таймауты применяются к клиенту, используемому доменными сервисами (Stream, TrafficFlow, IAP и т.д.).