En esta página, se describe cómo usar los registros de plataforma generados por la API de Live Stream como
parte de Cloud Logging. La API de Live Stream usa el nombre del servicio de la API de Logging livestream.googleapis.com
para registrar la actividad relacionada con el canal.
Antes de comenzar
- Asegúrate de tener los roles y permisos de IAM correctos para ver y administrar los registros.
Activa el registro de la plataforma
De forma predeterminada, los registros de plataforma livestream.googleapis.com/channel_activities
para
Se desactivó la API de Live Stream. Para activar los registros, debes especificar un
nivel de gravedad cuando crees o actualices el recurso del canal.
Para activar los registros, agrega el siguiente campo al cuerpo JSON de solicitud de la
projects.locations.channels.create
o
Método projects.locations.channels.patch
:
"logConfig": { "logSeverity": "SEVERITY_LEVEL" },
En el ejemplo anterior, SEVERITY_LEVEL
es una de las siguientes opciones:
OFF
DEBUG
INFO
WARNING
ERROR
Una vez que elijas un nivel de gravedad de registro para un canal, solo los registros de
se registra un nivel de gravedad mayor o igual que el nivel elegido.
Por ejemplo, si el nivel de gravedad es WARNING
, solo se registran los registros con los niveles de gravedad WARNING
y ERROR
. Si el nivel de gravedad es INFO
, se registran los registros de todos los niveles de gravedad, excepto DEBUG
.
Para obtener más información sobre los niveles de gravedad de los registros, consulta LogSeverity.
Ver registros de plataforma
Para ver los registros de plataforma, sigue las instrucciones a continuación:
Console
Para ver los registros de la plataforma en la consola de Google Cloud, sigue estos pasos:
Navega al Explorador de registros:
Selecciona el proyecto de Google Cloud adecuado.
En el campo Consulta, ingresa el siguiente comando de consulta:
resource.labels.channel_id=CHANNEL_ID resource.labels.location=LOCATION logName="projects/PROJECT_ID/logs/livestream.googleapis.com%2Fchannel_activities"
Donde:
CHANNEL_ID
es el ID del canal que deseas depurar o supervisar. Por ejemplo,my-channel
.LOCATION
es la ubicación del canal que deseas depurar o supervisar. Por ejemplo,us-central1
.PROJECT_ID
es el ID del proyecto que contiene el canal que deseas depurar o supervisar. Por ejemplo,my-project
.
Haz clic en Ejecutar consulta.
Para obtener más información sobre el Explorador de registros, consulta Descripción general del Explorador de registros y Cómo usar el Explorador de registros.
gcloud
La herramienta de línea de comandos de gcloud proporciona una interfaz de línea de comandos para Cloud Logging.
Para ver los registros de channel_activities
de tu proyecto, ejecuta el siguiente comando:
gcloud logging read "logName:projects/PROJECT_ID/logs/livestream.googleapis.com%2Fchannel_activities" --project=PROJECT_ID
en el que PROJECT_ID
es el ID de tu proyecto de Google Cloud.
Para obtener más información sobre el uso de la herramienta gcloud con Cloud Logging, consulta gcloud logging
.
Usa registros de plataforma
Esta sección describe cómo usar e interpretar los registros de plataforma específicos para API de Live Stream.
eventStateChange
Los registros eventStateChange
se generan cuando cambia el estado de un evento de canal. El nivel de gravedad de un registro eventStateChange
es ERROR
cuando la
El nuevo estado del evento del canal es FAILED
. De lo contrario, el nivel de gravedad de un registro eventStateChange
es INFO
.
El siguiente es un ejemplo de un registro de eventStateChange
:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" eventStateChange: { eventId: "my-ad-break" newState: "SCHEDULED" previousState: "PENDING" } message: "State of event "my-ad-break" changed from "PENDING" to "SCHEDULED"." } ... severity: "INFO" ... }
scte35CommandReceived
Los registros de scte35CommandReceived
se generan cuando la transmisión de entrada recibe un
comando SCTE35. El nivel de gravedad de un registro scte35CommandReceived
es INFO
.
Solo durationFlag
, breakDuration
, spliceTime
y outOfNetworkIndicator
se procesan. Cuando falta spliceTime
, el comando SCTE35 se ejecuta de inmediato. Todos los demás campos se tratan como no-ops.
El siguiente es un ejemplo de un registro scte35CommandReceived
:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" scte35CommandReceived: { spliceInfoSection: { ptsAdjustment: "123456789" spliceInsert: { availNum: 0 availsExpected: 0 breakDuration: null componentCount: 0 components: [0] durationFlag: false outOfNetworkIndicator: true programSpliceFlag: true spliceEventCancelIndicator: false spliceEventId: 123456789 spliceImmediateFlag: true spliceTime: null uniqueProgramId: 5 } } } message: "Received inband SCTE35 command, eventID=123456789." } ... severity: "INFO" ... }
streamingStateChange
Los registros de streamingStateChange
se generan cuando cambia el estado de transmisión de un canal. El nivel de gravedad de un registro streamingStateChange
es ERROR
cuando la
el nuevo estado del canal es STREAMING_ERROR
. De lo contrario, el nivel de gravedad de una
El registro streamingStateChange
es INFO
.
El siguiente es un ejemplo de un registro streamingStateChange
en el que la anterior
el estado es STREAMING_ERROR
y el estado nuevo es STREAMING
:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" message: "streaming state of channel "CHANNEL_ID" changes from "STREAMING_ERROR" to "STREAMING"" streamingStateChange: { newState: "STREAMING" previousState: "STREAMING_ERROR" ... type: "livestream.googleapis.com/Channel" } severity: "INFO" ... }
Puedes agregar comandos adicionales en el campo Consulta del Explorador de registros para acotar los registros que se muestran.
Agrega el siguiente comando para mostrar todos los registros streamingStateChange
en los que el estado nuevo es STREAMING
:
jsonPayload.streamingStateChange.newState="STREAMING"
Agrega el siguiente comando para mostrar solo los registros de streamingStateChange
:
jsonPayload.streamingStateChange.newState:*
streamingError
Los registros streamingError
se generan cuando un canal encuentra un error relacionado con la transmisión. El nivel de gravedad de un registro streamingError
es ERROR
.
El siguiente es un ejemplo de un registro de streamingError
en el que la API de Live Stream se
permiso denegado para subir archivos de salida al bucket de Cloud Storage especificado:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" message: "A live streaming encounters an error." streamingError: { error: { ... message: "Permission denied to access the Cloud Storage bucket "STORAGE_BUCKET_NAME"" ... severity: "ERROR" ... }
Este error también puede ocurrir si el bucket de Cloud Storage especificado no existe.
Si streamingError.message
muestra el mensaje This is due to an internal
error. If the error persists, please contact support team
, copia el contenido del registro y envíalo al equipo de asistencia para solucionar el problema.
inputAccept
Se generan registros inputAccept
cuando se conecta correctamente una transmisión de entrada
al extremo de entrada de la API de Live Stream. El nivel de gravedad de inputAccept
registros
es INFO
.
El campo inputStreamProperty
en un registro inputAccept
incluye la siguiente información sobre los subflujos de audio y video del flujo de entrada:
Transmisiones de video |
|
Reproducciones de audio |
|
Puedes usar los registros de inputAccept
para verificar el formato y el estado de aceptación del
flujo de entrada:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" inputAccept: { inputAttachment: "input-primary" inputStreamProperty: { audioStreams: [ 0: { audioFormat: { channelCount: 2 channelLayout: [ 0: "fl" 1: "fr" ] codec: "aac" } index: 1 } ] videoStreams: [ 0: { videoFormat: { codec: "h264" frameRate: 60 heightPixels: 720 widthPixels: 1280 ... streamId: "STREAM_ID" } message: "Input stream "STREAM_ID" is accepted by channel "CHANNEL_ID" for input attachment "input-primary"" } ... severity: "INFO" ... }
Agrega el siguiente comando en el campo Consulta del Explorador de registros para mostrar solo los registros de inputAccept
de una transmisión específica:
jsonPayload.inputAccept.streamId="STREAM_ID"
donde STREAM_ID
es el identificador único de una transmisión incluida en el URI del extremo de entrada.
inputError
Los registros de inputError
se generan cuando el
API de Live Stream. El nivel de gravedad de un registro inputError
es ERROR
.
El siguiente es un ejemplo de un registro inputError
en el que se envió una transmisión de entrada
a un canal que aún no ha comenzado:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" inputError: { error: { ... message: "The channel has not been started yet" } streamId: "STREAM_ID" ... severity: "ERROR" ... }
El siguiente es un ejemplo de un registro inputError
en el que un flujo de entrada duplicado
se envió a un canal que ya está transmitiendo:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" inputError: { error: { code: 9 message: "input stream "STREAM_ID" has been accepted. Please verify if another input stream has been streaming to the same endpoint." } streamId: "STREAM_ID" ... severity: "ERROR" ... }
Agrega el siguiente comando en el campo Consulta del Explorador de registros para mostrar solo los registros de inputError
de una transmisión específica:
jsonPayload.inputError.streamId="STREAM_ID"
donde STREAM_ID
es el identificador único de una transmisión incluida en el URI del extremo de entrada.
inputDisconnect
Los registros inputDisconnect
se generan cuando se desconectan las transmisiones de entrada.
desde la API de Live Stream. Puedes usar los registros de inputDisconnect
para verificar
desconexiones inesperadas de transmisiones en vivo. El nivel de gravedad de una inputDisconnect
registro es INFO
.
El siguiente es un ejemplo de un registro de inputDisconnect
:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" inputDisconnect: { inputAttachment: "input-primary" streamId: "STREAM_ID" } message: "Input stream "STREAM_ID" is disconnected by channel "CHANNEL_ID" for input attachment "input-primary"" ... severity: "INFO" ... }