Utilizzo dei log della piattaforma

In questa pagina viene descritto come utilizzare i log della piattaforma generati dall'API Live Stream come parte di Cloud Logging. L'API Live Stream utilizza il nome del servizio API Logging livestream.googleapis.com per registrare le attività correlate al canale.

Prima di iniziare

Attiva il logging della piattaforma

Per impostazione predefinita, la piattaforma livestream.googleapis.com/channel_activities registra L'API Live Stream è disattivata. Per attivare i log, devi specificare di gravità quando crei o aggiorni la risorsa del canale.

Per attivare i log, aggiungi il campo seguente al corpo JSON della richiesta del projects.locations.channels.create o Metodo projects.locations.channels.patch:

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

dove SEVERITY_LEVEL è uno dei seguenti:

  • OFF
  • DEBUG
  • INFO
  • WARNING
  • ERROR

Dopo aver scelto un livello di gravità dei log per un canale, solo la piattaforma registra vengono registrati un livello di gravità superiore o uguale a quello scelto. Ad esempio, se il livello di gravità è WARNING, vengono registrati solo i log con questo livello WARNING e ERROR vengono registrati. Se il livello di gravità è INFO, i log di tutti vengono registrati i livelli di gravità eccetto DEBUG.

Per ulteriori informazioni sui livelli di gravità dei log, consulta LogSeverity.

Visualizza i log della piattaforma

Per visualizzare i log della piattaforma, segui le istruzioni riportate di seguito:

Console

Per visualizzare i log della piattaforma nella console Google Cloud:

  1. Vai a Esplora log:

    Vai a Esplora log

  2. Seleziona il progetto Google Cloud appropriato.

  3. Nel campo Query, inserisci il seguente comando di query:

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

    dove:

    • CHANNEL_ID è l'ID del canale di cui vuoi eseguire il debug o il monitoraggio. Ad esempio, my-channel.

    • LOCATION è la posizione del canale di cui vuoi eseguire il debug o il monitoraggio. Ad esempio, us-central1.

    • PROJECT_ID è l'ID del progetto contenente il canale di cui vuoi eseguire il debug o il monitoraggio. Ad esempio, my-project.

  4. Fai clic su Esegui query.

Per ulteriori informazioni su Esplora log, consulta Panoramica di Esplora log e Utilizzo di Esplora log.

gcloud

Lo strumento a riga di comando gcloud fornisce un'interfaccia a riga di comando per Cloud Logging.

Per visualizzare i log channel_activities per il tuo progetto, esegui questo comando:

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

dove PROJECT_ID è l'ID del tuo progetto Google Cloud.

Per ulteriori informazioni sull'utilizzo dello strumento gcloud con Cloud Logging, consulta gcloud logging

Utilizza i log della piattaforma

Questa sezione descrive come utilizzare e interpretare log specifici della piattaforma per API Live Stream.

eventStateChange

I log eventStateChange vengono generati quando lo stato di un evento del canale modifiche. Il livello di gravità di un log eventStateChange è ERROR quando Il nuovo stato dell'evento del canale è FAILED. In caso contrario, il livello di gravità eventStateChange log è INFO.

Di seguito è riportato un esempio di log 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

I log scte35CommandReceived vengono generati quando il flusso di input riceve un SCTE35. Il livello di gravità per un log scte35CommandReceived è INFO.

Di seguito è riportato un esempio di log 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

I log streamingStateChange vengono generati quando lo stato di flusso di un canale modifiche. Il livello di gravità di un log streamingStateChange è ERROR quando il nuovo stato del canale è STREAMING_ERROR. In caso contrario, il livello di gravità streamingStateChange log è INFO.

Di seguito è riportato un esempio di log streamingStateChange in cui la versione precedente lo stato è STREAMING_ERROR e il nuovo stato è 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"
  ...
}

Puoi aggiungere altri comandi nel campo Query di Esplora log per restringere il numero di log visualizzati.

Aggiungi il comando seguente per visualizzare tutti i log di streamingStateChange in cui il nuovo stato è STREAMING:

jsonPayload.streamingStateChange.newState="STREAMING"

Aggiungi il comando seguente per visualizzare solo i log streamingStateChange:

jsonPayload.streamingStateChange.newState:*

streamingError

I log streamingError vengono generati quando un canale rileva un errore . Il livello di gravità di un log di streamingError è ERROR.

Di seguito è riportato un esempio di log streamingError in cui l'API Live Stream era negata l'autorizzazione a caricare i file di output nel bucket Cloud Storage specificato:

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

Questo errore può verificarsi anche se il bucket Cloud Storage specificato non esiste.

Se in streamingError.message viene visualizzato il messaggio This is due to an internal error. If the error persists, please contact support team, copia contenuti e invialo al team di assistenza per la risoluzione dei problemi.

inputAccept

inputAccept log vengono generati quando viene connesso correttamente un flusso di input all'endpoint di input dell'API Live Stream. Il livello di gravità dei log di inputAccept è INFO.

Il campo inputStreamProperty in un log inputAccept include quanto segue informazioni sui flussi secondari video e audio dello stream di input:

Flussi video
  • indice
  • codec
  • frequenza fotogrammi
  • risoluzione
Stream audio
  • indice
  • numero di canali
  • layout del canale
  • informazioni sul codec

Puoi utilizzare i log di inputAccept per verificare il formato e lo stato di accettazione del flusso di input:

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

Aggiungi il comando seguente nel campo Query di Esplora log da visualizzare solo inputAccept log per un flusso specifico:

jsonPayload.inputAccept.streamId="STREAM_ID"

dove STREAM_ID è l'identificatore univoco di uno stream incluso nell'input URI endpoint.

inputError

I log inputError vengono generati quando un flusso di input viene rifiutato dal server API Live Stream. Il livello di gravità per un log inputError è ERROR.

Di seguito è riportato un esempio di log inputError in cui è stato inviato un flusso di input a un canale non ancora avviato:

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

Di seguito è riportato un esempio di log inputError in cui un flusso di input duplicato è stato inviato a un canale che sta già trasmettendo in streaming:

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

Aggiungi il comando seguente nel campo Query di Esplora log solo per visualizzare i dati inputError log per un flusso specifico:

jsonPayload.inputError.streamId="STREAM_ID"

dove STREAM_ID è l'identificatore univoco di uno stream incluso nell'input URI endpoint.

inputDisconnect

inputDisconnect log vengono generati quando i flussi di input sono disconnessi dall'API Live Stream. Puoi utilizzare i log di inputDisconnect per controllare disconnessioni impreviste del live streaming. Il livello di gravità per un inputDisconnect log è INFO.

Di seguito è riportato un esempio di log 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"
  ...
}