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 à l'aide d'un flux et d'un affichage des dernières lignes en direct. Les journaux de streaming vous permettent d'afficher les entrées de journal en temps réel et sont disponibles dans l'explorateur de journaux. La fonctionnalité de talonnage en direct vous permet d'afficher les entrées de journal en temps réel. Elle est disponible via la commande gcloud CLI gcloud alpha logging tail et la méthode de l'API Cloud Logging entries.tail.

Lorsque vous affichez et analysez vos journaux à l'aide de l'explorateur de journaux, de gcloud logging read ou de la méthode API entries.list, vous affichez les entrées de journal stockées par Cloud Logging. Lorsque vous diffusez des entrées de journal en flux continu ou en direct, vous les affichez au fur et à mesure que vos 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 ne diffuser que les journaux correspondant à la requête. Pour diffuser des journaux, procédez comme suit:

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez Logging, puis Explorateur de journaux :

    Accéder à l'explorateur de journaux

  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 à la requête s'affichent dans le volet Résultats de la requête. Si aucune requête n'est fournie, Logging affiche les entrées de journal récemment stockées. La diffusion des journaux se poursuit 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 l'explorateur de journaux.

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

La fonctionnalité de talonnage en direct vous permet d'afficher vos entrées de journal en temps réel au fur et à mesure que Cloud Logging les écrit, à l'aide de la Google Cloud CLI ou de l'API Cloud Logging.

Le tailing en direct n'est pas compatible avec les buckets de journaux avec contrôle des accès au niveau du champ, mais vous pouvez diffuser les journaux de ces buckets en flux continu 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 installer la Google Cloud CLI, consultez la page Installer Google Cloud CLI.

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

    gcloud version
    

    Pour obtenir des instructions sur la mise à jour de la gcloud CLI, consultez la page 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. Exécutez les commandes suivantes pour définir l'ID de votre projet Google Cloud et vous authentifier:

    gcloud config set project PROJECT_ID
    gcloud auth login
    

    Pour obtenir l'ID du projet, consultez Créer et gérer des 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.

    Vous consultez maintenant les entrées de journal de votre projet Google Cloud au fur et à mesure que 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.

  • Logging retarde l'écriture des entrées de journal dans les buckets de journaux pendant 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.

Lors de la configuration de la fenêtre de tampon, vous faites un compromis entre l'affichage des journaux en cours d'écriture et l'affichage des 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, 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, votre client ne pourra peut-être pas les utiliser aussi rapidement qu'elles sont en cours d'écriture. 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 l'affichage des dernières lignes en direct avec les 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 tailing en direct n'est pas compatible avec les buckets de journaux avec contrôle des accès au niveau du champ, mais vous pouvez diffuser les journaux de ces buckets en flux continu 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 la section 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 la section 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 la section 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