Skip to content

Métricas do Prometheus

control.observability.metrics

O scrape do Prometheus: o seu próprio monitoramento

A opção «contadores estendidos»

Os endpoints do scrape estão disponíveis só com a opção de licença de contadores estendidos. Sem ela, use o servidor Prometheus embutido e o Retroview.

Para instalações com infraestrutura de monitoramento própria, o Sapsan serve métricas no formato de texto do Prometheus:

  • GET /streamer/api-v4/live-metrics — streams e entradas;
  • GET /streamer/api-v4/sessions-metrics — sessões de reprodução;
  • GET /streamer/api-v4/dvr/metrics — discos e catálogo do arquivo;
  • GET /streamer/api-v4/runtime/metrics — o processo e o alocador.

Diferenças em relação ao servidor Prometheus embutido: o histórico fica guardado do seu lado e é limitado só pelo retention da sua TSDB; a profundidade completa está disponível, incluindo as métricas de protocolo por PID/SRT/RTP; o alerting é o seu alertmanager. Os contadores são monótonos e sobrevivem à observação de restarts — este é também o canal para a conciliação de faturamento do seu lado.

Métricas Prometheus

GET /streamer/api-v4/runtime/metrics serve métricas do processo em formato Prometheus (incluindo o alocador jemalloc). Ao lado estão as métricas de live, de sessões e de DVR: /live-metrics, /sessions-metrics, /dvr/metrics (veja o Admin API). Os endpoints do scrape exigem a opção de licença de contadores estendidos; sem ela, os gráficos são servidos pelo servidor Prometheus embutido (um datasource Grafana pronto). O percurso completo pelos canais de estatística, os campos e as receitas de alertas está na página Estatísticas.

Receitas

Pergunta Onde olhar O sinal do problema
O stream está vivo? status na API; rate(stream_input_bytes_total[1m]) no Prometheus embutido status não é running; a velocidade de captura despencou para zero
A reserva está pronta? inputs[] na lista de estatísticas status é error ou unchecked; checked_ago_ms muito acima do intervalo de verificação
Estamos vivendo na reserva? source.url; num_sec_on_secondary_input a URL não é a primeira do config; os segundos na reserva seguem crescendo
A entrada está degradando? input.errors, input.retries; as causas — contadores estendidos ou Retroview os contadores crescem com o stream vivo
O push chega? pushes[].status e bitrate_kbit; rate(stream_push_bytes_total[1m]) status não é running; velocidade zerada com o stream vivo
Por que o push não funciona? pushes[].error a causa em palavras: conexão recusada, tempo limite, recusa de publicação
O canal até o receptor rompe? pushes[].reconnects_total, opened_at as reconexões crescem; opened_at fica mais novo a cada poucos minutos
Há força bruta contra uma entrega SRT com mapa de clientes? scrape do nó: srt_handshake_attempts_total, srt_handshake_secret_candidates_total muitos candidatos de segredo por tentativa — força bruta; um par — um espectador normal
A entrega a um espectador está degradando? srt.health nas sessões; a série stream_play_srt_session_lost_packets_total veredicto degraded ou bad; as perdas crescem
O arquivo está sendo escrito? dvr.to na lista; dvr.write.segments_failed no GET individual to fica atrás da hora real; segments_failed cresce
Há buracos no arquivo? dvr.recorded_hours contra a janela to - from as horas gravadas são notavelmente menos que a largura da janela
Os discos dão conta? segments_written_slow/_delayed (opção); dvr_disk_free_bytes no scrape a fatia de escritas lentas cresce; o espaço livre derrete mais rápido que o esperado
O servidor está saudável? runtime/metrics: process_rss_bytes; o Prometheus embutido: stream_memory_bytes a memória cresce monotonicamente sem crescimento de carga
O que aconteceu de madrugada? Retroview —

Entrega de HLS MPEG-TS

Segmentos incompletos, montagens fora do cache, campos da API e exemplos de alertas são descritos em contadores de HLS MPEG-TS.