Transmitir y poner en cola entradas de registro

En este documento se describe cómo ver las entradas de registro en tiempo real mediante la transmisión y el seguimiento en directo. La transmisión de registros te permite ver las entradas de registro en tiempo real y está disponible en el explorador de registros. El seguimiento en tiempo real te permite ver las entradas de registro en tiempo real y está disponible como comando gcloud alpha logging tail de la CLI de gcloud y como método entries.tail de la API de Cloud Logging.

Cuando ves y analizas tus registros con el Explorador de registros, gcloud logging read o el método de la API entries.list, estás viendo las entradas de registro que Cloud Logging ha almacenado. Cuando transmite o muestra las últimas entradas de registro, está viendo las entradas de registro a medida que sus aplicaciones las escriben en la API de Cloud Logging.

Transmitir registros en el explorador de registros

En el Explorador de registros, puede ver los datos de sus registros en tiempo real con la opción Registros de streaming. Cuando usas Registros de la emisión, puedes añadir una consulta para emitir solo los registros que coincidan con ella. Para transmitir registros, haz lo siguiente:

  1. En la Google Cloud consola, ve a la página Explorador de registros:

    Ve al Explorador de registros.

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Registro.

  2. En el campo Consulta, introduce una consulta y, a continuación, haz clic en Registros de flujo.

    A medida que Logging escribe los datos de los registros, solo se muestran en el panel Resultados de la consulta los registros que coinciden con la consulta. Si no se proporciona ninguna consulta, Logging muestra las entradas de registro almacenadas recientemente. Los registros seguirán transmitiéndose hasta que selecciones la barra de desplazamiento del panel de registros. Cuando la emisión se haya detenido, se mostrará el botón Reiniciar emisión.

    Para obtener información sobre las consultas, consulta Crear consultas en el Explorador de registros.

Usar el seguimiento en tiempo real en Google Cloud CLI

La función de seguimiento en tiempo real te permite ver tus entradas de registro en tiempo real a medida que Cloud Logging las escribe. Para ello, puedes usar la CLI de Google Cloud o la API de Cloud Logging.

El seguimiento en tiempo real no se admite en los contenedores de registro con controles de acceso a nivel de campo, pero puedes transmitir registros de esos contenedores en el Explorador de registros.

Para obtener información sobre el método de la API para el seguimiento en tiempo real, consulta el método entries.tail.

Instalando gcloud alpha logging tail

Para usar gcloud alpha logging tail, debes tener instalado Python 3 y el paquete de Python grpcio.

Para obtener instrucciones sobre cómo instalar Python, consulta la página de Python. Para obtener instrucciones sobre cómo instalar el gestor de paquetes de Python, pip, que es necesario para instalar el paquete grpcio, consulta la página del instalador de paquetes de Python.

Sigue estos pasos para instalar gcloud alpha logging tail:

  1. Comprueba que tienes instalada Google Cloud CLI. Para obtener instrucciones sobre cómo instalar Google Cloud CLI, consulta el artículo Instalar Google Cloud CLI.

  2. Comprueba que estés usando la versión 302.0.0 o una posterior de la CLI de gcloud.

    gcloud version
    

    Para obtener instrucciones sobre cómo actualizar gcloud CLI, consulta gcloud components update.

  3. Instala los componentes alfa de gcloud CLI:

    gcloud components install alpha
    
  4. Usuarios de macOS, Linux y Cloud Shell:

    1. Instala las bibliotecas de cliente de gRPC:

       sudo pip3 install grpcio
      
    2. Asigna cualquier valor a la variable de entorno CLOUDSDK_PYTHON_SITEPACKAGES:

       export CLOUDSDK_PYTHON_SITEPACKAGES=1
      
  5. Usa los siguientes comandos para definir el ID de tu proyecto de Google Cloud y autenticarte:

    gcloud config set project PROJECT_ID
    gcloud auth login
    

    Para obtener el ID del proyecto, consulta el artículo sobre cómo crear y gestionar proyectos.

  6. Para comprobar que gcloud alpha logging tail está instalado, ejecuta el siguiente comando:

    gcloud alpha logging tail
    

    El comando muestra el siguiente mensaje:

    Initializing tail session.

    Ahora puedes ver las entradas de registro de tu Google Cloud proyecto a medida que Logging las escribe.

    Entradas de registro durante una sesión de seguimiento en tiempo real.

Para obtener más información sobre cómo usar el seguimiento en tiempo real, consulta la guía de referencia de gcloud alpha logging tail.

Almacenamiento en búfer y orden

Como Logging puede recibir entradas de registro fuera de orden cronológico, el seguimiento en tiempo real proporciona un ajuste de ventana de búfer para que puedas equilibrar la compensación entre ver las entradas de registro a medida que se escriben y verlas en orden ascendente. Puedes definir la ventana de búfer entre 0 y 60 segundos.

Tenga en cuenta las siguientes características de la ventana de almacenamiento en búfer:

  • La ventana de búfer predeterminada es de dos segundos.

  • El registro retrasa la escritura de las entradas de registro en los segmentos de registro durante el periodo de la ventana del búfer.

  • Si se escribe una entrada de registro fuera del periodo de la ventana del búfer, Logging devuelve las entradas de registro a medida que se reciben.

Al configurar la ventana de búfer, debes elegir entre ver los registros a medida que se escriben o ver las entradas desordenadas.

Ventana de búfer Compensación
0 segundos Se devuelven las entradas de registro más recientes, pero es más probable que estén desordenadas.
60 segundos Hay un retraso de 60 segundos antes de que se devuelvan las entradas, pero la mayoría de los registros se devuelven en orden ascendente.

Límites y cuotas

En la siguiente tabla se indican los límites y las cuotas de la monitorización en tiempo real:

Límites y cuotas Valor
Entradas devueltas por minuto 60.000
Si más de 60.000 entradas coinciden con un filtro, Logging devuelve el número de entradas en la respuesta.
Sesiones abiertas de seguimiento en tiempo real por Google Cloud proyecto 10

Limitaciones de los clientes

En el caso de un proyecto que escriba muchas entradas rápidamente, es posible que tu cliente no pueda consumirlas tan rápido como se escriben. Google Cloud En este caso, Logging limita el número total de entradas enviadas y prioriza las más recientes. Al final de la sesión de cola, Logging devuelve el número de entradas que no se han mostrado debido a los límites del cliente.

Usar el seguimiento en tiempo real con bibliotecas de cliente

Con la función de seguimiento en directo, puedes ver tus entradas de registro en tiempo real a medida que Cloud Logging las escribe. Para obtener información sobre el método de la API para el seguimiento en tiempo real, consulta el método entries.tail.

El seguimiento en tiempo real no se admite en los contenedores de registro con controles de acceso a nivel de campo, pero puedes transmitir registros de esos contenedores en el Explorador de registros.

En este ejemplo se muestra cómo seguir en tiempo real las entradas de registro de un registrador determinado.

Go

Para saber cómo instalar y usar la biblioteca de cliente de Logging, consulta Bibliotecas de cliente de Logging.

Para autenticarte en Logging, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 cómo instalar y usar la biblioteca de cliente de Logging, consulta Bibliotecas de cliente de Logging.

Para autenticarte en Logging, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 cómo instalar y usar la biblioteca de cliente de Logging, consulta Bibliotecas de cliente de Logging.

Para autenticarte en Logging, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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