Skip to content

Подробные счётчики

media.probe.counters

Расширенные счётчики

Опция «расширенные счётчики» открывает причинную и протокольную детализацию сразу везде: в секциях input и dvr.write Admin API, в сериях встроенного Prometheus-сервера и в Prometheus-скрейпе. В телеметрию Retroview эти счётчики уходят всегда, независимо от опции, — поэтому разбор причин доступен в Retroview даже без неё.

Причины ошибок входа

Агрегатный errors отвечает «на входе есть проблема»; причинная детализация отвечает «какая именно». Причины двух семей:

  • медиа-дефекты живого потока — lost_packets, broken_payload, desync, ts_pat: данные приходят, но испорчены;
  • отказы источника — connection_closed, connection_refused, timeout, http_request_error, not_found, denied, decode_error, protocol_error, io_error, other: источник умер, и причина смерти классифицирована.

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

Серия детализации

Во встроенном Prometheus-сервере детализация едет одной серией с лейблом причины — errors_detail_total{name, cause}; на central серии несут ещё и node. Причины без единого события серий не заводят.

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

MPEG-TS по каждому PID

По каждому PID транспортного потока: errors_ts_cc (нарушения continuity counter — главный индикатор потерь транспорта), errors_ts_tei, errors_ts_scrambled (не снялось скремблирование — проблемы CAM/ключей), errors_ts_psi_checksum, битые PES, вёдра джиттера PCR, недобор буфера декодера (HRD).

Зачем: это материал мониторинга вещательного класса. Алерт rate(errors_ts_cc) > 0 по каждому PID ловит деградацию транспорта раньше, чем её увидит зритель; джиттер PCR и HRD показывают, переживёт ли поток аппаратный декодер.

SRT

RTT и его вариация, потери и ретрансмиты в обе стороны, дропы по опозданию, заполненность буферов, таймауты keepalive.

Зачем: подбор latency под реальный канал и диагноз «кто теряет — мы или удалённая сторона». Ретрансмиты растут при стабильном RTT — потери на пути; RTT скачет — перегружен канал.

RTP/RTSP по каналам

Потерянные пакеты, скачки и залипания таймстемпов, NACK'и, переполнения буферов — по каждому RTP-каналу (видео/аудио) камеры.

Зачем: диагностика парка камер — какая камера сыплет, ещё до жалоб на артефакты.

Захват с SDI

Счётчики захвата через V4L2 публикуются с префиксом stream_input_sdi_. Базовый уровень включает:

  • Состояние линии — sdi_line_state.

  • Перезапуски захвата — sdi_producer_restarts_total.

  • Потери кадров от карты — sdi_boundary_loss_total, по разрывам нумерации буферов.

Расширенные счётчики добавляют:

  • Причины перезапуска — смена стандарта или отсутствие кадров.

  • Неподдержанные типы и режимы ST 337 — sdi_unsupported_codec_total.

  • Неизвестные данные VANC — sdi_vanc_unknown_total.

  • Данные CDP — число пакетов и пар cc_data.

  • Таймкод — принятые, отклонённые и отсутствующие значения, переключения шкалы времени.

Имена с producer сохранены для совместимости и относятся к захвату V4L2. sdi_boundary_loss_total показывает потери по номерам буферов; разрыв PTS сам по себе не доказывает потерю кадра. Подробнее о приёме SDI.

Производительность записи DVR

segments_written_slow, segments_written_delayed, segments_written_collapsed, segments_discontinuity.

Зачем: ранний сигнал «диск не успевает». Доля slow/delayed растёт при том же трафике — деградирует хранилище; разрывы (discontinuity) означают дыры, которые вы потом увидите в recorded_hours.

Счетчики качества

Что доступно для алертинга:

  • MPEG-TS HLS для приставок: неполные сегменты ts/mux/ и сборки мимо кэша. См. Выдача MPEG-TS HLS.
  • MPEG-TS прием: по каждому PID — CC-ошибки, TEI, скремблированные пакеты, ошибки CRC PSI, битые PES, состояние буфера декодера (HRD).
  • SRT: RTT, потери и ретрансмиты в обе стороны, размеры буферов, таймауты keepalive.
  • Источники (LSI): время на основном/резервном входе, время без данных, ретраи, валидность резервов, расхождение параметров между входами.
  • Сессии: открытые, отклоненные, авторизованные, отказы переавторизации.
  • DVR: место на дисках, счетчики операций, число блобов, занято архивом, прогресс перестройки каталога.
  • Пуши: по каждому пушу — статус с причиной отказа, скорость отправки, байты, ошибки, реконнекты, ретрансмиты SRT/RIST. См. Статистика пушей.
  • Агенты Peeklio: состояние соединений, байты, ошибки.

Выдача MPEG-TS HLS для приставок

Смешанная выдача ts/mux/ собирает каждый сегмент из видео и звука, и на живом краю звук может не успеть. Два счётчика стрима показывают, что зритель получил на самом деле:

Серия Prometheus Что считает Как читать
stream_mpegts_hls_incomplete_segments_total сегменты живого окна, отданные без части звука: звук отстал, пропал на входе, объявлен, но не приходит, или начало его окна уже ушло из живого окна ровный рост — звук входа отстаёт от видео или его нет; одна единица на сегмент варианта, стрим с тремя видео на один отставший кусок звука даёт +3
stream_mpegts_hls_uncached_segments_total сегменты, собранные мимо кэша: набора дорожек нет среди вариантов живого мастера (окно архива поверх живого окна, набор до смены описания стрима, поднабор, который клиент просит сам) ровный рост — приставки играют то, что кэш не держит, и каждая сборка стоит процессора

Обе серии — базового уровня: во встроенном Prometheus-сервере они есть у всех, в скрейпе стримера — с опцией расширенных счётчиков. В Admin API они идут скоростями в секции mpegts_hls статистики стрима (incomplete_segments_rate, uncached_segments_rate); секция есть, если у стрима уже был такой сегмент. В телеметрию Retroview уходит прирост за окно.

# стримы, у которых приставки получают сегменты без звука
rate(stream_mpegts_hls_incomplete_segments_total[5m]) > 0

«Звук опоздал» и «звука на входе нет» счётчик не различает: смотрите вход стрима.