Entradas de registro de transmisión en cola y en tiempo real

En este documento, se describe cómo ver tus entradas de registro en tiempo real a través de la transmisión y la transmisión de registros en tiempo real. 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 de registros en tiempo real te permite ver las entradas de registro en tiempo real y está disponible como el comando de gcloud CLI gcloud alpha logging tail y como el método de la API de Cloud Logging entries.tail.

Cuando ves y analizas tus registros con el Explorador de registros, gcloud logging read o el método de la API entries.list, ves las entradas de registro que almacenó Cloud Logging. Cuando transmites o sigues en tiempo real las entradas de registro, ves las entradas a medida que tus aplicaciones las escriben en la API de Cloud Logging.

Transmite registros en el Explorador de registros

En el Explorador de registros, puedes ver tus datos de registro en tiempo real con Transmitir registros. Cuando usas Transmitir registros, puedes agregar una consulta para transmitir solo los registros que coincidan con ella. Para transmitir registros, haz lo siguiente:

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

    Ir al Explorador de registros

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Logging.

  2. En el campo Consulta, ingresa una consulta y, luego, haz clic en Transmitir registros.

    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 una consulta, Logging mostrará las entradas de registro almacenadas de forma reciente. Los registros seguirán transmitiéndose hasta que selecciones la barra de desplazamiento en el panel de registros. Cuando se detiene la transmisión, se muestra el botón Reiniciar transmisión.

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

Usa el transmisión de registros en tiempo real en Google Cloud CLI

El seguimiento en vivo te permite ver tus entradas de registro en tiempo real a medida que Cloud Logging las escribe, ya sea con Google Cloud CLI o la API de Cloud Logging.

El seguimiento en vivo no es compatible con los buckets de registros que tienen controles de acceso a nivel del campo. Sin embargo, puedes transmitir registros para esos buckets en el Explorador de registros.

Para obtener información sobre el método de la API para el transmisión de registros 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 administrador de paquetes de Python, pip, que se necesita para instalar el paquete grpcio, consulta la página del instalador de paquetes de Python.

Para instalar gcloud alpha logging tail, completa los siguientes pasos:

  1. Verifica que tengas instalada Google Cloud CLI. Para obtener instrucciones sobre cómo instalar Google Cloud CLI, consulta Instala Google Cloud CLI.

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

    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. Para usuarios de MacOS, Linux y Cloud Shell:

    1. Instala las bibliotecas cliente de gRPC:

       sudo pip3 install grpcio
      
    2. Establece la variable de entorno CLOUDSDK_PYTHON_SITEPACKAGES en cualquier valor:

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

    gcloud config set project PROJECT_ID
    gcloud auth login
    

    Para obtener el ID del proyecto, consulta Crea y administra proyectos.

  6. Ejecuta el siguiente comando para verificar que gcloud alpha logging tail esté instalado:

    gcloud alpha logging tail
    

    El comando muestra el siguiente mensaje:

    Initializing tail session.

    Ahora estás viendo las entradas de registro de tu proyecto Google Cloud a medida que Logging las escribe.

    Son las entradas de registro durante una sesión de live-tail.

Para obtener más información sobre el uso del transmisión de registros en tiempo real, consulta la guía de referencia de gcloud alpha logging tail.

Almacenamiento en búfer y ordenamiento

Dado que Logging puede recibir entradas de registro fuera de orden cronológico, el transmisión de registros en tiempo real proporciona un parámetro de configuración 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 establecer el período de búfer entre 0 y 60 segundos.

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

  • El búfer predeterminado es de dos segundos.

  • Logging retrasa la escritura de las entradas de registro en los buckets de registros durante el período de la ventana del búfer.

  • Si se escribe una entrada de registro fuera de la ventana del búfer, Logging devolverá las entradas de registro a medida que se reciban.

Cuando configuras la ventana de búfer, debes elegir entre ver los registros a medida que se escriben o ver las entradas fuera de orden.

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 Se produce una demora de 60 segundos antes de que se muestren las entradas devueltas, pero la mayoría de los registros se devuelven en orden ascendente.

Límites y cuotas

En la siguiente tabla, se enumeran los límites y las cuotas para el transmisión de registros 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, el registro devuelve el recuento de entradas en la respuesta.
Sesiones abiertas de seguimiento de registros en tiempo real por proyecto Google Cloud 10

Limitaciones del cliente

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

Usa el transmisión de registros en tiempo real con las bibliotecas cliente

El seguimiento en vivo te permite 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 transmisión de registros en tiempo real, consulta el método entries.tail.

El seguimiento en vivo no es compatible con los buckets de registros que tienen controles de acceso a nivel del campo. Sin embargo, puedes transmitir registros para esos buckets en el Explorador de registros.

En este ejemplo, se muestra cómo poner en cola las entradas de registro en vivo de un registrador determinado.

Go

Si deseas obtener información para instalar y usar la biblioteca cliente de Logging, consulta las bibliotecas cliente de Logging.

Para autenticarte en Logging, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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

Si deseas obtener información para instalar y usar la biblioteca cliente de Logging, consulta las bibliotecas cliente de Logging.

Para autenticarte en Logging, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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

Si deseas obtener información para instalar y usar la biblioteca cliente de Logging, consulta las bibliotecas cliente de Logging.

Para autenticarte en Logging, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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