Monitorización de entrega¶
Una cabecera no puede preguntarle al receptor qué midió. Todo lo que tiene son sus propios contadores de envío, y se toman por destino.
La clave de la estadística es el par «nombre del stream, nombre del destino», el mismo que en la configuración del destino. Esto no es un formalismo: un stream sale a cinco destinos, y la frase «el stream está entregando 40 Mbit/s» no responde a si llega a alguno de ellos en concreto.
La opción «estadísticas de pushes»
La vista de entrega es una opción de licencia aparte. Corta solo los canales de datos: la sección pushes y los campos planos push_* de la API, las series stream_push_* del scrape y del servidor Prometheus integrado. La recolección en sí nunca se detiene, y los contadores siempre van a la telemetría de Retroview — el análisis en Retroview está disponible también sin la opción.
La vista en el panel¶
En la pestaña Egreso, debajo de la configuración de cada destino corre una línea de estadísticas en vivo: estado, velocidad, errores por segundo, reconexiones y, en uno fallido, la causa ahí mismo en la línea.

En la lista de streams, un destino roto enciende una marca junto al estado del stream: se ve que la entrega está rota sin abrir el stream.

Contadores del destino¶
GET /streamer/api-v4/streams/stats/{name} trae un objeto indexado por nombre de destino:
"pushes": {
"cable-net": {
"status": "running",
"proto": "udp",
"url": "udp://239.1.1.10:5000",
"opened_at": "2026-08-13T11:17:53Z",
"bitrate_kbit": 2113.4,
"bytes_total": 19053048,
"datagrams_total": 14478
},
"partner-dc": {
"status": "error",
"proto": "srt",
"url": "srt://203.0.113.10:9000",
"error": "srt handshake rejected: bad passphrase",
"reconnects_total": 22
},
"backup-site": {"status": "disabled", "proto": "srt", "url": "srt://198.51.100.4:9000"}
}
| Campo | Qué significa | Cómo usarlo |
|---|---|---|
status |
running, error o disabled |
no running durante más de N minutos — alerta; disabled es normal, es un destino que el operador apagó |
error |
la causa del estado error |
lo primero que hay que leer: conexión rechazada, tiempo agotado, handshake rechazado |
proto, url |
el transporte y el destino tal como los definió el operador | se ve adónde va realmente la señal |
opened_at |
el momento en que arrancó el pusher actual | se renueva en cada reconexión — el canal cae y vuelve |
bitrate_kbit |
la velocidad de envío medida | claramente por debajo del bitrate del stream — el envío no da abasto |
errors_rate |
errores de envío por segundo | crece con la conexión viva — el receptor o el canal se están degradando |
bytes_total |
bytes enviados, acumulados | conciliar volúmenes por destino |
errors_total |
errores de envío, acumulados | — |
reconnects_total |
resurrecciones de un pusher muerto | crece con status: running — el canal se corta y se recupera |
retransmitted_packets_total |
retransmisiones del transporte (SRT, RIST) | crecen — pérdidas en el camino hacia el receptor |
datagrams_total, frames_total |
las unidades enviadas: datagramas en los transportes de paquetes, fotogramas en RTMP | — |
Los campos en cero se omiten de la respuesta: un destino RTMP no tiene datagramas, uno UDP no tiene ni fotogramas ni retransmisiones.
Junto a los contadores del stream hay tres sumas sobre todos los destinos — push_bytes_total, push_errors_total, push_reconnects_total. Responden «cuánto envió la cabecera en total» sin recorrer el mapa.
Series de Prometheus¶
Cada contador de destino es una serie propia con la etiqueta push:
| Serie | Etiquetas |
|---|---|
stream_push_bytes_total |
stream, push, proto |
stream_push_errors_total |
stream, push, proto |
stream_push_reconnects_total |
stream, push, proto |
stream_push_retransmitted_packets_total |
stream, push, proto |
stream_push_datagrams_total, stream_push_frames_total |
stream, push, proto |
En el servidor Prometheus integrado los mismos contadores están disponibles con las etiquetas name (stream) y push; cuando hay más de una cabecera, se añade node. La profundidad de protocolo — stream_push_srt_* y stream_push_rist_* — llega junto con la opción de contadores extendidos.
# velocidad de envío por destino
rate(stream_push_bytes_total{stream="tv1"}[1m])
# la salida total del stream por todos los destinos
sum by (name) (rate(stream_push_bytes_total{name="tv1"}[1m]))
# canales que se cortan: reconexiones en cinco minutos
increase(stream_push_reconnects_total[5m]) > 0
# pérdidas en el camino hacia el receptor por SRT/RIST
rate(stream_push_retransmitted_packets_total[1m])
Cómo leer el estado¶
status: errorcon unerrorno vacío — no se está enviando nada y la causa está nombrada. El destino sigue levantándose solo, una vez cada cinco segundos.status: runningperobitrate_kbiten cero — la conexión está, los datos no: compruebe si la señal está llegando por la entrada.status: runningcon unreconnects_totalcreciente — el canal se corta y se recupera;opened_atmuestra la edad de la conexión actual.status: disabled— el destino está apagado con el interruptor. Los contadores quedan congelados en sus últimos valores; esto no es una pérdida de datos.
Las alertas con las que empezar¶
| Pregunta | Dónde mirar | Señal del problema |
|---|---|---|
| ¿Llega la señal? | pushes[].status, bitrate_kbit; rate(stream_push_bytes_total[1m]) |
el estado no es running; la velocidad en cero en un stream vivo |
| ¿Por qué no llega? | pushes[].error |
el texto de la causa: conexión rechazada, tiempo agotado, handshake rechazado |
| ¿Se corta el canal hasta el receptor? | reconnects_total, opened_at |
las reconexiones crecen; opened_at se renueva cada pocos minutos |
| ¿El camino pierde paquetes? | retransmitted_packets_total |
crece con el estado estable |
| ¿La salida da abasto? | el bitrate_kbit del destino contra el bitrate del stream |
la velocidad del destino es sistemáticamente menor |
Qué sigue¶
- Entrega a la red y entrega por SRT — con qué se configura un destino.
- Errores de entrada — la otra mitad del cuadro: qué llega a la cabecera.
- Monitorización — los canales de estadística en conjunto.