Como usar registros de plataforma

Esta página descreve como usar os registros de plataforma gerados pela API Live Stream como parte do Cloud Logging. A API Live Stream usa o nome de serviço da API Logging livestream.googleapis.com para registrar atividades relacionadas ao canal.

Antes de começar

Ativar a geração de registros da plataforma

Por padrão, os registros de plataforma livestream.googleapis.com/channel_activities para A API Live Stream está desativada. Para ativar os registros, é preciso especificar o nível de gravidade ao criar ou atualizar o recurso do canal.

Para ativar os registros, adicione o campo a seguir ao corpo JSON da solicitação do projects.locations.channels.create ou as projects.locations.channels.patch:

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

em que SEVERITY_LEVEL é um dos seguintes:

  • OFF
  • DEBUG
  • INFO
  • WARNING
  • ERROR

Depois de escolher um nível de gravidade de registro para um canal, apenas a plataforma registra um nível de gravidade maior ou igual ao escolhido são registrados. Por exemplo, se o nível de gravidade for WARNING, apenas os registros com nível de gravidade WARNING e ERROR estão registrados. Se o nível de gravidade for INFO, os registros de todas níveis de gravidade, exceto DEBUG, são registrados.

Para mais informações sobre os níveis de gravidade de registros, consulte LogSeverity.

Ver registros da plataforma

Para acessar os registros da plataforma, siga as instruções abaixo:

Console

Para acessar os registros da plataforma no console do Google Cloud:

  1. Acesse o Explorador de registros:

    Acesse o Explorador de registros

  2. Selecione o projeto do Google Cloud apropriado.

  3. No campo Consulta, digite o seguinte comando de consulta:

    resource.labels.channel_id=CHANNEL_ID
    resource.labels.location=LOCATION
    logName="projects/PROJECT_ID/logs/livestream.googleapis.com%2Fchannel_activities"
    

    em que:

    • CHANNEL_ID é o ID do canal que você quer depurar ou monitorar. Por exemplo, my-channel.

    • LOCATION é o local do canal que você quer depurar ou monitorar. Por exemplo, us-central1.

    • PROJECT_ID é o ID do projeto que contém o canal que você quer depurar ou monitorar. Por exemplo, my-project.

  4. Clique em Executar consulta.

Para mais informações sobre a Análise de registros, consulte Visão geral da Análise de registros e Como usá-la.

gcloud

A ferramenta de linha de comando gcloud fornece uma interface de linha de comando para o Cloud Logging.

Para ver os registros channel_activities do seu projeto, execute o seguinte comando:

gcloud logging read "logName:projects/PROJECT_ID/logs/livestream.googleapis.com%2Fchannel_activities" --project=PROJECT_ID

em que PROJECT_ID é o ID do projeto do Google Cloud.

Para mais informações sobre como usar a ferramenta gcloud com o Cloud Logging, consulte gcloud logging

Usar registros de plataforma

Esta seção descreve como usar e interpretar registros de plataforma específicos para a API Live Stream.

eventStateChange

Registros eventStateChange são gerados quando o estado de um evento de canal mudanças. O nível de gravidade de um registro eventStateChange é ERROR quando o o novo estado do evento de canal é FAILED. Caso contrário, o nível de gravidade de um O registro eventStateChange é INFO.

Veja a seguir um exemplo de registro 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

Os registros scte35CommandReceived são gerados quando o stream de entrada recebe uma SCTE35. O nível de gravidade de um registro scte35CommandReceived é INFO.

Veja a seguir um exemplo de 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
          out0fNetworkIndicator: true
          programSpliceFlag: true
          spliceEventCancelIndicator: false
          spliceEventId: 123456789
          spliceImmediateFlag: true
          spliceTime: null
          uniqueProgramId: 5
        }
      }
    }
    message: "Received inband SCTE35 command, eventID=123456789."
  }
  ...
  severity: "INFO"
  ...
}

streamingStateChange

Os registros streamingStateChange são gerados quando o estado de streaming de um canal mudanças. O nível de gravidade de um registro streamingStateChange é ERROR quando o o novo estado do canal é STREAMING_ERROR. Caso contrário, o nível de gravidade de um O registro streamingStateChange é INFO.

Este é um exemplo de um registro streamingStateChange em que o o estado é STREAMING_ERROR e o novo é 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"
  ...
}

É possível adicionar outros comandos no campo Consulta da Análise de registros para restringir os registros exibidos.

Adicione o seguinte comando para exibir todos os registros streamingStateChange em que o novo estado é STREAMING:

jsonPayload.streamingStateChange.newState="STREAMING"

Adicione o seguinte comando para exibir apenas registros streamingStateChange:

jsonPayload.streamingStateChange.newState:*

streamingError

Registros streamingError são gerados quando um canal encontra um evento erro. O nível de gravidade de um registro streamingError é ERROR.

Confira a seguir um exemplo de registro streamingError em que a API Live Stream estava permissão negada para fazer upload de arquivos de saída para o bucket especificado do Cloud Storage:

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

Esse erro também poderá ocorrer se o bucket do Cloud Storage especificado não existir.

Se streamingError.message exibir a mensagem This is due to an internal error. If the error persists, please contact support team, copie o conteúdo e envie-o à equipe de suporte para solução de problemas.

inputAccept

Registros inputAccept são gerados quando um stream de entrada é conectado. endpoint de entrada da API Live Stream. O nível de gravidade dos registros inputAccept é INFO.

O campo inputStreamProperty em um registro inputAccept inclui o seguinte informações sobre os sub-streams de vídeo e áudio do stream de entrada:

streams de vídeo
  • index
  • codec
  • frame rate
  • resolução
Streams de áudio
  • index
  • contagem de canais
  • layout do canal
  • informações de codec

Use os registros inputAccept para verificar o formato e o status de aceitação dos stream 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"
  ...
}

Adicione o seguinte comando no campo Consulta da Análise de registros para exibir apenas registros inputAccept para um stream específico:

jsonPayload.inputAccept.streamId="STREAM_ID"

em que STREAM_ID é o identificador exclusivo de um fluxo incluído no input URI do endpoint.

inputError

Os registros inputError são gerados quando um stream de entrada é rejeitado pelo a API Live Stream. O nível de gravidade de um registro inputError é ERROR.

Este é um exemplo de registro inputError em que um fluxo de entrada foi enviado a um canal que ainda não começou:

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

Este é um exemplo de registro inputError em que um fluxo de entrada duplicado foi enviada a um canal que já está transmitindo:

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

Adicione o seguinte comando no campo Consulta da Análise de registros para exibir apenas Registros inputError de um stream específico:

jsonPayload.inputError.streamId="STREAM_ID"

em que STREAM_ID é o identificador exclusivo de um fluxo incluído no input URI do endpoint.

inputDisconnect

Registros inputDisconnect são gerados quando os streams de entrada são desconectados da API Live Stream. É possível usar registros inputDisconnect para verificar desconexões inesperadas da transmissão ao vivo. O nível de gravidade de uma inputDisconnect registro é INFO.

Veja a seguir um exemplo de registro 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"
  ...
}