Cloud Logging für Node.js einrichten

Für Node.js-Anwendungen werden Plug-ins zu den beliebten Logging-Bibliotheken Bunyan und Winston bereitgestellt.

Winston ist eine Bibliothek für allgemeine Zwecke, die eine Vielzahl von Formatierungs- und Übertragungstools für Logs implementiert.

Bunyan ist auf strukturierte JSON-Logs spezialisiert. Die Logformatierung kann mithilfe von pip an der Bunyan-Befehlszeile ausgeführt werden.

Sie haben auch die Möglichkeit, die Logging-Clientbibliothek für Node.js direkt zu verwenden oder eine eigene Einbindung in Ihre bevorzugte Logging-Bibliothek zu erstellen.

Der Logging-Agent muss nicht installiert sein, um die Bunyan- und Winston-Bibliotheken auf einer Compute Engine-VM-Instanz verwenden zu können.

Vorbereitung

  1. Melden Sie sich bei Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.

  2. Wählen Sie in der Cloud Console auf der Seite für die Projektauswahl ein Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Aktivieren Sie die Cloud Logging API.

    Aktivieren Sie die API

  5. Bereiten Sie Ihre Umgebung für die Node.js-Entwicklung vor.

    Einrichtungsleitfaden für Node.js aufrufen

Bunyan verwenden

Cloud Logging enthält ein Plug-in für die Node.js-Logging-Bibliothek von Bunyan. Das Logging-Plug-in für Bunyan bietet eine einfachere, allgemeinere Ebene für die Arbeit mit Logging.

Plug-in installieren

  1. Am einfachsten lässt sich das Logging-Plug-in Bunyan mithilfe der npm-Software installieren:

    npm install --save bunyan @google-cloud/logging-bunyan
  2. Importieren Sie das Plug-in und fügen es Ihrer Bunyan-Konfiguration hinzu:

    const bunyan = require('bunyan');
    
    // Imports the Google Cloud client library for Bunyan
    const {LoggingBunyan} = require('@google-cloud/logging-bunyan');
    
    // Creates a Bunyan Stackdriver Logging client
    const loggingBunyan = new LoggingBunyan();
    
    // Create a Bunyan logger that streams to Stackdriver Logging
    // Logs will be written to: "projects/YOUR_PROJECT_ID/logs/bunyan_log"
    const logger = bunyan.createLogger({
      // The JSON payload of the log as it appears in Stackdriver Logging
      // will contain "name": "my-service"
      name: 'my-service',
      streams: [
        // Log to the console at 'info' and above
        {stream: process.stdout, level: 'info'},
        // And log to Stackdriver Logging, logging at 'info' and above
        loggingBunyan.stream('info'),
      ],
    });
    
    // Writes some log entries
    logger.error('warp nacelles offline');
    logger.info('shields at 99%');

Plug-in konfigurieren

Das Verhalten des Bunyan-Plug-ins lässt sich mit den gleichen Konfigurationsoptionen anpassen, die auch für die Cloud-Clientbibliothek der Cloud Logging API für Node.js verwendet werden. Diese Optionen können im Objekt options übergeben werden, das an den Plug-in-Konstruktor weitergeleitet wird.

Winston verwenden

Cloud Logging enthält ein Plug-in für die Node.js-Logging-Bibliothek von Winston. Das Logging-Plug-in für Winston bietet eine einfachere, allgemeinere Ebene für die Arbeit mit Logging.

Plug-in installieren

  1. Am einfachsten lässt sich das Logging-Plug-in Winston mithilfe der npm-Software installieren:

    npm install --save @google-cloud/logging-winston
  2. Importieren Sie das Plug-in und fügen Sie es Ihrer Winston-Konfiguration hinzu:

    const winston = require('winston');
    
    // Imports the Google Cloud client library for Winston
    const {LoggingWinston} = require('@google-cloud/logging-winston');
    
    const loggingWinston = new LoggingWinston();
    
    // Create a Winston logger that streams to Stackdriver Logging
    // Logs will be written to: "projects/YOUR_PROJECT_ID/logs/winston_log"
    const logger = winston.createLogger({
      level: 'info',
      transports: [
        new winston.transports.Console(),
        // Add Stackdriver Logging
        loggingWinston,
      ],
    });
    
    // Writes some log entries
    logger.error('warp nacelles offline');
    logger.info('shields at 99%');

Plug-in konfigurieren

Das Verhalten des Winston-Plug-ins lässt sich mit den gleichen Konfigurationsoptionen anpassen, die auch für die Cloud-Clientbibliothek der Cloud Logging API für Node.js verwendet werden Diese Optionen können im Objekt options übergeben werden, das an den Plug-in-Konstruktor weitergeleitet wird.

Weitere Informationen zur Installation finden Sie in der Dokumentation zu den Cloud Logging-Bibliotheken für Node.js. Probleme können Sie über die Problemverfolgung melden.

Cloud-Clientbibliothek direkt verwenden

Informationen zur direkten Verwendung der Cloud-Clientbibliothek von Cloud Logging für Node.js finden Sie unter Logging-Clientbibliotheken.

In Google Cloud ausführen

Um die Cloud Logging-Bibliotheken für Node.js in Google Cloud verwenden zu können, ist die Cloud IAM-Rolle Logautor erforderlich. In den meisten Google Cloud-Umgebungen ist diese Rolle standardmäßig vorhanden.

