Streaming und Live-Verfolgung von Logeinträgen

Übersicht

Auf dieser Seite wird beschrieben, wie Sie Ihre Logeinträge in Echtzeit aufrufen.

In Cloud Logging können Sie mit den folgenden Features Ihre Logeinträge in Echtzeit aufrufen, während Logging sie schreibt:

Logs streamen. Das Streaming von Logs ist im Log-Explorer verfügbar.

Live-Verfolgung. Live-Verfolgung ist als das gcloud-Befehlszeilentoolgcloud alpha logging tail und als die Cloud Logging API-Methode entries.tail verfügbar.

Wenn Sie Ihre Logs mit dem Log-Explorer, gcloud logging read oder der API-Methode entries.list aufrufen und analysieren, sehen Sie Folgendes: Logeinträge, die von Cloud Logging bereits gespeichert wurden. Im Gegensatz dazu sehen Sie beim Streamen und bei der Live-Verfolgung Logeinträge, sobald Ihre Anwendungen sie in die Cloud Logging API schreiben.

Logs im Log-Explorer streamen

Im Log-Explorer können Sie Ihre Logdaten in Echtzeit mithilfe von Logs streamen aufrufen. Wenn Sie Logs streamen verwenden, können Sie dem Log-Explorer eine Abfrage hinzufügen, um nur die Logs zu streamen, die der Abfrage entsprechen.

Wenn Sie Logs auf Basis einer Abfrage streamen möchten, fügen Sie im Bereich Query Builder eine Abfrage hinzu und wählen Sie dann Logs streamen aus. Während Logging Logdaten schreibt, werden im Bereich Abfrageergebnis nur die Logs angezeigt, die mit der Abfrage übereinstimmen. Wird keine Abfrage bereitgestellt, so zeigt Logging jedes Log an, sobald es geschrieben wird.

Logs streamen, die mit einem Abfrageausdruck übereinstimmen

Klicken Sie zum Beenden des Streamings auf Streaming beenden oder scrollen Sie im Bereich Abfrageergebnisse nach unten.

Live-Verfolgung mit dem gcloud-Befehlszeilentool

Mit der Live-Verfolgung können Sie Ihre Logeinträge in Echtzeit anzeigen, während Cloud Logging sie schreibt, indem Sie entweder das gcloud-Befehlszeilentool oder die Cloud Logging API verwenden.

Informationen zur API-Methode für die Live-Verfolgung finden Sie unter der Methode entries.tail.

gcloud alpha logging tail installieren

Zur Verwendung von gcloud alpha logging tail müssen Python 3 und das Python-Paket grpcio installiert sein.

Eine Anleitung zum Installieren von Python finden Sie auf der Python-Seite. Eine Anleitung zum Installieren des Python-Paketmanagers pip, der zur Installation des Pakets grpcio erforderlich ist, finden Sie auf der Seite zum Python-Paketinstallationsprogramm.

Führen Sie die folgenden Schritte aus, um gcloud alpha logging tail zu installieren:

  1. Prüfen Sie, ob das gcloud-Befehlszeilentool installiert ist. Eine Anleitung zum Installieren des gcloud-Befehlszeilentools finden Sie unter Cloud SDK installieren.

  2. Prüfen Sie, ob Sie Version 302.0.0 oder höher des gcloud-Tools verwenden.

    gcloud version
    

    Eine Anleitung zum Aktualisieren des gcloud-Tools finden Sie unter gcloud components update.

  3. Installieren Sie die Alphakomponenten des gcloud-Tools:

    gcloud components install alpha
    
  4. Führen Sie für MacOS-, Linux- und Cloud Shell-Nutzer Folgendes aus:

    1. Installieren Sie gRPC-Clientbibliotheken:

       sudo pip3 install grpcio
      
    2. Legen Sie die Umgebungsvariable CLOUDSDK_PYTHON_SITEPACKAGES auf einen beliebigen Wert fest:

       export CLOUDSDK_PYTHON_SITEPACKAGES=1
      
  5. Verwenden Sie die folgenden Befehle, um Ihre Cloud-Projekt-ID festzulegen und sich zu authentifizieren:

    gcloud config set project PROJECT_ID
    gcloud auth login
    
  6. Prüfen Sie mit dem folgenden Befehl, ob gcloud alpha logging tail installiert ist:

    gcloud alpha logging tail
    

    Sie sehen jetzt die Logeinträge für Ihr Projekt, während Logging sie schreibt.

    Logeinträge während einer Live-Sitzung zur Live-Verfolgung

