Entradas de registro de streaming e acompanhamento ao vivo

Neste documento, descrevemos como exibir suas entradas de registro em tempo real por streaming e acompanhamento ao vivo. O streaming de registros permite visualizar entradas de registro em tempo real e está disponível na Análise de registros. O acompanhamento ativo permite visualizar as entradas de registro em tempo real e está disponível como o comando da CLI gcloud gcloud alpha logging tail e como o método da API Cloud Logging entries.tail.

Ao visualizar e analisar seus registros usando a Análise de registros, gcloud logging read ou o método de API entries.list, você visualiza as entradas de registro armazenadas pelo Cloud Logging. Ao fazer streaming ou entradas de registro de cauda ativa, você as visualiza à medida que seus aplicativos as gravam na API Cloud Logging.

Fazer streaming de registros na Análise de registros

No Explorador de registros, é possível ver os dados dos registros em tempo real usando Fazer streaming de registros. Ao usar Registros de streaming, é possível adicionar uma consulta para transmitir apenas os registros que correspondem à consulta. Para fazer streaming de registros, faça o seguinte:

  1. No console do Google Cloud, acesse a página Análise de registros:

    Acessar a Análise de registros

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Geração de registros.

  2. Na caixa de texto Consulta, insira uma consulta e clique em Fazer streaming de registros.

    À medida que o Logging grava os dados, somente os registros que correspondem à consulta são mostrados no painel Resultados da consulta. Se uma consulta não for fornecida, o Logging mostrará as entradas de registro armazenadas recentemente. Os registros continuam sendo transmitidos até que você selecione a barra de rolagem no painel de registros. Quando o streaming parar, o botão Reiniciar streaming será exibido.

    Para informações sobre consultas, consulte Criar consultas na Análise de registros.

Usar o acompanhamento ao vivo na Google Cloud CLI

O acompanhamento em tempo real permite visualizar suas entradas de registro em tempo real conforme o Cloud Logging as grava, usando a Google Cloud CLI ou a API Cloud Logging.

O tailing em tempo real não é compatível com buckets de registros com controles de acesso no nível do campo. No entanto, é possível fazer streaming de registros para esses buckets na Análise de registros.

Para informações sobre o método da API para acompanhamento ao vivo, consulte o método entries.tail.

Como instalar gcloud alpha logging tail

Para usar gcloud alpha logging tail, você precisa ter o Python 3 e o pacote grpcio do Python instalados.

Para instruções sobre como instalar o Python, consulte a página Python. Para instruções sobre como instalar o gerenciador de pacotes Python, pip, que é necessário para instalar o pacote grpcio, consulte a Página do instalador de pacotes Python.

Conclua as etapas a seguir para instalar o gcloud alpha logging tail:

  1. Verifique se a Google Cloud CLI está instalada. Para instruções sobre como instalar a Google Cloud CLI, consulte Como instalar a Google Cloud CLI.

  2. Verifique se você está usando a versão 302.0.0 ou mais recente da CLI gcloud.

    gcloud version
    

    Para instruções sobre como atualizar a CLI gcloud, consulte gcloud components update.

  3. Instale os componentes Alfa da CLI gcloud:

    gcloud components install alpha
    
  4. Para usuários do MacOS, Linux e Cloud Shell:

    1. Instale as bibliotecas de cliente do gRPC:

       sudo pip3 install grpcio
      
    2. Defina a variável de ambiente CLOUDSDK_PYTHON_SITEPACKAGES como qualquer valor:

       export CLOUDSDK_PYTHON_SITEPACKAGES=1
      
  5. Use os seguintes comandos para definir o ID do projeto do Google Cloud e fazer a autenticação:

    gcloud config set project PROJECT_ID
    gcloud auth login
    

    Para conseguir o ID do projeto, consulte Como criar e gerenciar projetos.

  6. Verifique se gcloud alpha logging tail está instalado executando o seguinte comando:

    gcloud alpha logging tail
    

    O comando mostra a seguinte mensagem:

    Initializing tail session.

    Agora você está visualizando as entradas de registro do seu projeto do Google Cloud conforme o Logging as grava.

    Entradas de registro durante uma sessão de acompanhamento ao vivo.

Para mais informações sobre como usar o acompanhamento ao vivo, consulte o guia de referência do gcloud alpha logging tail.

Armazenamento em buffer e pedidos

Como o Logging pode receber entradas de registro fora da ordem cronológica, o acompanhamento ao vivo fornece uma configuração de janela de buffer para que você possa equilibrar a compensação entre visualizar as entradas de registro conforme elas são gravadas e visualizá-las em ordem crescente. É possível definir a janela de buffer entre 0 e 60 segundos.

Observe as seguintes características da janela de buffer:

  • A janela de buffer padrão é de dois segundos.

  • O Logging atrasa a gravação das entradas de registro em buckets de registros durante o período da janela do buffer.

  • Se uma entrada de registro for gravada fora da janela do buffer, o Logging retornará as entradas à medida que forem recebidas.

Ao configurar a janela de buffer, é preciso escolher entre visualizar os registros à medida que eles são gravados e visualizar as entradas fora de ordem.

