ВозможностиОрганизации
Документация
    Ring Platform

    Децентрализованное самостроящееся будущее

    Войти
    Организации
    Возможности
    Магазин
    Документация
    Концепции платформы
    RING ЭкономикаSonoratek LLCГлобальное влияниеAI встречает Web3
    Начать
    Быстрый стартКалькуляторДорожная карта
    Конфиденциальность|Контакты
    v1.104.21|Sonoratek LLC

    Documentation

    Концепции, ценность и типичные сценарии клонирования — меньше кода.

    Добро пожаловать в Ring
    Краткий справочник
    С чего начать
    Предварительные требования
    Установка
    Первый успех
    Следующие шаги
    Функции
    Store
    Склад и остатки
    Управление вендорами
    Комиссии и расчёты
    SubscriptionConductor
    PaymentConductor
    Интеграция платежей
    Интеграция WayForPay
    Web3 Кошелек
    Реферальные коды (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкинга Токенов
    Entities
    Opportunities
    AI Matcher
    Real-Time Messaging
    Peer Games
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Система Резервирования Имён Пользователей
    Научный редактор
    Notifications
    Push-уведомления через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безопасность и соответствие
    Система локалей
    Мобильный Опыт
    Паттерны Оптимизации Производительности
    Примеры
    Quick Start
    Базовая настройка
    White Label
    Custom Branding
    Интеграция Web3
    Реальные Проекты
    Advanced Features
    Кастомизация
    Руководство по Ringization
    Branding
    Темы оформления
    Features
    Localization
    Настройка токеномики
    Web3
    Token launch jurisdictions
    Интеграции
    Ethereum-кошельки (Wagmi v3)
    Развёртывание
    Self-hosted развёртывание
    Vercel
    Docker
    Конфигурация Окружения
    Мониторинг и аналитика
    Оптимизация производительности
    Резервное копирование и восстановление
    Архитектура
    Data Model
    Security
    Real Time
    Архитектура PaymentConductor
    Бекенд Сервисы
    Интеграция Firebase
    Разработка
    Ring MCP Server

    Быстрый вход (CTO · аудиторы · агенты)

    Приветствие — миссия и аудитории
    Краткий справочник
    С чего начать
    Архитектура и Auth.js
    Режимы бэкенда и базы данных (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безопасность и соответствие требованиям
    ringdom.org — база LegioX
    Исходный код — лицензия MIT (GitHub)

    Documentation

    Концепции, ценность и типичные сценарии клонирования — меньше кода.

    Добро пожаловать в Ring
    Краткий справочник
    С чего начать
    Предварительные требования
    Установка
    Первый успех
    Следующие шаги
    Функции
    Store
    Склад и остатки
    Управление вендорами
    Комиссии и расчёты
    SubscriptionConductor
    PaymentConductor
    Интеграция платежей
    Интеграция WayForPay
    Web3 Кошелек
    Реферальные коды (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкинга Токенов
    Entities
    Opportunities
    AI Matcher
    Real-Time Messaging
    Peer Games
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Система Резервирования Имён Пользователей
    Научный редактор
    Notifications
    Push-уведомления через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безопасность и соответствие
    Система локалей
    Мобильный Опыт
    Паттерны Оптимизации Производительности
    Примеры
    Quick Start
    Базовая настройка
    White Label
    Custom Branding
    Интеграция Web3
    Реальные Проекты
    Advanced Features
    Кастомизация
    Руководство по Ringization
    Branding
    Темы оформления
    Features
    Localization
    Настройка токеномики
    Web3
    Token launch jurisdictions
    Интеграции
    Ethereum-кошельки (Wagmi v3)
    Развёртывание
    Self-hosted развёртывание
    Vercel
    Docker
    Конфигурация Окружения
    Мониторинг и аналитика
    Оптимизация производительности
    Резервное копирование и восстановление
    Архитектура
    Data Model
    Security
    Real Time
    Архитектура PaymentConductor
    Бекенд Сервисы
    Интеграция Firebase
    Разработка
    Ring MCP Server

    Быстрый вход (CTO · аудиторы · агенты)

    Приветствие — миссия и аудитории
    Краткий справочник
    С чего начать
    Архитектура и Auth.js
    Режимы бэкенда и базы данных (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безопасность и соответствие требованиям
    ringdom.org — база LegioX
    Исходный код — лицензия MIT (GitHub)

    Documentation

    Концепции, ценность и типичные сценарии клонирования — меньше кода.

    Добро пожаловать в Ring
    Краткий справочник
    С чего начать
    Предварительные требования
    Установка
    Первый успех
    Следующие шаги
    Функции
    Store
    Склад и остатки
    Управление вендорами
    Комиссии и расчёты
    SubscriptionConductor
    PaymentConductor
    Интеграция платежей
    Интеграция WayForPay
    Web3 Кошелек
    Реферальные коды (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкинга Токенов
    Entities
    Opportunities
    AI Matcher
    Real-Time Messaging
    Peer Games
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Система Резервирования Имён Пользователей
    Научный редактор
    Notifications
    Push-уведомления через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безопасность и соответствие
    Система локалей
    Мобильный Опыт
    Паттерны Оптимизации Производительности
    Примеры
    Quick Start
    Базовая настройка
    White Label
    Custom Branding
    Интеграция Web3
    Реальные Проекты
    Advanced Features
    Кастомизация
    Руководство по Ringization
    Branding
    Темы оформления
    Features
    Localization
    Настройка токеномики
    Web3
    Token launch jurisdictions
    Интеграции
    Ethereum-кошельки (Wagmi v3)
    Развёртывание
    Self-hosted развёртывание
    Vercel
    Docker
    Конфигурация Окружения
    Мониторинг и аналитика
    Оптимизация производительности
    Резервное копирование и восстановление
    Архитектура
    Data Model
    Security
    Real Time
    Архитектура PaymentConductor
    Бекенд Сервисы
    Интеграция Firebase
    Разработка
    Ring MCP Server

    Быстрый вход (CTO · аудиторы · агенты)

    Приветствие — миссия и аудитории
    Краткий справочник
    С чего начать
    Архитектура и Auth.js
    Режимы бэкенда и базы данных (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безопасность и соответствие требованиям
    ringdom.org — база LegioX
    Исходный код — лицензия MIT (GitHub)
    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Мониторинг и аналитика

    Фильтруйте по Founder / Developer в боковом меню документации. Источники мониторинга: app/api/health, app/api/analytics/*, lib/logger.ts, public/scripts/analytics.js + RingAnalyticsBeacon, и админ-интерфейс аналитики. Отдельной страницы features/analytics нет — эта статья является обзором аналитики во всём Ring.

    Ring Platform сохраняет собственную телеметрию в PostgreSQL (JSONB), предоставляет эндпоинт для проверки состояния контейнера, а также структурированные серверные логи. Сторонние APM (Sentry, Vercel Analytics) опциональны через переменные окружения и не обязательны для базовой работы.

    Уровни мониторинга (реализовано)

    УровеньМеханизмОсновной сигнал
    LivenessGET /api/health (+ HEAD)Процесс активен, предупреждения env, память
    UX-производительностьWebVitalsProvider → POST /api/analytics/web-vitalsLCP, CLS, INP, TTFB, FCP
    События продуктаanalytics.js + RingAnalyticsBeacon → POST /api/analytics/appСессии, загрузки страниц, кастомные события (analytics_events)
    Публичные профилиrecordPersonalPageView → personal_page_viewУникальные визиты 24ч/7д по ролям на /{username}
    Клиентские ошибкиPOST /api/analytics/errorsStacktrace, компонент, уровень важности
    Админ-панель/admin/analyticsgetPlatformAnalytics(), включая personalPages
    Realtime connectivity/api/tunnel/ping, /api/tunnel/heartbeatЗадержка туннеля, состояние сессии
    Серверные логиlib/logger.tsJSON строки в stdout (LOG_LEVEL)
    Опциональная инфраструктураDocker-профиль monitoringPrometheus + Grafana (только локально)

    Зачем операторам нужен мониторинг

    Клон Ring сочетает авторизацию, маркетплейс-данные, платежи и уведомления в реальном времени. Тихие сбои проявляются как “сайт грузится, но заказы не синхронизируются” — не красная ошибка. Уникальные посещения личных страниц показывают, востребованы ли профили участников без учёта просмотров владельцем.

    На что смотреть оператору (без кода)

    Эндпоинт проверки здоровья

    Проверяйте GET /api/health балансёром или сервисом мониторинга: 503 означает Degraded (часто отсутствует AUTH_SECRET).

    Админ-аналитика

    Admin → Analytics: количество пользователей, медианы Web Vitals, последние клиентские ошибки и личные страницы (топ-профили и разрез по ролям).

    Публичные профили

    Архитектура

    Поток собственной аналитики

    Health check — app/api/health/route.ts

    Возвращает JSON: status (healthy | degraded | unhealthy), аптайм, память, определяет services.database (postgresql или firebase), опциональный блок контейнера. Отсутствие AUTH_SECRET = degraded + HTTP 503.

    Клиентский маяк (верифицируемый)

    КомпонентПуть
    Скриптpublic/scripts/analytics.js — батчит в POST /api/analytics/app через sendBeacon / fetch; API: window.ringAnalytics
    Интеграция в приложенииcomponents/providers/ring-analytics-beacon.tsx — подключает скрипт, вызывает pageView при изменениях pathname/searchParams
    Монтированиеcomponents/providers/app-client-shell.tsx

    Легаси public/scripts/app-analytics.js в репо есть, но как рабочий источник — не документируйте его.

    Связанные материалы

    Related documentation

    Public Profile Pages

    По этому же процессу: уникальные визиты personal_page_view и фильтрация владельцев.

    Backup & Recovery

    Далее: восстановление после выявленных инцидентов.

    Performance Optimization

    См. также: оптимизация Web Vitals и performance-операции.

    Environment Configuration

    Зависит от: CRON_SECRET, LOG_LEVEL, ANALYTICS_DISABLE_STORAGE и, при необходимости, Sentry.

    1. Документация
    2. /Развёртывание
    3. /Мониторинг и аналитика

    Обновлено 22 авг. 2026 г.5 мин прослушивания

    Мониторинг и аналитика

    Фильтруйте по Founder / Developer в боковом меню документации. Источники мониторинга: app/api/health, app/api/analytics/*, lib/logger.ts, public/scripts/analytics.js + RingAnalyticsBeacon, и админ-интерфейс аналитики. Отдельной страницы features/analytics нет — эта статья является обзором аналитики во всём Ring.

    Ring Platform сохраняет собственную телеметрию в PostgreSQL (JSONB), предоставляет эндпоинт для проверки состояния контейнера, а также структурированные серверные логи. Сторонние APM (Sentry, Vercel Analytics) опциональны через переменные окружения и не обязательны для базовой работы.

    Уровни мониторинга (реализовано)

    УровеньМеханизмОсновной сигнал
    LivenessGET /api/health (+ HEAD)Процесс активен, предупреждения env, память
    UX-производительностьWebVitalsProvider → POST /api/analytics/web-vitalsLCP, CLS, INP, TTFB, FCP
    События продуктаanalytics.js + RingAnalyticsBeacon → POST /api/analytics/appСессии, загрузки страниц, кастомные события (analytics_events)
    Публичные профилиrecordPersonalPageView → personal_page_viewУникальные визиты 24ч/7д по ролям на /{username}
    Клиентские ошибкиPOST /api/analytics/errorsStacktrace, компонент, уровень важности
    Админ-панель/admin/analyticsgetPlatformAnalytics(), включая personalPages
    Realtime connectivity/api/tunnel/ping, /api/tunnel/heartbeatЗадержка туннеля, состояние сессии
    Серверные логиlib/logger.tsJSON строки в stdout (LOG_LEVEL)
    Опциональная инфраструктураDocker-профиль monitoringPrometheus + Grafana (только локально)

    Зачем операторам нужен мониторинг

    Клон Ring сочетает авторизацию, маркетплейс-данные, платежи и уведомления в реальном времени. Тихие сбои проявляются как “сайт грузится, но заказы не синхронизируются” — не красная ошибка. Уникальные посещения личных страниц показывают, востребованы ли профили участников без учёта просмотров владельцем.

    На что смотреть оператору (без кода)

    Эндпоинт проверки здоровья

    Проверяйте GET /api/health балансёром или сервисом мониторинга: 503 означает Degraded (часто отсутствует AUTH_SECRET).

    Админ-аналитика

    Admin → Analytics: количество пользователей, медианы Web Vitals, последние клиентские ошибки и личные страницы (топ-профили и разрез по ролям).

    Публичные профили

    Архитектура

    Поток собственной аналитики

    Health check — app/api/health/route.ts

    Возвращает JSON: status (healthy | degraded | unhealthy), аптайм, память, определяет services.database (postgresql или firebase), опциональный блок контейнера. Отсутствие AUTH_SECRET = degraded + HTTP 503.

    Клиентский маяк (верифицируемый)

    КомпонентПуть
    Скриптpublic/scripts/analytics.js — батчит в POST /api/analytics/app через sendBeacon / fetch; API: window.ringAnalytics
    Интеграция в приложенииcomponents/providers/ring-analytics-beacon.tsx — подключает скрипт, вызывает pageView при изменениях pathname/searchParams
    Монтированиеcomponents/providers/app-client-shell.tsx

    Легаси public/scripts/app-analytics.js в репо есть, но как рабочий источник — не документируйте его.

    Связанные материалы

    Related documentation

    Public Profile Pages

    По этому же процессу: уникальные визиты personal_page_view и фильтрация владельцев.

    Backup & Recovery

    Далее: восстановление после выявленных инцидентов.

    Performance Optimization

    См. также: оптимизация Web Vitals и performance-операции.

    Environment Configuration

    Зависит от: CRON_SECRET, LOG_LEVEL, ANALYTICS_DISABLE_STORAGE и, при необходимости, Sentry.

    1. Документация
    2. /Развёртывание
    3. /Мониторинг и аналитика

    Обновлено 22 авг. 2026 г.5 мин прослушивания

    Мониторинг и аналитика

    Фильтруйте по Founder / Developer в боковом меню документации. Источники мониторинга: app/api/health, app/api/analytics/*, lib/logger.ts, public/scripts/analytics.js + RingAnalyticsBeacon, и админ-интерфейс аналитики. Отдельной страницы features/analytics нет — эта статья является обзором аналитики во всём Ring.

    Ring Platform сохраняет собственную телеметрию в PostgreSQL (JSONB), предоставляет эндпоинт для проверки состояния контейнера, а также структурированные серверные логи. Сторонние APM (Sentry, Vercel Analytics) опциональны через переменные окружения и не обязательны для базовой работы.

    Уровни мониторинга (реализовано)

    УровеньМеханизмОсновной сигнал
    LivenessGET /api/health (+ HEAD)Процесс активен, предупреждения env, память
    UX-производительностьWebVitalsProvider → POST /api/analytics/web-vitalsLCP, CLS, INP, TTFB, FCP
    События продуктаanalytics.js + RingAnalyticsBeacon → POST /api/analytics/appСессии, загрузки страниц, кастомные события (analytics_events)
    Публичные профилиrecordPersonalPageView → personal_page_viewУникальные визиты 24ч/7д по ролям на /{username}
    Клиентские ошибкиPOST /api/analytics/errorsStacktrace, компонент, уровень важности
    Админ-панель/admin/analyticsgetPlatformAnalytics(), включая personalPages
    Realtime connectivity/api/tunnel/ping, /api/tunnel/heartbeatЗадержка туннеля, состояние сессии
    Серверные логиlib/logger.tsJSON строки в stdout (LOG_LEVEL)
    Опциональная инфраструктураDocker-профиль monitoringPrometheus + Grafana (только локально)

    Зачем операторам нужен мониторинг

    Клон Ring сочетает авторизацию, маркетплейс-данные, платежи и уведомления в реальном времени. Тихие сбои проявляются как “сайт грузится, но заказы не синхронизируются” — не красная ошибка. Уникальные посещения личных страниц показывают, востребованы ли профили участников без учёта просмотров владельцем.

    На что смотреть оператору (без кода)

    Эндпоинт проверки здоровья

    Проверяйте GET /api/health балансёром или сервисом мониторинга: 503 означает Degraded (часто отсутствует AUTH_SECRET).

    Админ-аналитика

    Admin → Analytics: количество пользователей, медианы Web Vitals, последние клиентские ошибки и личные страницы (топ-профили и разрез по ролям).

    Публичные профили

    Архитектура

    Поток собственной аналитики

    Health check — app/api/health/route.ts

    Возвращает JSON: status (healthy | degraded | unhealthy), аптайм, память, определяет services.database (postgresql или firebase), опциональный блок контейнера. Отсутствие AUTH_SECRET = degraded + HTTP 503.

    Клиентский маяк (верифицируемый)

    КомпонентПуть
    Скриптpublic/scripts/analytics.js — батчит в POST /api/analytics/app через sendBeacon / fetch; API: window.ringAnalytics
    Интеграция в приложенииcomponents/providers/ring-analytics-beacon.tsx — подключает скрипт, вызывает pageView при изменениях pathname/searchParams
    Монтированиеcomponents/providers/app-client-shell.tsx

    Легаси public/scripts/app-analytics.js в репо есть, но как рабочий источник — не документируйте его.

    Связанные материалы

    Related documentation

    Public Profile Pages

    По этому же процессу: уникальные визиты personal_page_view и фильтрация владельцев.

    Backup & Recovery

    Далее: восстановление после выявленных инцидентов.

    Performance Optimization

    См. также: оптимизация Web Vitals и performance-операции.

    Environment Configuration

    Зависит от: CRON_SECRET, LOG_LEVEL, ANALYTICS_DISABLE_STORAGE и, при необходимости, Sentry.

    1. Документация
    2. /Развёртывание
    3. /Мониторинг и аналитика

    Обновлено 22 авг. 2026 г.5 мин прослушивания

    Владельцы видят статистику уникальных визитов за 24ч и 7д в виджете личной страницы.

    Связка с резервным копированием

    Мониторинг сообщает когда что-то сломалось, резервные дают понять, что можно восстановить.

    Типичные сценарии тревог

    • Health становится degraded — отсутствует критическая переменная окружения после деплоя, проверьте секреты прежде, чем винить Postgres.
    • Рост показателей Web Vitals со значением poor — проблема с CDN, размерами изображений или SSR; сопоставьте с релизом (BUILD_DATE / GIT_COMMIT внутри health JSON, если выставлено).
    • Всплеск в analytics_errors — поломан клиентский бандл или сторонний скрипт; последние сообщения видны в админке.
    • Массовые обрывы туннелей — см. транспорт в реальном времени; часто связано с edge/WSS, а не базой данных.

    Определите кто реагирует на тревоги (оператор или разработчик) и что считается “упавшим” для вашего клона — Ring OSS не включает интеграцию с PagerDuty, вы подключаете проверки к своему провайдеру.

    не используется

    API аналитики

    РоутМетодАутентификацияХранится в
    /api/analytics/web-vitalsPOSTОпциональноweb_vitals
    /api/analytics/web-vitalsGETАдминЗапрос по web_vitals или сводка по ?scope=platform
    /api/analytics/appPOSTОпциональноanalytics_events
    /api/analytics/errorsPOSTОпциональноanalytics_errors
    /api/analytics/errorsGETАдминСписок ошибок
    /api/analytics/devicePOSTСессияuser_device_telemetry
    /api/analytics/platform-statsGETАдминСуммарные показатели: users, entities, opportunities
    /api/analytics/navigationPOSTОпциональноЗаглушка — возвращает { ok: true }, без сохранения

    Реализация: features/analytics/lib/analytics-db.ts (insertAnalyticsEventBatch, insertWebVitalsRecord, insertAnalyticsErrors). Клиент: components/providers/web-vitals-provider.tsx (useReportWebVitals из next/web-vitals), буферизация показателей в один POST раз в ~1.5с (INP заменяет FID).

    События личных страниц

    КомпонентПуть
    Тип событияpersonal_page_view
    Записьfeatures/analytics/lib/personal-page-analytics.ts → recordPersonalPageView
    Вызовapp/[locale]/[username]/page.tsx — владельцы пропускаются
    Виджет владельцаgetPersonalPageViewStats (features/auth/services/personal-page-stats.ts)
    АдминgetPersonalPagePlatformStats → PlatformAnalyticsSummary.personalPages
    Включение в метрикуpersonal_page_view агрегируется с page_view, app_load, docs_page_view в админке

    Подробнее и расчёт уникальности по ролям: Публичные профили.

    Таблицы базы данных

    Включены в data/schema.sql и миграцию 017_ring_analytics_schema.sql:

    • analytics_events — пакетная клиентская телеметрия и серверные строки personal_page_view
    • web_vitals — батчи метрик Web Vitals
    • analytics_errors — клиентские ошибки

    Отключить хранение данных (privacy / нагрузочное тестирование)

    Если указано, роуты только подтверждают приём, но не пишут в базу данных (isAnalyticsStorageDisabled()). Запись персональных страниц также отключается.

    Структурированные логи

    Переменные: LOG_LEVEL (debug | info | warn | error; по умолчанию info в production, warn в development), LOG_SILENT=true для полного молчания. Логи выходят JSON-строками в stdout; в development скрываются шумные JWT/SSE.

    Внешние APM (опционально)

    Добавьте переменные в .env.local.template или docker.env.template:

    • SENTRY_DSN — подключите вашу интеграцию с Sentry Next.js (автоматически не включена)
    • NEXT_PUBLIC_ANALYTICS_ID, VERCEL_ANALYTICS_ID — только для Vercel-хостингов

    Realtime-probes

    РоутНазначение
    POST /api/tunnel/pingАутентифицированный pong c timestamp
    POST /api/tunnel/heartbeatПоддержание соединения

    Подробнее — Tunnel protocol.

    Мониторинг кронов и пайплайнов

    Крон-роуты (/api/cron/*) закрыты без CRON_SECRET. Например, GET /api/cron/email-analytics запускает pipeline email-analytics.

    Опциональный Docker Prometheus + Grafana

    Сервисы: ring-prometheus (:9090), ring-grafana (:3001). Конфиг: docker/prometheus/prometheus.yml.

    Ограничения Prometheus

    Встроенное задание Prometheus обращается к /api/metrics, которого нет в этой версии, и парсит /api/health как JSON (не Prometheus-формат). Используйте как основу для своей реализации.

    Вход в админ-панель

    Серверная страница: app/[locale]/admin/analytics/page.tsx — доступна только при isPlatformAdmin, загружает getPlatformAnalytics('7d') включая personalPages.

    Real Time

    Подробности: туннельные транспорты и heartbeat-механизмы.

    Admin console

    Далее: вход в админку по адресу /admin/analytics.

    Владельцы видят статистику уникальных визитов за 24ч и 7д в виджете личной страницы.

    Связка с резервным копированием

    Мониторинг сообщает когда что-то сломалось, резервные дают понять, что можно восстановить.

    Типичные сценарии тревог

    • Health становится degraded — отсутствует критическая переменная окружения после деплоя, проверьте секреты прежде, чем винить Postgres.
    • Рост показателей Web Vitals со значением poor — проблема с CDN, размерами изображений или SSR; сопоставьте с релизом (BUILD_DATE / GIT_COMMIT внутри health JSON, если выставлено).
    • Всплеск в analytics_errors — поломан клиентский бандл или сторонний скрипт; последние сообщения видны в админке.
    • Массовые обрывы туннелей — см. транспорт в реальном времени; часто связано с edge/WSS, а не базой данных.

    Определите кто реагирует на тревоги (оператор или разработчик) и что считается “упавшим” для вашего клона — Ring OSS не включает интеграцию с PagerDuty, вы подключаете проверки к своему провайдеру.

    не используется

    API аналитики

    РоутМетодАутентификацияХранится в
    /api/analytics/web-vitalsPOSTОпциональноweb_vitals
    /api/analytics/web-vitalsGETАдминЗапрос по web_vitals или сводка по ?scope=platform
    /api/analytics/appPOSTОпциональноanalytics_events
    /api/analytics/errorsPOSTОпциональноanalytics_errors
    /api/analytics/errorsGETАдминСписок ошибок
    /api/analytics/devicePOSTСессияuser_device_telemetry
    /api/analytics/platform-statsGETАдминСуммарные показатели: users, entities, opportunities
    /api/analytics/navigationPOSTОпциональноЗаглушка — возвращает { ok: true }, без сохранения

    Реализация: features/analytics/lib/analytics-db.ts (insertAnalyticsEventBatch, insertWebVitalsRecord, insertAnalyticsErrors). Клиент: components/providers/web-vitals-provider.tsx (useReportWebVitals из next/web-vitals), буферизация показателей в один POST раз в ~1.5с (INP заменяет FID).

    События личных страниц

    КомпонентПуть
    Тип событияpersonal_page_view
    Записьfeatures/analytics/lib/personal-page-analytics.ts → recordPersonalPageView
    Вызовapp/[locale]/[username]/page.tsx — владельцы пропускаются
    Виджет владельцаgetPersonalPageViewStats (features/auth/services/personal-page-stats.ts)
    АдминgetPersonalPagePlatformStats → PlatformAnalyticsSummary.personalPages
    Включение в метрикуpersonal_page_view агрегируется с page_view, app_load, docs_page_view в админке

    Подробнее и расчёт уникальности по ролям: Публичные профили.

    Таблицы базы данных

    Включены в data/schema.sql и миграцию 017_ring_analytics_schema.sql:

    • analytics_events — пакетная клиентская телеметрия и серверные строки personal_page_view
    • web_vitals — батчи метрик Web Vitals
    • analytics_errors — клиентские ошибки

    Отключить хранение данных (privacy / нагрузочное тестирование)

    Если указано, роуты только подтверждают приём, но не пишут в базу данных (isAnalyticsStorageDisabled()). Запись персональных страниц также отключается.

    Структурированные логи

    Переменные: LOG_LEVEL (debug | info | warn | error; по умолчанию info в production, warn в development), LOG_SILENT=true для полного молчания. Логи выходят JSON-строками в stdout; в development скрываются шумные JWT/SSE.

    Внешние APM (опционально)

    Добавьте переменные в .env.local.template или docker.env.template:

    • SENTRY_DSN — подключите вашу интеграцию с Sentry Next.js (автоматически не включена)
    • NEXT_PUBLIC_ANALYTICS_ID, VERCEL_ANALYTICS_ID — только для Vercel-хостингов

    Realtime-probes

    РоутНазначение
    POST /api/tunnel/pingАутентифицированный pong c timestamp
    POST /api/tunnel/heartbeatПоддержание соединения

    Подробнее — Tunnel protocol.

    Мониторинг кронов и пайплайнов

    Крон-роуты (/api/cron/*) закрыты без CRON_SECRET. Например, GET /api/cron/email-analytics запускает pipeline email-analytics.

    Опциональный Docker Prometheus + Grafana

    Сервисы: ring-prometheus (:9090), ring-grafana (:3001). Конфиг: docker/prometheus/prometheus.yml.

    Ограничения Prometheus

    Встроенное задание Prometheus обращается к /api/metrics, которого нет в этой версии, и парсит /api/health как JSON (не Prometheus-формат). Используйте как основу для своей реализации.

    Вход в админ-панель

    Серверная страница: app/[locale]/admin/analytics/page.tsx — доступна только при isPlatformAdmin, загружает getPlatformAnalytics('7d') включая personalPages.

    Real Time

    Подробности: туннельные транспорты и heartbeat-механизмы.

    Admin console

    Далее: вход в админку по адресу /admin/analytics.

    Владельцы видят статистику уникальных визитов за 24ч и 7д в виджете личной страницы.

    Связка с резервным копированием

    Мониторинг сообщает когда что-то сломалось, резервные дают понять, что можно восстановить.

    Типичные сценарии тревог

    • Health становится degraded — отсутствует критическая переменная окружения после деплоя, проверьте секреты прежде, чем винить Postgres.
    • Рост показателей Web Vitals со значением poor — проблема с CDN, размерами изображений или SSR; сопоставьте с релизом (BUILD_DATE / GIT_COMMIT внутри health JSON, если выставлено).
    • Всплеск в analytics_errors — поломан клиентский бандл или сторонний скрипт; последние сообщения видны в админке.
    • Массовые обрывы туннелей — см. транспорт в реальном времени; часто связано с edge/WSS, а не базой данных.

    Определите кто реагирует на тревоги (оператор или разработчик) и что считается “упавшим” для вашего клона — Ring OSS не включает интеграцию с PagerDuty, вы подключаете проверки к своему провайдеру.

    не используется

    API аналитики

    РоутМетодАутентификацияХранится в
    /api/analytics/web-vitalsPOSTОпциональноweb_vitals
    /api/analytics/web-vitalsGETАдминЗапрос по web_vitals или сводка по ?scope=platform
    /api/analytics/appPOSTОпциональноanalytics_events
    /api/analytics/errorsPOSTОпциональноanalytics_errors
    /api/analytics/errorsGETАдминСписок ошибок
    /api/analytics/devicePOSTСессияuser_device_telemetry
    /api/analytics/platform-statsGETАдминСуммарные показатели: users, entities, opportunities
    /api/analytics/navigationPOSTОпциональноЗаглушка — возвращает { ok: true }, без сохранения

    Реализация: features/analytics/lib/analytics-db.ts (insertAnalyticsEventBatch, insertWebVitalsRecord, insertAnalyticsErrors). Клиент: components/providers/web-vitals-provider.tsx (useReportWebVitals из next/web-vitals), буферизация показателей в один POST раз в ~1.5с (INP заменяет FID).

    События личных страниц

    КомпонентПуть
    Тип событияpersonal_page_view
    Записьfeatures/analytics/lib/personal-page-analytics.ts → recordPersonalPageView
    Вызовapp/[locale]/[username]/page.tsx — владельцы пропускаются
    Виджет владельцаgetPersonalPageViewStats (features/auth/services/personal-page-stats.ts)
    АдминgetPersonalPagePlatformStats → PlatformAnalyticsSummary.personalPages
    Включение в метрикуpersonal_page_view агрегируется с page_view, app_load, docs_page_view в админке

    Подробнее и расчёт уникальности по ролям: Публичные профили.

    Таблицы базы данных

    Включены в data/schema.sql и миграцию 017_ring_analytics_schema.sql:

    • analytics_events — пакетная клиентская телеметрия и серверные строки personal_page_view
    • web_vitals — батчи метрик Web Vitals
    • analytics_errors — клиентские ошибки

    Отключить хранение данных (privacy / нагрузочное тестирование)

    Если указано, роуты только подтверждают приём, но не пишут в базу данных (isAnalyticsStorageDisabled()). Запись персональных страниц также отключается.

    Структурированные логи

    Переменные: LOG_LEVEL (debug | info | warn | error; по умолчанию info в production, warn в development), LOG_SILENT=true для полного молчания. Логи выходят JSON-строками в stdout; в development скрываются шумные JWT/SSE.

    Внешние APM (опционально)

    Добавьте переменные в .env.local.template или docker.env.template:

    • SENTRY_DSN — подключите вашу интеграцию с Sentry Next.js (автоматически не включена)
    • NEXT_PUBLIC_ANALYTICS_ID, VERCEL_ANALYTICS_ID — только для Vercel-хостингов

    Realtime-probes

    РоутНазначение
    POST /api/tunnel/pingАутентифицированный pong c timestamp
    POST /api/tunnel/heartbeatПоддержание соединения

    Подробнее — Tunnel protocol.

    Мониторинг кронов и пайплайнов

    Крон-роуты (/api/cron/*) закрыты без CRON_SECRET. Например, GET /api/cron/email-analytics запускает pipeline email-analytics.

    Опциональный Docker Prometheus + Grafana

    Сервисы: ring-prometheus (:9090), ring-grafana (:3001). Конфиг: docker/prometheus/prometheus.yml.

    Ограничения Prometheus

    Встроенное задание Prometheus обращается к /api/metrics, которого нет в этой версии, и парсит /api/health как JSON (не Prometheus-формат). Используйте как основу для своей реализации.

    Вход в админ-панель

    Серверная страница: app/[locale]/admin/analytics/page.tsx — доступна только при isPlatformAdmin, загружает getPlatformAnalytics('7d') включая personalPages.

    Real Time

    Подробности: туннельные транспорты и heartbeat-механизмы.

    Admin console

    Далее: вход в админку по адресу /admin/analytics.