Questa pagina descrive 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 dell'API Logging
livestream.googleapis.com per registrare l'attività correlata al canale.
Prima di iniziare
- Assicurati di disporre dei ruoli e delle autorizzazioni IAM corretti per visualizzare e gestire i log.
Attivare 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à quando crei o aggiorni la risorsa del canale.
Per attivare i log, aggiungi il seguente campo al corpo JSON della richiesta del
projects.locations.channels.create o del
projects.locations.channels.patch metodo:
"logConfig": {
"logSeverity": "SEVERITY_LEVEL"
},
dove SEVERITY_LEVEL è uno dei seguenti:
OFFDEBUGINFOWARNINGERROR
Una volta scelto un livello di gravità dei log 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 ed ERROR. Se il livello di gravità è INFO, vengono registrati i log di tutti i livelli di gravità, ad eccezione di DEBUG.
Per saperne di più sui livelli di gravità dei log, consulta LogSeverity.
Visualizzare i log della piattaforma
Per visualizzare i log della piattaforma:
Console
Per visualizzare i log della piattaforma nella Google Cloud console:
Vai a Esplora log:
Seleziona ilprogettoappropriato. Google Cloud
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 località 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.
Fai clic su Esegui query.
Per saperne di più 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 del tuo progetto, esegui il seguente comando:
gcloud logging read "logName:projects/PROJECT_ID/logs/livestream.googleapis.com%2Fchannel_activities" --project=PROJECT_ID
dove PROJECT_ID è l'ID del tuo Google Cloud progetto.
Per saperne di più sull'utilizzo dello strumento gcloud con Cloud Logging, consulta
gcloud logging.
Utilizzare i log della piattaforma
Questa sezione descrive come utilizzare e interpretare log specifici della piattaforma per l'API Live Stream.
eventStateChange
I log eventStateChange vengono generati quando lo stato di un evento del canale cambia. 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à di un log eventStateChange è 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 lo stream di input riceve un comando SCTE35. Il livello di gravità di un log scte35CommandReceived è INFO.
Vengono elaborati solo durationFlag, breakDuration, spliceTime e outOfNetworkIndicator. Quando spliceTime è mancante, il comando SCTE35 viene eseguito immediatamente. Tutti gli altri campi vengono trattati come no-op.
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
outOfNetworkIndicator: 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 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 restringere i 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à dei log di un streamingError log è ERROR.
Di seguito è riportato un esempio di log streamingError in cui all'API Live Stream è stata 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 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 inviali al team di assistenza per la risoluzione dei problemi.
inputAccept
I log inputAccept vengono generati quando uno stream di input viene connesso correttamente 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 sottostream video e audio dello stream di input:
| Stream video |
|
| Stream audio |
|
Puoi utilizzare i log inputAccept per verificare il formato e lo stato di accettazione dello stream 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 uno stream specifico:
jsonPayload.inputAccept.streamId="STREAM_ID"
dove STREAM_ID è l'identificatore univoco di uno stream incluso nell'URI dell'endpoint di input.
inputError
I log inputError vengono generati quando uno stream di input viene rifiutato dall'API Live Stream. Il livello di gravità di un log inputError è ERROR.
Di seguito è riportato un esempio di log inputError in cui uno stream di input è stato inviato a un canale che non è ancora iniziato:
{
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 uno stream di input duplicato è stato inviato a un canale che è già 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 uno stream specifico:
jsonPayload.inputError.streamId="STREAM_ID"
dove STREAM_ID è l'identificatore univoco di uno stream incluso nell'URI dell'endpoint di input.
inputDisconnect
I log inputDisconnect vengono generati quando gli stream di input vengono disconnessi dall'API Live Stream. Puoi utilizzare i log inputDisconnect per verificare la presenza di disconnessioni impreviste del live streaming. Il livello di gravità di 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"
...
}