Janela de buffer Compensação
0 segundos As entradas de registro mais recentes são retornadas, mas é mais provável que elas estejam fora de ordem.
60 segundos Um atraso de 60 segundos antes de ver as entradas retornadas, mas a maioria dos registros é retornada em ordem crescente.

Limites e cotas

A tabela a seguir lista os limites e as cotas para o acompanhamento ao vivo:

Limites e cotas Valor
Entradas retornadas por minuto 60.000
Se mais de 60.000 entradas corresponderem a um filtro, o Logging retornará a contagem de entradas na resposta.
Sessões de acompanhamento ao vivo abertas por projeto do Google Cloud 10

Limitações do cliente

Para um projeto do Google Cloud que grava muitas entradas rapidamente, seu cliente pode não conseguir consumi-las tão rapidamente quanto estão sendo gravadas. Nesse caso, o Logging limita o número total de entradas enviadas, priorizando as entradas mais recentes. No final da sessão de acompanhamento, o Logging retorna o número de entradas que não foram exibidas devido aos limites do cliente.

Usar o acompanhamento ao vivo com bibliotecas de cliente

Com o acompanhamento ao vivo, é possível ver as entradas de registro em tempo real conforme o Cloud Logging as grava. Para informações sobre o método da API para acompanhamento ao vivo, consulte o método entries.tail.

O tailing em tempo real não é compatível com buckets de registros com controles de acesso no nível do campo. No entanto, é possível fazer streaming de registros para esses buckets na Análise de registros.

Este exemplo demonstra entradas de registro de acompanhamento ao vivo de um determinado logger.

Go

Para saber como instalar e usar a biblioteca de cliente do Logging, consulte Bibliotecas de cliente do Logging.

Para autenticar no Logging, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

import (
	"context"
	"fmt"
	"io"

	logging "cloud.google.com/go/logging/apiv2"
	loggingpb "google.golang.org/genproto/googleapis/logging/v2"
)

// tailLogs creates a channel to stream log entries that were recently ingested for a project
func tailLogs(projectID string) error {
	// projectID := "your_project_id"

	ctx := context.Background()
	client, err := logging.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("NewClient error: %w", err)
	}
	defer client.Close()

	stream, err := client.TailLogEntries(ctx)
	if err != nil {
		return fmt.Errorf("TailLogEntries error: %w", err)
	}
	defer stream.CloseSend()

	req := &loggingpb.TailLogEntriesRequest{
		ResourceNames: []string{
			"projects/" + projectID,
		},
	}
	if err := stream.Send(req); err != nil {
		return fmt.Errorf("stream.Send error: %w", err)
	}

	// read and print two or more streamed log entries
	for counter := 0; counter < 2; {
		resp, err := stream.Recv()
		if err == io.EOF {
			break
		}
		if err != nil {
			return fmt.Errorf("stream.Recv error: %w", err)
		}
		fmt.Printf("received:\n%v\n", resp)
		if resp.Entries != nil {
			counter += len(resp.Entries)
		}
	}
	return nil
}

Java

Para saber como instalar e usar a biblioteca de cliente do Logging, consulte Bibliotecas de cliente do Logging.

Para autenticar no Logging, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

import com.google.cloud.logging.LogEntry;
import com.google.cloud.logging.LogEntryServerStream;
import com.google.cloud.logging.Logging;
import com.google.cloud.logging.Logging.TailOption;
import com.google.cloud.logging.LoggingOptions;

public class TailLogEntries {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Optionally provide the logname as an argument.
    String logName = args.length > 0 ? args[0] : "";

    LoggingOptions options = LoggingOptions.getDefaultInstance();
    try (Logging logging = options.getService()) {

      // Optionally compose a filter to tail log entries only from specific log
      LogEntryServerStream stream;

      if (logName != "") {
        stream =
            logging.tailLogEntries(
                TailOption.filter(
                    "logName=projects/" + options.getProjectId() + "/logs/" + logName));
      } else {
        stream = logging.tailLogEntries();
      }
      System.out.println("start streaming..");
      for (LogEntry log : stream) {
        System.out.println(log);
        // cancel infinite streaming after receiving first entry
        stream.cancel();
      }
    }
  }
}

Node.js

Para saber como instalar e usar a biblioteca de cliente do Logging, consulte Bibliotecas de cliente do Logging.

Para autenticar no Logging, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

const {Logging} = require('@google-cloud/logging');
const logging = new Logging();

/**
 * TODO(developer): Replace logName with the name of your log.
 */
const log = logging.log(logName);
console.log('running tail log entries test');

const stream = log
  .tailEntries({
    filter: 'timestamp > "2021-01-01T23:00:00Z"',
  })
  .on('error', console.error)
  .on('data', resp => {
    console.log(resp.entries);
    console.log(resp.suppressionInfo);
    // If you anticipate many results, you can end a stream early to prevent
    // unnecessary processing and API requests.
    stream.end();
  })
  .on('end', () => {
    console.log('log entry stream has ended');
  });

// Note: to get all project logs, invoke logging.tailEntries