Streaming und Live-Verfolgung von Logeinträgen

In diesem Dokument wird beschrieben, wie Sie Ihre Logeinträge in Echtzeit anzeigen, indem Sie sie streamen und live verfolgen. Mit dem Streaming von Logs können Sie Logeinträge in Echtzeit aufrufen. Diese Funktion ist im Log-Explorer verfügbar. Mit der Live-Verfolgung können Sie Logeinträge in Echtzeit anzeigen. Sie ist als gcloud CLI-Befehl gcloud alpha logging tail und als 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 gespeichert wurden. Wenn Sie Logeinträge streamen oder live verfolgen, sehen Sie die Logeinträge, während 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 eine Abfrage hinzufügen, um nur die Logs zu streamen, die der Abfrage entsprechen. So streamen Sie Protokolle:

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zum Log-Explorer

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.

  2. Geben Sie im Textfeld Abfrage eine Abfrage ein und klicken Sie dann auf Logs streamen.

    Während Logging die Logdaten schreibt, werden im Bereich Abfrageergebnisse nur Logs angezeigt, die mit der Abfrage übereinstimmen. Wenn keine Abfrage festgelegt ist, werden in Logging die kürzlich gespeicherten Logeinträge angegeben. Die Protokolle werden weiter gestreamt, bis Sie die Bildlaufleiste im Bereich „Protokolle“ auswählen. Wenn das Streaming beendet wurde, wird die Schaltfläche Streaming fortsetzen angezeigt.

    Weitere Informationen zu Abfragen finden Sie unter Abfragen im Log-Explorer erstellen.

Live-Tailing in der Google Cloud CLI verwenden

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

Die Live-Verfolgung wird für Log-Buckets mit Zugriffssteuerungen auf Feldebene nicht unterstützt. Sie können jedoch Logs für diese Buckets im Log-Explorer streamen.

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 die Google Cloud CLI installiert ist. Eine Anleitung zum Installieren der Google Cloud CLI finden Sie unter Google Cloud CLI installieren.

  2. Prüfen Sie, ob Sie Version 302.0.0 oder höher der gcloud CLI verwenden.

    gcloud version
    

    Eine Anleitung zum Aktualisieren der gcloud CLI finden Sie unter gcloud components update.

  3. Installieren Sie die Alpha-Komponenten der gcloud CLI:

    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 Google Cloud-Projekt-ID festzulegen und sich zu authentifizieren:

    gcloud config set project PROJECT_ID
    gcloud auth login
    

    Informationen zum Abrufen der Projekt-ID finden Sie unter Projekte erstellen und verwalten.

  6. Prüfen Sie mit dem folgenden Befehl, ob gcloud alpha logging tail installiert ist:

    gcloud alpha logging tail
    

    Der Befehl gibt die folgende Meldung aus:

    Initializing tail session.

    Sie sehen jetzt die Logeinträge für Ihr Google Cloud-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 das Schreiben der Logeinträge in Log-Buckets 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 Schreiben 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, gibt Logging die Anzahl der Einträge in der Antwort zurück.
Live-Tailing-Sitzungen pro Google Cloud-Projekt öffnen 10

Clienteinschränkungen

Bei einem Google 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 verwenden

Mit der Live-Verfolgung können Sie Ihre Logeinträge in Echtzeit anzeigen, während Cloud Logging sie schreibt. Informationen zur API-Methode für die Live-Verfolgung finden Sie unter der Methode entries.tail.

Die Live-Verfolgung wird für Log-Buckets mit Zugriffssteuerungen auf Feldebene nicht unterstützt. Sie können jedoch Logs für diese Buckets im Log-Explorer streamen.

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

Go

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

Richten Sie zur Authentifizierung bei Logging die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import (
	"context"
	"fmt"
	"io"

	logging "cloud.google.com/go/logging/apiv2"
	"cloud.google.com/go/logging/apiv2/loggingpb"
)

// 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

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

Richten Sie zur Authentifizierung bei Logging die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

Richten Sie zur Authentifizierung bei Logging die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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