From 71f150d1b623f7d64cba7d5e9a0e8b40fef5fbee Mon Sep 17 00:00:00 2001 From: Max Ronzhin Date: Tue, 28 Jul 2026 19:15:38 +0300 Subject: [PATCH] =?UTF-8?q?feat(monitoring):=20=D1=81=D0=BE=D0=B1=D0=B8?= =?UTF-8?q?=D1=80=D0=B0=D1=82=D1=8C=20=D0=BC=D0=B5=D1=82=D1=80=D0=B8=D0=BA?= =?UTF-8?q?=D0=B8=20LiveKit=20=D0=B2=20Prometheus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В `livekit.yaml` порт метрик (6789) объявлен с самого начала, но job'а в Prometheus не было — метрики SFU просто не собирались. Из-за этого разбор нагрузочного теста 28.07.2026 пришлось вести по логам: `container-exporter` показывает CPU, память и суммарный трафик контейнера, но не знает, что внутри этого трафика. Теперь доступны, в частности: - `livekit_track_subscribed_total` / `livekit_track_published_total` — подписки против публикаций, то есть прямой эффект adaptiveStream; - `livekit_participant_total`, `livekit_room_total` — нагрузка в участниках; - `livekit_quality_score`, `livekit_packet_loss_percent`, `livekit_rtt_ms`, `livekit_jitter_us`, `livekit_nack_total`, `livekit_pli_total` — качество связи у клиентов вместо догадок по событиям congestion в логах; - `livekit_webhook_queue_length` — очередь доставки вебхуков в backend. Job включён, а не закомментирован, как `llm`: профиль `media` входит в дефолтный набор COMPOSE_PROFILES. Конфиг проверен `promtool check config`. --- deploy/monitoring/prometheus.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/deploy/monitoring/prometheus.yml b/deploy/monitoring/prometheus.yml index d074dda..9f70fd0 100644 --- a/deploy/monitoring/prometheus.yml +++ b/deploy/monitoring/prometheus.yml @@ -53,6 +53,32 @@ scrape_configs: static_configs: - targets: ["container-exporter:9419"] + # LiveKit SFU (профиль `media`). Порт объявлен в самом LiveKit — + # `deploy/livekit/livekit.yaml.template`, секция `prometheus: port: 6789`; + # наружу он не публикуется, скрейп идёт по имени сервиса внутри docker-сети. + # + # Почему это важно отдельно от `container-exporter`: тот показывает CPU, + # память и суммарный трафик контейнера, но ничего не знает о том, ЧТО внутри + # этого трафика. Разбор нагрузочного теста 28.07.2026 пришлось делать по + # логам именно потому, что job'а здесь не было (см. .forcc/LOAD-FINDINGS.md). + # + # Ключевое, что отсюда появляется: + # livekit_track_subscribed_total / livekit_track_published_total — + # подписки против публикаций, то есть прямой эффект adaptiveStream; + # livekit_participant_total, livekit_room_total — нагрузка в участниках; + # livekit_quality_score, livekit_packet_loss_percent, livekit_rtt_ms, + # livekit_jitter_us, livekit_nack_total, livekit_pli_total — качество + # связи у клиентов, а не догадки по событиям congestion в логах; + # livekit_webhook_queue_length, livekit_webhook_dispatch_total — очередь + # доставки вебхуков в backend (на тесте она росла до 56 секунд). + # + # Профиль `media` входит в дефолтный набор COMPOSE_PROFILES (см. .env.example), + # поэтому job включён, а не закомментирован, как `llm`. На инсталляции без + # профиля `media` таргет не резолвится — закомментируйте секцию. + - job_name: livekit + static_configs: + - targets: ["livekit:6789"] + # Локальный LLM-сервер (llama.cpp, LLAMA_ARG_ENDPOINT_METRICS=1). Адрес # `llm:8080` разрешается ОДНИМ из двух compose-сервисов в зависимости от # выбранного при установке пресета — `llm` (CPU, профиль `llm`, уровни