Nesta página, descrevemos como usar os registros da plataforma gerados pela API Live Stream como parte do Cloud Logging. A API Live Stream usa o nome do serviço da API Logging
livestream.googleapis.com para registrar atividades relacionadas ao canal.
Antes de começar
- Verifique se você tem as permissões e os papéis do IAM corretos para ver e gerenciar registros.
Ativar a geração de registros da plataforma
Por padrão, os registros da plataforma livestream.googleapis.com/channel_activities para a API Live Stream estão desativados. Para ativar os registros, especifique um nível de gravidade ao criar ou atualizar o recurso de canal.
Para ativar os registros, adicione o campo a seguir ao corpo JSON da solicitação do método
projects.locations.channels.create ou
projects.locations.channels.patch:
"logConfig": {
"logSeverity": "SEVERITY_LEVEL"
},
em que SEVERITY_LEVEL é um dos seguintes:
OFFDEBUGINFOWARNINGERROR
Depois de escolher um nível de gravidade do registro para um canal, somente os registros da plataforma com
um nível de gravidade maior ou igual ao escolhido serão registrados.
Por exemplo, se o nível de gravidade for WARNING, apenas os registros com níveis de gravidade
WARNING e ERROR serão registrados. Se o nível de gravidade for INFO, os registros de todos os níveis de gravidade, exceto DEBUG, serão registrados.
Para mais informações sobre os níveis de gravidade do registro, consulte LogSeverity.
Ver registros da plataforma
Para conferir os registros da plataforma, siga as instruções abaixo:
Console
Para ver os registros da plataforma no console do Google Cloud :
Acesse a Análise de registros:
Selecione o projeto Google Cloud adequado.
No campo Consulta, insira 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.
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 usar a Análise de registros.
gcloud
A ferramenta de linha de comando gcloud fornece uma interface de linha de comando para o Cloud Logging.
Para conferir os registros do 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 da plataforma
Nesta seção, descrevemos como usar e interpretar registros específicos da plataforma para a API Live Stream.
eventStateChange
Os registros eventStateChange são gerados quando o estado de um evento de canal muda. O nível de gravidade de um registro eventStateChange é ERROR quando o novo estado do evento do canal é FAILED. Caso contrário, o nível de gravidade de um registro eventStateChange será INFO.
Confira abaixo 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 fluxo de entrada recebe um
comando SCTE35. O nível de gravidade de um registro scte35CommandReceived é INFO.
Somente durationFlag, breakDuration, spliceTime e outOfNetworkIndicator são processados. Quando spliceTime está ausente, o comando SCTE35 é executado imediatamente. Todos os outros campos são tratados como ambiente autônomo.
Confira abaixo 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
outOfNetworkIndicator: 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 transmissão de um canal muda. O nível de gravidade de um registro streamingStateChange é ERROR quando o novo estado do canal é STREAMING_ERROR. Caso contrário, o nível de gravidade de um registro streamingStateChange será INFO.
Confira a seguir um exemplo de um registro de streamingStateChange em que o estado
anterior é STREAMING_ERROR e o novo estado é 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 mostrados.
Adicione o comando a seguir para mostrar todos os registros de streamingStateChange em que o novo estado é STREAMING:
jsonPayload.streamingStateChange.newState="STREAMING"
Adicione o comando a seguir para mostrar apenas os registros de streamingStateChange:
jsonPayload.streamingStateChange.newState:*
streamingError
Os registros streamingError são gerados quando um canal encontra um erro relacionado ao streaming. O nível de gravidade do registro de um registro streamingError é ERROR.
Confira a seguir um exemplo de um registro streamingError em que a API Live Stream teve a permissão negada para fazer upload de arquivos de saída para o bucket do 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"
...
}
Esse erro também pode ocorrer se o bucket do Cloud Storage especificado não existir.
Se streamingError.message mostrar a mensagem This is due to an internal
error. If the error persists, please contact support team, copie o conteúdo do registro e envie para a equipe de suporte para solucionar o problema.
inputAccept
Os registros inputAccept são gerados quando um fluxo de entrada é conectado com êxito
ao endpoint de entrada da API Live Stream. O nível de gravidade dos registros inputAccept é INFO.
O campo inputStreamProperty em um registro inputAccept inclui as seguintes informações sobre os subfluxos de vídeo e áudio do fluxo de entrada:
| Streams de vídeo |
|
| Streams de áudio |
|
Use os registros inputAccept para verificar o formato e o status de aceitação do
fluxo 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 mostrar
apenas registros inputAccept de um fluxo específico:
jsonPayload.inputAccept.streamId="STREAM_ID"
em que STREAM_ID é o identificador exclusivo de um fluxo incluído no URI do endpoint de entrada.
inputError
Os registros inputError são gerados quando um fluxo de entrada é rejeitado pela API Live Stream. O nível de gravidade de um registro inputError é ERROR.
Confira a seguir um exemplo de registro inputError em que um fluxo de entrada foi enviado
para um canal que ainda não foi 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"
...
}
Confira um exemplo de um registro inputError em que um stream de entrada duplicado
foi enviado para um canal que já estava fazendo 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"
...
}
Adicione o comando a seguir no campo Consulta da Análise de registros para mostrar apenas os registros de
inputError de um fluxo específico:
jsonPayload.inputError.streamId="STREAM_ID"
em que STREAM_ID é o identificador exclusivo de um fluxo incluído no URI do endpoint de entrada.
inputDisconnect
Os registros inputDisconnect são gerados quando os fluxos de entrada são desconectados da API Live Stream. Use os registros inputDisconnect para verificar se há
desconexões inesperadas na transmissão ao vivo. O nível de gravidade de um registro inputDisconnect
é INFO.
Confira abaixo 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"
...
}