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

Présentation

Cette page explique comment afficher vos entrées de journal en temps réel.

Cloud Logging vous permet d'afficher vos entrées de journal en temps réel à mesure que Logging les écrit grâce aux fonctionnalités suivantes :

Diffuser les journaux La diffusion des journaux est disponible dans l'explorateur de journaux.

Affichage en direct des dernières lignes L'affichage en direct des dernières lignes est disponible avec l'outil de ligne de commande gcloud gcloud alpha logging tail et avec la méthode d'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 d'API entries.list, vous consultez les entrées de journal que Cloud Logging a déjà stockées. En revanche, lorsque vous les diffusez en flux continu ou en direct, vous pouvez afficher les entrées dès que vos applications les écrivent dans l'API Cloud Logging.

Diffuser des 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 Diffusion des journaux, vous pouvez ajouter une requête à l'explorateur de journaux pour ne diffuser que les journaux correspondant à la requête.

Pour diffuser des journaux en fonction d'une requête, ajoutez la requête dans le volet du générateur de requêtes puis sélectionnez Diffuser les journaux. Lorsque Logging écrit les données de journalisation, seuls les journaux correspondant à la requête sont affichés dans le volet Résultat de requête. Si aucune requête n'est fournie, Logging affiche les entrées de journal au fur et à mesure de leur écriture.

Diffuser les journaux correspondant à une expression de requête

Pour arrêter la diffusion, cliquez sur Arrêter la diffusion ou faites défiler la page vers le bas dans le volet Résultats de requête.

Affichage en direct des dernières lignes en utilisant l'outil de ligne de commande gcloud

L'affichage en direct des dernières lignes vous permet d'afficher vos entrées de journal en temps réel pendant que Cloud Logging les écrit à l'aide de l'outil de ligne de commande gcloud ou de l'API Cloud Logging.

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 l'outil de ligne de commande gcloud est bien installé. Pour savoir comment installer l'outil de ligne de commande gcloud, consultez la page Installer le SDK Cloud.

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

    gcloud version
    

    Pour obtenir des instructions sur la mise à jour de l'outil gcloud, consultez la page gcloud components update.

  3. Installez les composants alpha de l'outil gcloud :

    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 Cloud et vous authentifier :

    gcloud config set project PROJECT_ID
    gcloud auth login
    
  6. Vérifiez que gcloud alpha logging tail est installé en exécutant la commande suivante :

    gcloud alpha logging tail
    

    Vous consultez maintenant les entrées de journal de votre projet au fur et à mesure qu'elles sont écrites par Logging.

    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'ingestion des entrées de journal pendant la durée de la fenêtre de mémoire 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 devez faire un compromis entre l'affichage des journaux dès l'ingestion et leur affichage 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
Lorsque plus de 60 000 entrées correspondent à un filtre, Logging les supprime et renvoie le nombre d'entrées supprimées dans la réponse.
Sessions d'affichage des dernières lignes en direct par projet Cloud 10

Limites des clients

Si un projet Cloud écrit rapidement de nombreuses entrées, votre client risque de ne pas pouvoir les consommer aussi rapidement qu'elles sont écrites. 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.

Affichage en direct des dernières lignes 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.

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

Node.js

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

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

Java

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

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();
      }
    }
  }
}