App Engine

In App Engine wird die Rolle "Logautor" standardmäßig zugewiesen.

Die Cloud Logging-Bibliotheken für Node.js können ohne explizite Angabe von Anmeldedaten verwendet werden.

Cloud Logging ist für App Engine-Anwendungen automatisch aktiviert. Es ist keine zusätzliche Einrichtung notwendig.

Google Kubernetes Engine

In Google Kubernetes Engine müssen Sie beim Erstellen des Clusters den Zugriffsbereich logging.write festlegen:

gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/logging.write

Compute Engine

Wenn Sie Compute Engine-VM-Instanzen verwenden, fügen Sie der jeweiligen Instanz den Zugriffsbereich für cloud-platform hinzu. In der Google Cloud Console können Sie das beim Erstellen einer neuen Instanz im Bereich Instanz erstellen im Abschnitt Identität und API-Zugriff erledigen. Verwenden Sie das Compute Engine-Standarddienstkonto oder ein anderes Dienstkonto und wählen Sie im Abschnitt Identität und API-Zugriff die Option Uneingeschränkten Zugriff auf alle Cloud APIs zulassen aus. Achten Sie darauf, dass jedem ausgewählten Dienstkonto im Abschnitt IAM & Verwaltung der Cloud Console die Rolle "Logautor" zugewiesen ist.

Cloud Functions

In Cloud Functions wird die Rolle "Logautor" standardmäßig zugewiesen.

Die Cloud Logging-Bibliotheken für Node.js können ohne explizite Angabe von Anmeldedaten verwendet werden.

Cloud Functions ist für die automatische Verwendung von Cloud Logging konfiguriert.

Lokal und extern ausführen

Wenn Sie die Cloud Logging-Bibliotheken für Node.js außerhalb von Google Cloud verwenden möchten, beispielsweise auf Ihrer eigenen Workstation, auf den Computern Ihres Rechenzentrums oder auf den VM-Instanzen eines anderen Cloud-Anbieters, müssen Sie Ihre Google Cloud-Projekt-ID und die entsprechenden Dienstkonto-Anmeldedaten direkt in den Cloud Logging-Bibliotheken für Node.js angeben.

Sie können Anmeldeinformationen für Dienstkonten manuell erstellen und abrufen. Verwenden Sie beim Angeben des Felds Rolle die Rolle "Logautor". Weitere Informationen zu Rollen von Cloud Identity and Access Management finden Sie in der Anleitung zur Zugriffssteuerung.

Bunyan verwenden:

// Imports the Google Cloud client library for Bunyan
const {LoggingBunyan} = require('@google-cloud/logging-bunyan');

// Creates a client
const loggingBunyan = new LoggingBunyan({
  projectId: 'your-project-id',
  keyFilename: '/path/to/key.json',
});

Winston verwenden:

// Imports the Google Cloud client library for Winston
const {LoggingWinston} = require('@google-cloud/logging-winston');

// Creates a client
const loggingWinston = new LoggingWinston({
  projectId: 'your-project-id',
  keyFilename: '/path/to/key.json',
});

Logs ansehen

Nach der Bereitstellung können Sie die Logs in der Loganzeige der Cloud Console ansehen.

Zur Loganzeige

In der Loganzeige müssen Sie eine oder mehrere Ressourcen angeben. Die Auswahl der Ressourcen ist jedoch möglicherweise nicht offensichtlich. Hier sind ein paar Tipps für den Einstieg.

  • Wenn Sie Ihre Anwendung für App Engine bereitstellen oder die App Engine-spezifischen Bibliotheken verwenden, setzen Sie die Ressource auf GAE-Anwendung.

  • Wenn Sie Ihre Anwendung auf der Compute Engine bereitstellen, setzen Sie die Ressource auf GCE-VM-Instanz.

  • Wenn Sie Ihre Anwendung in Google Kubernetes Engine bereitstellen, wird der Ressourcentyp der Logeinträge von der Logging-Konfiguration Ihres Clusters bestimmt. Weitere Informationen zur Legacy-Operations-Suite von Google Cloud und zu den Kubernetes Monitoring-Lösungen der Operations-Suite von Google Cloud sowie zu deren Auswirkungen auf den Ressourcentyp finden Sie unter Zu Kubernetes Engine Monitoring migrieren.

  • Wenn Ihre Anwendung die Cloud Logging API direkt nutzt, ist die Ressource von der API und Ihrer Konfiguration abhängig. Sie können in Ihrer Anwendung zum Beispiel eine Ressource individuell festlegen oder eine Standardressource verwenden.

  • Wenn in der Loganzeige keine Logs zu sehen sind, wechseln Sie zum erweiterten Abfragemodus und verwenden Sie eine leere Abfrage, um alle Logeinträge zu sehen.

    1. Klicken Sie oben in der Loganzeige auf Menü (▾) und wählen Sie In erweiterten Filter umwandeln aus, um zum erweiterten Abfragemodus zu wechseln.
    2. Löschen Sie den Inhalt, der im Filterfeld angezeigt wird.
    3. Klicken Sie auf Filter senden.

    Sie können die einzelnen Einträge prüfen, um Ihre Ressourcen zu identifizieren.

Weitere Informationen finden Sie unter Logs ansehen und Erweiterte Logabfragen.