En esta página, se describe cómo usar los registros de la plataforma que genera 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 permisos y las funciones de IAM correctos para ver y administrar los registros.
Activa el registro de la plataforma
De forma predeterminada, los registros de la plataforma livestream.googleapis.com/channel_activities para la API de Live Stream están desactivados. 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 la solicitud del
projects.locations.channels.create o el
projects.locations.channels.patch método:
"logConfig": {
"logSeverity": "SEVERITY_LEVEL"
},
En el ejemplo anterior, SEVERITY_LEVEL es una de las siguientes opciones:
OFFDEBUGINFOWARNINGERROR
Una vez que elijas un nivel de gravedad de registro para un canal, solo se registrarán los registros de la plataforma con un nivel de gravedad superior o igual al nivel de gravedad elegido.
Por ejemplo, si el nivel de gravedad es WARNING, solo se registrarán los registros con el nivel de gravedad WARNING y ERROR. Si el nivel de gravedad es INFO, se registrarán 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.
Visualiza los registros de la plataforma
Para ver los registros de la plataforma, sigue las instrucciones que se indican a continuación:
Console
Para ver los registros de la plataforma en la Google Cloud consola de, haz lo siguiente:
Navega al Explorador de registros:
Selecciona el proyecto Google Cloud apropiado.
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_IDes el ID del canal que deseas depurar o supervisar. Por ejemplo,my-channel.LOCATIONes la ubicación del canal que deseas depurar o supervisar. Por ejemplo,us-central1.PROJECT_IDes 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 Usa 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 ejemplo anterior, PROJECT_ID es el ID de tu Google Cloud proyecto.
Para obtener más información sobre el uso de la herramienta de gcloud con Cloud Logging, consulta
gcloud logging.
Usa los registros de la plataforma
En esta sección, se describe cómo usar e interpretar registros específicos de la plataforma para la API de Live Stream.
eventStateChange
Los registros de eventStateChange se generan cuando cambia el estado de un evento del canal. El nivel de gravedad de un registro de eventStateChange es ERROR cuando el estado nuevo del evento del canal es FAILED. De lo contrario, el nivel de gravedad de un registro de eventStateChange es INFO.
A continuación, se muestra 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 de scte35CommandReceived es INFO.
Solo se procesan durationFlag, breakDuration, spliceTime y outOfNetworkIndicator. Cuando falta spliceTime, el comando SCTE35 se ejecuta de inmediato. Todos los demás campos se tratan como operaciones no op.
A continuación, se muestra un ejemplo de un registro de 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 de streamingStateChange es ERROR cuando el
estado nuevo del canal es STREAMING_ERROR. De lo contrario, el nivel de gravedad de un registro de streamingStateChange es INFO.
A continuación, se muestra un ejemplo de un registro de streamingStateChange en el que el estado anterior
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 de 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 de streamingError se generan cuando un canal encuentra un error relacionado con la transmisión. El nivel de gravedad del registro de streamingError es ERROR.
A continuación, se muestra un ejemplo de un registro de streamingError en el que se le negó a la API de Live Stream el permiso 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 no existe el bucket de Cloud Storage especificado.
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
Los registros de inputAccept se generan cuando una transmisión de entrada se conecta correctamente al extremo de entrada de la API de Live Stream. El nivel de gravedad de los registros de inputAccept es INFO.
El campo inputStreamProperty en un registro de inputAccept incluye la siguiente información sobre las subtransmisiones de video y audio de la transmisión de entrada:
| Transmisiones de video por Internet |
|
| Transmisiones de audio |
|
Puedes usar los registros de inputAccept para verificar el formato y el estado de aceptación de la transmisión 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 la API de Live Stream rechaza una transmisión de entrada. El nivel de gravedad de un registro de inputError es ERROR.
A continuación, se muestra un ejemplo de un registro de inputError en el que se envió una transmisión de entrada a un canal que aún no se inició:
{
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"
...
}
A continuación, se muestra un ejemplo de un registro de inputError en el que se envió una transmisión de entrada duplicada 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 de inputDisconnect se generan cuando las transmisiones de entrada se desconectan de la API de Live Stream. Puedes usar los registros de inputDisconnect para verificar si hay desconexiones inesperadas de la transmisión en vivo. El nivel de gravedad de un registro de inputDisconnect es INFO.
A continuación, se muestra 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"
...
}