Подробные счётчики¶
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
«Звук опоздал» и «звука на входе нет» счётчик не различает: смотрите вход стрима.