Skip to content

Мониторинг

Mcaster всегда собирает полный набор счётчиков. Лицензия и задача определяют лишь то, каким каналом вы их читаете.

Канал Что даёт Доступность
Панель и API мгновенный снимок: что со стримом и его направлениями прямо сейчас всем
Встроенный Prometheus-сервер готовый датасорс Grafana с историей в несколько часов всем
Prometheus-скрейп сырые метрики для вашей TSDB и alertmanager опция «расширенные счётчики»
Retroview облачный мониторинг вендора: месяцы истории, тренды, готовые алерты подписка

Правило выбора простое:

  • «Что происходит сейчас?» — панель или API.
  • «Что происходило последние часы?» — встроенный Prometheus-сервер.
  • «Что было на прошлой неделе и почему упало ночью?» — Retroview.
  • «Хочу свой Prometheus, Grafana и alertmanager» — скрейп.

Что именно смотреть

Разбор счётчиков живёт на задачных страницах, а не здесь:

Встроенный Prometheus-сервер

Внутри Mcaster работает Prometheus-сервер: HTTP API /api/v1/query, /api/v1/query_range, /api/v1/series, /api/v1/labels, /api/v1/label/{name}/values поверх собственного хранилища в памяти. Для Grafana это готовый датасорс — добавьте датасорс типа Prometheus и укажите URL станции. Этими же запросами питаются графики панели.

Ограничения по построению:

  • история — несколько часов, в памяти; после перезапуска хранилище пустое. Это канал «что происходит сейчас», а не архив метрик;
  • PromQL поддержан подмножеством: селекторы с матчерами лейблов, rate/irate/increase, агрегации sum/avg/min/max/count с by()/without(), арифметика, offset. Неподдержанная конструкция возвращает явную ошибку, а не искажённый результат;
  • набор серий базовый; глубина по PID, SRT и RTP приходит с опцией «расширенные счётчики».
# скорость приёма стрима
rate(stream_input_bytes_total{stream="tv1"}[1m])

# ошибки входа за 5 минут по причинам
sum by (cause) (increase(errors_detail_total{name="tv1"}[5m]))

# отдача по каждому направлению
rate(stream_push_bytes_total{stream="tv1"}[1m])

Когда станций несколько, каждая серия несёт лейбл node, а один и тот же дашборд работает и против одной станции, и против управляющего контура: агрегируйте sum without (node) — на одиночной машине лейбла нет, и агрегация ничего не меняет.

Скрейп для своего мониторинга

Опция «расширенные счётчики»

Ручки скрейпа доступны только с этой лицензионной опцией. Без неё используйте встроенный Prometheus-сервер и Retroview.

Метрики в текстовом формате Prometheus:

  • GET /streamer/api-v4/live-metrics — стримы и входы;
  • GET /streamer/api-v4/sessions-metrics — сессии;
  • GET /streamer/api-v4/dvr/metrics — диски и каталог архива;
  • GET /streamer/api-v4/runtime/metrics — процесс и аллокатор.

История хранится у вас и ограничена только retention'ом вашей TSDB; доступна полная глубина, включая метрики по каждому PID, SRT и RTP; алертинг — ваш alertmanager. Счётчики монотонны и переживают наблюдение перезапусков.

Retroview

Retroview — облачный мониторинг вендора. Станция раз в минуту отправляет телеметрию — полный каталог счётчиков, включая всю расширенную детализацию — и Retroview хранит её месяцами. Настраивать на станции ничего не нужно: канал работает вместе с лицензией.

Когда идти туда, а не во встроенный Prometheus-сервер:

  • история и тренды — рост нагрузки за месяцы, планирование мощностей;
  • постмортемы — что было со стримом ночью: телеметрия переживает перезапуски;
  • сверка потребления — счётчики снимаются во времени внешней системой;
  • разбор причин без опции расширенных счётчиков — телеметрия несёт детализацию всегда;
  • готовые алерты — продуктовые правила вместо самодельных.

Логи

Логи структурированные, уровень задаётся переменной RUST_LOG:

journalctl -u mcaster -f

Записи несут имя стрима и целевой модуль, поэтому фильтровать по конкретному стриму можно и без внешнего индексатора. Трейсы экспортируются по OpenTelemetry (OTLP).

Здоровье станции

  • Readiness-проба: GET /streamer/api/v3/monitoring/readiness — для балансировщиков и оркестраторов.
  • Память по частям пайплайна: sum by (part) (stream_memory_bytes) — монотонный рост без роста нагрузки требует разбирательства.