Usar registros de la plataforma

En esta página se describe cómo usar los registros de la plataforma generados por la API Live Stream como parte de Cloud Logging. La API Live Stream usa el nombre del servicio de la API Logging livestream.googleapis.com para registrar la actividad relacionada con los canales.

Antes de empezar

Activar el registro de la plataforma

De forma predeterminada, los registros de la plataforma livestream.googleapis.com/channel_activities de la API Live Stream están desactivados. Para activar los registros, debe especificar un nivel de gravedad al crear o actualizar el recurso de canal.

Para activar los registros, añade el siguiente campo al cuerpo JSON de la solicitud del método projects.locations.channels.create o projects.locations.channels.patch:

   "logConfig": {
     "logSeverity": "SEVERITY_LEVEL"
   },
  

El valor de SEVERITY_LEVEL puede ser uno de los siguientes:

  • OFF
  • DEBUG
  • INFO
  • WARNING
  • ERROR

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 igual o superior al 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 la plataforma

Para ver los registros de la plataforma, sigue estas instrucciones:

Consola

Para ver los registros de la plataforma en la Google Cloud consola, sigue estos pasos:

  1. Ve al explorador de registros:

    Ir al Explorador de registros

  2. Selecciona el Google Cloud proyecto adecuado.

  3. En el campo Consulta, introduce 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 quieres depurar o monitorizar. Por ejemplo, my-channel.

    • LOCATION es la ubicación del canal que quieres depurar o monitorizar. Por ejemplo, us-central1.

    • PROJECT_ID es el ID del proyecto que contiene el canal que quieres depurar o monitorizar. Por ejemplo, my-project.

  4. Haz clic en Realizar una consulta.

Para obtener más información sobre el Explorador de registros, consulta los artículos Descripción general del Explorador de registros y Usar el Explorador de registros.

gcloud

La herramienta de línea de comandos gcloud proporciona una interfaz de línea de comandos a 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

donde PROJECT_ID es el ID de tu Google Cloud proyecto.

Para obtener más información sobre cómo usar la herramienta gcloud con Cloud Logging, consulta gcloud logging.

Usar registros de la plataforma

En esta sección se describe cómo usar e interpretar los registros de plataforma específicos de la API Live Stream.

eventStateChange

Los registros de eventStateChange se generan cuando cambia el estado de un evento de canal. El nivel de gravedad de un registro de eventStateChange es ERROR cuando el nuevo estado del evento de 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 scte35CommandReceived se generan cuando el flujo de entrada recibe un comando SCTE35. El nivel de gravedad de un registro scte35CommandReceived es INFO.

Solo se procesan durationFlag, breakDuration, spliceTime y outOfNetworkIndicator. Si falta spliceTime, el comando SCTE35 se ejecuta inmediatamente. El resto de los campos se tratan como operaciones nulas.

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 streamingStateChange se generan cuando cambia el estado de streaming de un canal. El nivel de gravedad de un registro streamingStateChange es ERROR cuando el nuevo estado 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 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 añadir comandos adicionales en el campo Consulta del explorador de registros para acotar los registros que se muestran.

Añade el siguiente comando para mostrar todos los registros de streamingStateChange en los que el nuevo estado sea STREAMING:

jsonPayload.streamingStateChange.newState="STREAMING"

Añade el siguiente comando para mostrar solo los registros de streamingStateChange:

jsonPayload.streamingStateChange.newState:*

streamingError

Los registros streamingError se generan cuando un canal detecta un error relacionado con la emisión. El nivel de gravedad de un registro streamingError es ERROR.

A continuación, se muestra un ejemplo de un registro streamingError en el que se ha denegado el permiso a la Live Stream API para subir archivos de salida al segmento 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 producirse si el segmento 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

Los registros inputAccept se generan cuando una secuencia de entrada se conecta correctamente al endpoint de entrada de la API Live Stream. El nivel de gravedad de los registros de inputAccept es INFO.

El campo inputStreamProperty de un registro inputAccept incluye la siguiente información sobre los subflujos de vídeo y audio del flujo de entrada:

Streams de vídeo
  • índice
  • códec
  • Velocidad de fotogramas
  • resolución
Streams de audio
  • índice
  • Número de canales
  • Diseño del canal
  • información del códec

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"
  ...
}

Añade el siguiente comando en el campo Consulta del Explorador de registros para mostrar solo los registros inputAccept de un flujo específico:

jsonPayload.inputAccept.streamId="STREAM_ID"

donde STREAM_ID es el identificador único de un flujo incluido en el URI del endpoint de entrada.

inputError

Los registros inputError se generan cuando la API Live Stream rechaza un flujo de entrada. El nivel de gravedad de un registro inputError es ERROR.

A continuación, se muestra un ejemplo de un registro de inputError en el que se ha enviado un flujo de entrada a un canal que aún no se ha iniciado:

{
  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ó un flujo de entrada duplicado a un canal que ya estaba 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"
  ...
}

Añada el siguiente comando en el campo Consulta del Explorador de registros para mostrar solo los registros inputError de un flujo específico:

jsonPayload.inputError.streamId="STREAM_ID"

donde STREAM_ID es el identificador único de un flujo incluido en el URI del endpoint de entrada.

inputDisconnect

Los registros inputDisconnect se generan cuando las secuencias de entrada se desconectan de la API Live Stream. Puedes usar los registros de inputDisconnect para comprobar si se producen desconexiones inesperadas de emisiones en directo. El nivel de gravedad de un registro 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"
  ...
}