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. O streaming de registros permite exibir as entradas de registro em tempo real e está disponível no Análise de registros. O acompanhamento em tempo real permite visualizar as entradas de registro em tempo real e está disponível como CLI gcloud comando gcloud alpha logging tail e como o método da API Cloud Logging entries.tail

Ao conferir e analisar seus registros usando a Análise de registros, gcloud logging read ou o método da API entries.list, você tem acesso a entradas de registro que o Cloud Logging já 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. Quando você usa a opção Fazer streaming de registros, pode 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 Logging.

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

    Conforme o Logging grava os dados, apenas os registros que correspondem ao consulta são mostradas no painel Resultados da consulta. Se uma consulta não for fornecida, o Logging mostrará a última para entradas de registro armazenadas. 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 obter informações sobre consultas, consulte Criar consultas no Análise de registros.

Usar o acompanhamento ao vivo na Google Cloud CLI

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

O acompanhamento em tempo real não é compatível com buckets de registros com controles de acesso em nível de campo, mas 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 a Google Cloud CLI está instalada. Para instruções sobre como para instalar a Google Cloud CLI, consulte Como instalar a CLI do Google Cloud.

  2. Verifique se você está usando a versão 302.0.0 ou posterior do 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.

    As entradas de registro do seu projeto do Google Cloud aparecem como registros as escrever.

    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 dos da janela de 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ê precisa escolher visualizando registros como eles são gravados e visualizando 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 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, seu cliente podem não ser capazes de consumi-los tão rapidamente quanto estão sendo escritos. 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 registros com controles de acesso em nível de campo, mas 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