Voci di log di flussi di dati e tailing in tempo reale

Questo documento descrive come visualizzare le voci di log in tempo reale tramite e tailing in tempo reale. I flussi di log consentono di visualizzare le voci di log in tempo reale e sono disponibili nel Esplora log. Il tailing in tempo reale consente di visualizzare le voci di log in tempo reale ed è disponibile come gcloud CLI Comando gcloud alpha logging tail e come metodo API Cloud Logging entries.tail.

Quando visualizzi e analizzi i log utilizzando Esplora log, gcloud logging read o il metodo API entries.list, stai visualizzando le voci di log che Cloud Logging ha archiviato. Quando trasmetti in streaming o voci di log live tail, stai visualizzando le voci di log come le applicazioni le scrivono nell'API Cloud Logging.

Trasmetti i log in Esplora log

In Esplora log puoi visualizzare i dati dei log in tempo reale utilizzando Avvia il flusso dei log. Quando utilizzi Flusso di log, puoi aggiungere una query per trasmettere in flusso solo i log che corrispondono alla query. Per trasmettere i log, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Esplora log:

    Vai a Esplora log

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

  2. Nella casella di testo Query, inserisci una query e fai clic su Avvia flusso di log.

    Poiché Logging scrive i dati dei log, vengono utilizzati solo i log che corrispondono vengono visualizzate nel riquadro Risultati delle query. Se non viene fornita una query, Logging mostra la query le voci di log archiviate. I log continuano a trasmettere in flusso finché non selezioni la barra di scorrimento nel riquadro dei log. Quando lo streaming viene interrotto, viene visualizzato il pulsante Riavvia streaming.

    Per informazioni sulle query, consulta Creare query nel Esplora log.

Utilizzo del tailing in tempo reale in Google Cloud CLI

Il tailing in tempo reale consente di visualizzare le voci di log in tempo reale come Cloud Logging e li scrive utilizzando Google Cloud CLI o l'API Cloud Logging.

Il tailing in tempo reale non è supportato per i bucket di log con controlli di accesso a livello di campo, indipendentemente può eseguire il flusso di log per i bucket in Esplora log.

Per informazioni sul metodo API per il tailing in tempo reale, consulta il metodo entries.tail.

Installazione di gcloud alpha logging tail in corso...

Per utilizzare gcloud alpha logging tail, devi disporre di Python 3 e il pacchetto Python grpcio installato.

Per istruzioni su come installare Python, consulta pagina Python. Per le istruzioni su come installare il gestore di pacchetti Python, pip, necessari per installare il pacchetto grpcio, vedi Pagina di installazione del pacchetto Python.

Completa i seguenti passaggi per installare gcloud alpha logging tail:

  1. Verifica di aver installato Google Cloud CLI. Per istruzioni su come per installare Google Cloud CLI, consulta Installazione di Google Cloud CLI.

  2. Verifica di utilizzare la versione 302.0.0 o successiva delle con gcloud CLI.

    gcloud version
    

    Per istruzioni sull'aggiornamento di gcloud CLI, consulta gcloud components update

  3. Installa i componenti alpha della gcloud CLI:

    gcloud components install alpha
    
  4. Per gli utenti di MacOS, Linux e Cloud Shell:

    1. Installa le librerie client gRPC:

       sudo pip3 install grpcio
      
    2. Imposta la variabile di ambiente CLOUDSDK_PYTHON_SITEPACKAGES su qualsiasi valore:

       export CLOUDSDK_PYTHON_SITEPACKAGES=1
      
  5. Usa i comandi seguenti per impostare l'ID progetto Google Cloud e su autentica:

    gcloud config set project PROJECT_ID
    gcloud auth login
    

    Per ottenere l'ID progetto, consulta la sezione Creazione e gestione Google Cloud.

  6. Verifica che gcloud alpha logging tail sia installato eseguendo questo comando :

    gcloud alpha logging tail
    

    Il comando visualizza il seguente messaggio:

    Initializing tail session.

    Stai visualizzando le voci di log per il tuo progetto Google Cloud come Logging e li scrive.

    Registra le voci durante una sessione live-tail.

Per ulteriori informazioni sull'utilizzo di Live tailing, consulta Guida di riferimento di gcloud alpha logging tail.

Buffering e ordinazione

Poiché Logging può ricevere voci di log in ordine cronologico dell'ordine, il tailing in tempo reale offre un'impostazione di buffer-window in modo da un compromesso tra la visualizzazione delle voci di log mentre vengono scritte visualizzandole in ordine crescente. Puoi impostare la finestra del buffer tra 0 e 60 secondi.

Osserva le seguenti caratteristiche della finestra del buffer:

  • La finestra di buffer predefinita è di due secondi.

  • Logging ritardi nella scrittura delle voci di log nei bucket di log per durata della finestra di buffer.

  • Se una voce di log viene scritta al di fuori della finestra del buffer, Logging restituisce le voci di log man mano che vengono ricevute.

Quando configuri la finestra del buffer, devi trovare un compromesso tra visualizzare i log così come sono scritti e le voci in ordine non corretto.

Finestra del buffer Compromesso
0 secondi Sono state restituite le voci di log più recenti, ma è più probabile che vengano escluse in ordine di importanza.
60 secondi Un ritardo di 60 secondi prima di visualizzare le voci restituite, ma la maggior parte dei log viene restituita in ordine crescente.

Limiti e quote

Nella tabella seguente sono elencati i limiti e le quote per il tailing in tempo reale:

Limiti e quote Valore
Voci restituite al minuto 60.000
Se più di 60.000 voci corrispondono a un filtro, Il logging restituisce il conteggio delle voci nella risposta.
Sessioni aperte di live-tailing per progetto Google Cloud 10

Limitazioni client

Per un progetto Google Cloud che scrive molte voci rapidamente, il client potrebbero non essere in grado di usufruirne con la velocità con cui vengono scritti. Nel in questo caso, Logging limita il numero totale di voci inviate, dando la priorità alle voci più recenti. Alla fine della sessione di coda, Il logging restituisce il numero di voci non visualizzate a causa dei limiti del client.

Utilizzare il tailing in tempo reale con le librerie client

Il tailing in tempo reale consente di visualizzare le voci di log in tempo reale come Cloud Logging e li scrive. Per informazioni sul metodo API per il tailing in tempo reale, consulta il metodo entries.tail.

Il tailing in tempo reale non è supportato per i bucket di log con controlli di accesso a livello di campo, indipendentemente può eseguire il flusso di log per i bucket in Esplora log.

Questo esempio mostra le voci di log di tailing in tempo reale di un determinato logger.

Go

Per scoprire come installare e utilizzare la libreria client per Logging, consulta Librerie client di Logging.

Per autenticarti su Logging, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

Per scoprire come installare e utilizzare la libreria client per Logging, consulta Librerie client di Logging.

Per autenticarti su Logging, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

Per scoprire come installare e utilizzare la libreria client per Logging, consulta Librerie client di Logging.

Per autenticarti su Logging, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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