Diffusion en flux et affichage en direct des dernières lignes d'entrées de journal

Ce document explique comment afficher vos entrées de journal en temps réel par flux et les affichage des dernières lignes en direct. La diffusion des journaux vous permet d'afficher les entrées de journal en temps réel et est disponible dans Explorateur de journaux : Le suivi en direct vous permet d'afficher les entrées de journal en temps réel et est disponible gcloud CLI Commande gcloud alpha logging tail En tant que méthode de l'API Cloud Logging, entries.tail.

Lorsque vous affichez et analysez vos journaux à l'aide de l'explorateur de journaux, gcloud logging read ou la méthode API entries.list, vous affichez des entrées de journal qui stockées par Cloud Logging. Lorsque vous diffusez du contenu les entrées de journal tail ou live tail, vous les voyez comme applications les écrivent dans l'API Cloud Logging.

Diffuser les journaux dans l'explorateur de journaux

Dans l'explorateur de journaux, vous pouvez afficher les données de vos journaux en temps réel grâce à la Diffusion des journaux. Lorsque vous utilisez la fonctionnalité Diffuser les journaux, vous pouvez ajouter une requête pour diffuser uniquement les journaux correspondant à la requête. Pour diffuser des journaux, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Logging.

  2. Dans la zone de texte Requête, saisissez une requête, puis cliquez sur Diffuser les journaux.

    Lorsque Logging écrit les données de journaux, seuls les journaux correspondant au requête s'affichent dans le volet Résultats de la requête. Si aucune requête n'est fournie, Logging affiche les les entrées de journal stockées. La diffusion des journaux continue jusqu'à ce que vous sélectionniez la barre de défilement du panneau des journaux. Lorsque la diffusion s'arrête, le bouton Redémarrer la diffusion s'affiche.

    Pour en savoir plus sur les requêtes, consultez la section Créer des requêtes dans le Explorateur de journaux :

Utiliser le affichage des dernières lignes en direct dans la Google Cloud CLI

Le suivi en direct vous permet d'afficher vos entrées de journal en temps réel sous forme de journaux les écrit à l'aide de la Google Cloud CLI ou de l'API Cloud Logging.

Le suivi en direct n'est pas compatible avec les buckets de journaux comportant contrôles d'accès au niveau du champ, quelle que soit peuvent diffuser les journaux pour ces buckets dans l'explorateur de journaux.

Pour plus d'informations sur la méthode API pour l'affichage en direct des dernières lignes, consultez la méthode entries.tail.

Installer gcloud alpha logging tail

Pour utiliser gcloud alpha logging tail, vous devez avoir installé Python 3 et le package Python grpcio.

Pour savoir comment installer Python, consultez la page Python. Pour savoir comment installer le gestionnaire de packages Python pip et comment installer le package grpcio, consultez la page Programme d'installation de packages Python.

Pour installer gcloud alpha logging tail, procédez comme suit :

  1. Vérifiez que la Google Cloud CLI est installée. Pour savoir comment pour installer la Google Cloud CLI, consultez Installer la Google Cloud CLI

  2. Vérifiez que vous utilisez la version 302.0.0 ou une version ultérieure gcloud CLI.

    gcloud version
    

    Pour obtenir des instructions sur la mise à jour de la gcloud CLI, consultez gcloud components update.

  3. Installez les composants alpha de la gcloud CLI:

    gcloud components install alpha
    
  4. Pour les utilisateurs de macOS, Linux et Cloud Shell :

    1. Installez les bibliothèques clientes gRPC :

       sudo pip3 install grpcio
      
    2. Définissez la variable d'environnement CLOUDSDK_PYTHON_SITEPACKAGES sur n'importe quelle valeur :

       export CLOUDSDK_PYTHON_SITEPACKAGES=1
      
  5. Utilisez les commandes suivantes pour définir l'ID de votre projet Google Cloud et pour authentifiez-vous:

    gcloud config set project PROJECT_ID
    gcloud auth login
    

    Pour obtenir l'ID du projet, consultez la section Créer et gérer projets.

  6. Vérifiez que gcloud alpha logging tail est installé en exécutant la commande suivante :

    gcloud alpha logging tail
    

    La commande affiche le message suivant:

    Initializing tail session.

    Les entrées de journal de votre projet Google Cloud sont désormais affichées en tant que journaux Logging les écrit.

    Entrées de journal lors d'une session d'affichage en direct des dernières lignes.

