Utilizzo dei log della piattaforma

Questa pagina descrive come utilizzare i log della piattaforma generati dall'API Live Stream nell'ambito di Cloud Logging. L'API Live Stream utilizza il nome del servizio API Logging livestream.googleapis.com per registrare le attività relative ai canali.

Prima di iniziare

Attiva il logging della piattaforma

Per impostazione predefinita, i log della piattaforma livestream.googleapis.com/channel_activities per l'API Live Stream sono disattivati. Per attivare i log, devi specificare un livello di gravità durante la creazione o l'aggiornamento della risorsa del canale.

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

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

dove SEVERITY_LEVEL è uno dei seguenti:

  • OFF
  • DEBUG
  • INFO
  • WARNING
  • ERROR

Una volta scelto un livello di gravità per un canale, vengono registrati solo i log della piattaforma con un livello di gravità maggiore o uguale al livello di gravità scelto. Ad esempio, se il livello di gravità è WARNING, vengono registrati solo i log con livello di gravità WARNING e ERROR. Se il livello di gravità è INFO, vengono registrati i log con tutti i livelli di gravità tranne 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 monitorare. Ad esempio, my-channel.

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

    • PROJECT_ID è l'ID del progetto contenente il canale di cui vuoi eseguire il debug o monitorare. 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.

Usa i log della piattaforma

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

StreamingStateChange

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

Di seguito è riportato un esempio di log StreamingStateChange in cui lo stato precedente è 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 limitare il numero di log visualizzati.

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

jsonPayload.streamingStateChange.newState="STREAMING"

Aggiungi il seguente comando per visualizzare solo i log StreamingStateChange:

jsonPayload.streamingStateChange.newState:*

StreamingError

I log StreamingError vengono generati quando un canale rileva un errore relativo allo streaming. Il livello di gravità di un log StreamingError è ERROR.

Di seguito è riportato un esempio di log StreamingError in cui all'API Live Stream è stata negata l'autorizzazione a caricare 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 GCS bucket "STORAGE_BUCKET_NAME""
  ...
  severity: "ERROR"
  ...
}

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

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

InputAccept

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

Il campo InputStreamProperty in un log InputAccept include le seguenti informazioni sui flussi video e audio secondari dello stream di input:

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

Puoi utilizzare i log 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 seguente comando nel campo Query di Esplora log per visualizzare solo i log InputAccept per un flusso specifico:

jsonPayload.inputAccept.streamId="STREAM_ID"

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

InputError

I log InputError vengono generati quando uno stream di input viene rifiutato dall'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 seguente comando nel campo Query di Esplora log per visualizzare solo i log InputError per un flusso specifico:

jsonPayload.inputError.streamId="STREAM_ID"

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

InputDisconnect

I log InputDisconnect vengono generati quando gli stream di input sono disconnessi dall'API Live Stream. Puoi utilizzare i log InputDisconnect per verificare la presenza di disconnessioni impreviste dei live streaming. Il livello di gravità per un log InputDisconnect è 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"
  ...
}