Weitere Informationen zur Verwendung der Live-Verfolgung finden Sie im gcloud alpha logging tail-Referenzhandbuch.

Zwischenspeichern und sortieren

Da Logging Logeinträge in chronologischer Reihenfolge empfangen kann, bietet die Live-Verfolgung eine Zwischenspeicherfenstereinstellung, sodass Sie den richtigen Kompromiss zwischen dem Aufrufen der Logeinträge beim Schreiben und dem Anzeigen in aufsteigender Reihenfolge finden können. Sie können für das Zwischenspeicherfenster einen Wert zwischen 0 und 60 Sekunden festlegen.

Beachten Sie die folgenden Eigenschaften des Zwischenspeicherfensters:

  • Das Zwischenspeicherfenster beträgt standardmäßig zwei Sekunden.

  • Logging verzögert die Aufnahme der Logeinträge für die Dauer des Zwischenspeicherfensters.

  • Wenn ein Logeintrag außerhalb des Zwischenspeicherfensters geschrieben wird, gibt Logging die Logeinträge so zurück, wie sie empfangen werden.

Beim Konfigurieren des Zwischenspeicherfensters müssen Sie einen Kompromiss zwischen dem Aufrufen von Logs beim Aufnehmen und dem Ansehen der Einträge in der falschen Reihenfolge eingehen.

Zwischenspeicherfenster Kompromiss
0 Sekunden Die neuesten zurückgegebenen Logeinträge, allerdings mit einer höheren Wahrscheinlichkeit, dass sie in der falschen Reihenfolge vorliegen
60 Sekunden Eine Verzögerung von 60 Sekunden, bevor die zurückgegebenen Einträge angezeigt werden, aber die meisten Logs werden in aufsteigender Reihenfolge zurückgegeben

Limits und Kontingente

In der folgenden Tabelle sind die Limits und Kontingente für die Live-Verfolgung aufgeführt:

Limits und Kontingente Wert
Zurückgegebene Einträge pro Minute 60.000
Wenn mehr als 60.000 Einträge mit einem Filter übereinstimmen, werden sie von Logging unterdrückt und es wird die Anzahl der unterdrückten Einträge in der Antwort zurückgegeben.
Live-Tailing-Sitzungen pro Cloud-Projekt öffnen 10

Clienteinschränkungen

Bei einem Cloud-Projekt, das viele Einträge schnell schreibt, kann Ihr Client sie möglicherweise nicht so schnell verarbeiten, wie sie geschrieben werden. In diesem Fall begrenzt Logging die Gesamtzahl der gesendeten Einträge, wobei die neuesten Einträge priorisiert werden. Am Ende der Verfolgungsitzung gibt Logging die Anzahl der Einträge zurück, die aufgrund der Limits des Clients nicht angezeigt wurden.

Live-Verfolgung mit Clientbibliotheken

Live-Tailing ermöglicht Ihnen, Ihre Logeinträge in Echtzeit aufzurufen, während Cloud Logging sie schreibt. Informationen zur API-Methode für die Live-Verfolgung finden Sie unter der Methode entries.tail.

Dieses Beispiel zeigt die Live-Verfolgung von Logeinträgen eines bestimmten Loggers.

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für Logging finden Sie unter Logging-Clientbibliotheken.

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

Informationen zum Installieren und Verwenden der Clientbibliothek für Logging finden Sie unter Logging-Clientbibliotheken.

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