Pour plus d'informations sur l'utilisation de l'affichage en direct des dernières lignes, consultez le guide de référence sur gcloud alpha logging tail.

Mise en mémoire tampon et tri

Étant donné que Logging peut recevoir des entrées de journal ne respectant pas l'ordre chronologique, l'affichage en direct des dernières lignes fournit un paramètre de fenêtre de tampon qui vous permet d'équilibrer le compromis entre l'affichage des entrées de journal dès leur écriture et leur affichage dans l'ordre chronologique. Vous pouvez définir la fenêtre de tampon entre 0 et 60 secondes.

Notez les caractéristiques suivantes de la fenêtre de tampon :

  • La fenêtre de tampon par défaut est de deux secondes.

  • La journalisation retarde l'écriture des entrées de journal dans les buckets de journaux pour la la durée de la fenêtre de tampon.

  • Si une entrée de journal est écrite en dehors de la fenêtre de tampon, Logging renvoie les entrées de journal au fur et à mesure de leur réception.

Lorsque vous configurez la fenêtre de tampon, vous devez trouver un compromis afficher les journaux tels qu'ils sont écrits et afficher les entrées dans le désordre.

Fenêtre de tampon Compromis
0 seconde Les entrées de journal les plus récentes sont renvoyées, mais avec une probabilité plus élevée d'être dans le désordre.
60 seconde Délai de 60 secondes avant d'afficher les entrées renvoyées, mais la majeure partie des journaux est renvoyée dans l'ordre chronologique.

Limites et quotas

Le tableau suivant répertorie les limites et les quotas pour l'affichage en direct des dernières lignes :

Limites et quotas Valeur
Entrées renvoyées par minute 60 000
Si plus de 60 000 entrées correspondent à un filtre, alors Logging renvoie le nombre d'entrées dans la réponse.
Ouvrir des sessions de tailing en direct par projet Google Cloud 10

Limites des clients

Pour un projet Google Cloud qui écrit rapidement de nombreuses entrées, ne pourront peut-être pas les utiliser aussi rapidement qu'ils sont écrits. Dans ce cas, Logging limite le nombre total d'entrées envoyées, en privilégiant les entrées les plus récentes. À la fin de la session d'affichage en direct des dernières lignes, Logging renvoie le nombre d'entrées qui n'ont pas été affichées en raison des limites du client.

Utiliser le affichage des dernières lignes en direct avec des bibliothèques clientes

L'affichage en direct des dernières lignes vous permet d'afficher vos entrées de journal en temps réel à mesure que Cloud Logging les écrit. Pour plus d'informations sur la méthode API pour l'affichage en direct des dernières lignes, consultez la méthode entries.tail.

Le suivi en direct n'est pas compatible avec les buckets de journaux comportant contrôles d'accès au niveau du champ, quelle que soit peuvent diffuser les journaux pour ces buckets dans l'explorateur de journaux.

Cet exemple fait la démonstration de l'affichage en direct des entrées de journal pour un enregistreur donné.

Go

Pour savoir comment installer et utiliser la bibliothèque cliente pour Logging, consultez Bibliothèques clientes Logging.

Pour vous authentifier auprès de Logging, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Logging, consultez Bibliothèques clientes Logging.

Pour vous authentifier auprès de Logging, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Logging, consultez Bibliothèques clientes Logging.

Pour vous authentifier auprès de Logging, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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