Skip to content

Contadores detalhados

media.probe.counters

Contadores estendidos

A opção de contadores estendidos abre o detalhamento causal e de protocolo em todo lugar ao mesmo tempo: nas seções input e dvr.write da Admin API, nas séries do servidor Prometheus embutido e no scrape do Prometheus. Na telemetria do Retroview esses contadores sempre vão, independentemente da opção — por isso a análise de causas está disponível no Retroview mesmo sem ela.

Causas dos erros de entrada

O errors agregado responde «há um problema na entrada»; o detalhamento causal responde «qual exatamente». As causas vêm em duas famílias:

  • defeitos de mídia de um stream vivo — lost_packets, broken_payload, desync, ts_pat: os dados chegam, mas danificados;
  • falhas da fonte — connection_closed, connection_refused, timeout, http_request_error, not_found, denied, decode_error, protocol_error, io_error, other: a fonte morreu, e a causa da morte está classificada.

A classificação vem da categoria tipada do erro, e não do texto do log, e cobre inclusive a falha ao abrir uma fonte. Cada falha entra também no errors agregado; as falhas repetidas nas tentativas são contadas a cada vez — a frequência de eventos é exatamente o sinal de «a fonte ainda está morta». As paradas normais — reconfiguração, fim do stream, desalojo por uma fonte de maior prioridade — não contam como erros.

A série do detalhamento

No servidor Prometheus embutido o detalhamento viaja como uma série com o rótulo de causa — errors_detail_total{name, cause}; no central as séries levam também node. Causas sem eventos não criam séries.

# erros do stream em 5 minutos, detalhados por causa
sum by (cause) (increase(errors_detail_total{name="tv1"}[5m]))

MPEG-TS por cada PID

Por cada PID do fluxo de transporte: errors_ts_cc (violações de continuity counter — o principal indicador de perdas de transporte), errors_ts_tei, errors_ts_scrambled (a criptografia não foi retirada — problemas de CAM/chaves), errors_ts_psi_checksum, PES quebrados, buckets de jitter do PCR, esvaziamentos do buffer do decodificador (HRD).

Por quê: este é material de monitoramento de nível broadcast. Um alerta sobre rate(errors_ts_cc) > 0 por PID pega a degradação do transporte antes que o espectador a veja; o jitter do PCR e o HRD mostram se o stream sobreviverá a um decodificador de hardware.

SRT

RTT e sua variação, perdas e retransmissões nos dois sentidos, descartes por atraso, enchimento dos buffers, tempos limite de keepalive.

Por quê: ajustar a latency ao canal real e diagnosticar «quem perde — nós ou o lado remoto». As retransmissões crescem com o RTT estável — perdas no caminho; o RTT pula — o canal está congestionado.

RTP/RTSP por canal

Pacotes perdidos, saltos e travamentos dos timestamps, NACKs, transbordamentos de buffer — por cada canal RTP (vídeo/áudio) de uma câmera.

Por quê: diagnóstico do parque de câmeras — qual câmera está falhando, antes de chegarem as reclamações de artefatos.

Captura SDI

Os contadores de captura V4L2 usam o prefixo stream_input_sdi_. O nível básico inclui:

  • Estado da linha — sdi_line_state.

  • Reinícios da captura — sdi_producer_restarts_total.

  • Quadros perdidos da placa — sdi_boundary_loss_total, com base nas lacunas na sequência de buffers.

Os contadores ampliados acrescentam:

  • Causas de reinício — mudança de padrão ou ausência de quadros.

  • Tipos e modos ST 337 não compatíveis — sdi_unsupported_codec_total.

  • Dados VANC desconhecidos — sdi_vanc_unknown_total.

  • Dados CDP — número de pacotes e pares cc_data.

  • Timecode — valores aceitos, rejeitados e ausentes, e mudanças na linha do tempo.

Os nomes com producer são mantidos por compatibilidade e correspondem à captura V4L2. sdi_boundary_loss_total informa perdas pelos números dos buffers; uma lacuna PTS, por si só, não comprova a perda de um quadro. Consulte Captura SDI.

Desempenho de escrita do DVR

segments_written_slow, segments_written_delayed, segments_written_collapsed, segments_discontinuity.

Por quê: um sinal precoce de «o disco não dá conta». A fatia de slow/delayed cresce com o mesmo tráfego — o armazenamento está degradando; discontinuity significa buracos que você verá depois em recorded_hours.

Contadores de qualidade

O que está disponível para alertar:

  • HLS MPEG-TS para set-top boxes: segmentos ts/mux/ incompletos e montagens fora do cache. Veja Entrega de HLS MPEG-TS.
  • Captura MPEG-TS: por cada PID — erros CC, TEI, pacotes cifrados, erros CRC de PSI, PES quebrados, estado do buffer do decodificador (HRD).
  • SRT: RTT, perdas e retransmissões nos dois sentidos, tamanhos de buffer, tempos limite de keepalive.
  • Fontes (LSI): tempo na entrada principal/reserva, tempo sem dados, tentativas, validade das reservas, divergência de parâmetros entre as entradas.
  • Sessões: abertas, recusadas, autorizadas, recusas de reautorização.
  • DVR: espaço em disco, contadores de operações, número de blobs, bytes usados pelo arquivo, progresso da reconstrução do catálogo.
  • Pushes: por push — status com a causa da falha, velocidade de envio, bytes, erros, reconexões, retransmissões SRT/RIST. Veja Estatísticas de pushes.
  • Agentes do Peeklio: estado das conexões, bytes, erros.

Entrega de HLS MPEG-TS para set-top boxes

A entrega mista ts/mux/ monta cada segmento a partir do vídeo e do áudio, e na borda ao vivo o áudio pode não chegar a tempo. Dois contadores do stream mostram o que o espectador recebeu de fato:

Série do Prometheus O que conta Como ler
stream_mpegts_hls_incomplete_segments_total segmentos da janela ao vivo entregues sem parte do áudio: o áudio atrasou, sumiu na entrada, está declarado mas não chega, ou o início da janela dele já saiu da janela ao vivo crescimento constante — o áudio da entrada está atrás do vídeo ou não existe; uma unidade por segmento de variante, então um stream com três vídeos dá +3 por um pedaço de áudio atrasado
stream_mpegts_hls_uncached_segments_total segmentos montados fora do cache: o conjunto de faixas não está entre as variantes do mestre ao vivo (uma janela de arquivo sobre dados ao vivo, um conjunto anterior à mudança da descrição do stream, um subconjunto que o cliente pede por conta própria) crescimento constante — os set-top boxes reproduzem o que o cache não guarda, e cada montagem custa processador

As duas séries são de nível básico: no servidor Prometheus embutido todos as têm, no scrape do nó — com a opção de contadores estendidos. Na Admin API elas vêm como taxas na seção mpegts_hls das estatísticas do stream (incomplete_segments_rate, uncached_segments_rate); a seção existe a partir do momento em que o stream teve um segmento assim. Para a telemetria do Retroview vai o incremento por janela.

# streams cujos set-top boxes recebem segmentos sem áudio
rate(stream_mpegts_hls_incomplete_segments_total[5m]) > 0

O contador não distingue «o áudio atrasou» de «não há áudio na entrada»: olhe a entrada do stream.