Entradas de registro de streaming e acompanhamento ao vivo

Este documento descreve como acessar suas entradas de registro em tempo real por streaming e acompanhamento ao vivo. Os registros de streaming permitem que você acesse as entradas de registro em tempo real e estão disponíveis no Explorador de registros. O acompanhamento ao vivo permite visualizar entradas de registro em tempo real e está disponível como o comando gcloud alpha logging tail da CLI gcloud e como o método entries.tail da API Cloud Logging.

Ao visualizar e analisar seus registros usando o Explorador de registros, gcloud logging read ou o método de API entries.list, você está visualizando entradas de registro que o Cloud Logging armazenou. Quando você faz streaming ou acompanha entradas de registro ao vivo, está visualizando entradas de registro conforme os aplicativos as gravam na API Cloud Logging.

Fazer streaming de registros no Explorador de registros

No Explorador de registros, é possível ver os dados dos registros em tempo real usando Fazer streaming de registros. Ao usar Fazer streaming de registros, você pode adicionar uma consulta para fazer streaming apenas dos registros que correspondem à consulta. Para transmitir logs, 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 Logging.

  2. Na caixa de texto Consulta, insira uma consulta e clique em Registros de stream.

    À medida que o Logging grava os dados de registros, 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 é interrompido, um botão Restart streaming aparece.

    Para mais informações sobre consultas, consulte Criar consultas no Explorador de registros.

Usar acompanhamento ao vivo na Google Cloud CLI

Com o acompanhamento ao vivo, é possível conferir as entradas de registro em tempo real conforme o Cloud Logging as grava, usando a Google Cloud CLI ou a API Cloud Logging.

O acompanhamento em tempo real não é compatível com buckets de registro com controles de acesso no nível do campo. No entanto, você pode transmitir 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 você instalou a Google Cloud CLI. 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 autenticar:

    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 projeto do Google Cloud enquanto elas são gravadas pelo Logging.

    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 nos buckets de registro pela duração 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, você compensa as visualizações dos registros conforme eles são gravados e das 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 vai retornar a contagem de entradas na resposta.
Sessões abertas de acompanhamento ao vivo por projeto do Google Cloud 10

Limitações do cliente

Para um projeto do Google Cloud que grava muitas entradas rapidamente, o cliente pode não ser capaz de consumi-las tão rapidamente quanto elas 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 acompanhamento em tempo real não é compatível com buckets de registro com controles de acesso no nível do campo. No entanto, você pode transmitir 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"
	"cloud.google.com/go/logging/apiv2/loggingpb"
)

// 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