Stackdriver Logging für Node.js einrichten

Mit den Plug-ins Bunyan oder Winston können Sie Logs aus Node.js-Anwendungen in Logging schreiben. Dies ist auch direkt über die Stackdriver Logging API-Cloud-Clientbibliothek für Node.js möglich.

Der Logging-Agent muss nicht installiert sein, um die Bunyan- und Winston-Bibliotheken auf einer Compute Engine-VM-Instanz auszuführen.

Hinweise

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

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

  2. Wählen Sie in der GCP Console auf der Projektauswahlseite ein GCP-Projekt aus oder erstellen Sie eins.

    Zur Projektauswahl

  3. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Platform-Projekt aktiviert ist. So bestätigen Sie die Abrechnung für Ihr Projekt.

  4. Aktivieren Sie die Stackdriver Logging APIerforderlichen API.

    API aktivieren

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

    Einrichtungsleitfaden für Node.js aufrufen

Bunyan verwenden

Stackdriver Logging bietet ein Plug-in für die Bunyan-Node.js-Logging-Bibliothek. Das Logging-Plug-in für Bunyan bietet eine einfachere, höhere 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

Sie können das Verhalten des Plug-ins Bunyan mit den gleichen Konfigurationsoptionen wie für die Stackdriver Logging API-Cloud-Clientbibliothek für Node.js anpassen. Diese Optionen können im Objekt options übergeben werden, das an den Plug-in-Konstruktor weitergeleitet wird.

Winston verwenden

Stackdriver Logging bietet ein Plug-in für die Winston-Node.js-Logging-Bibliothek. Das Logging-Plug-in für Winston bietet eine einfachere, höhere 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

Sie können das Verhalten des Plug-ins Winston mit den gleichen Konfigurationsoptionen wie für die Stackdriver Logging API-Cloud-Clientbibliothek für Node.js anpassen. 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 Stackdriver Logging-Bibliotheken für Node.js. Probleme können Sie über die Problemverfolgung melden.

Cloud-Clientbibliothek direkt verwenden

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

In Google Cloud ausführen

Für die Verwendung der Stackdriver Logging-Bibliotheken für Node.js ist in Google Cloud 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 Stackdriver Logging-Bibliotheken für Node.js können ohne Eingabe von Anmeldedaten verwendet werden.

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

Google Kubernetes Engine

In Google Kubernetes Engine müssen Sie beim Erstellen des Clusters den Zugriffsbereich für 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 jeder 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 Stackdriver Logging-Bibliotheken für Node.js können ohne Eingabe von Anmeldedaten verwendet werden.

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

Lokal und extern ausführen

Wenn Sie die Stackdriver Logging-Bibliotheken für Node.js außerhalb von Google Cloud verwenden möchten, etwa 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 entsprechende Anmeldedaten für das Dienstkonto direkt an die Stackdriver Logging-Bibliotheken für Node.js übergeben.

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 sich die Logs in der Cloud Console-Loganzeige 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 Loggingkonfiguration des Clusters bestimmt. Weitere Informationen zu den Lösungen mit Legacy Stackdriver und Stackdriver Kubernetes Monitoring und den jeweiligen Auswirkungen auf den Ressourcentyp finden Sie unter Zu Stackdriver Kubernetes Monitoring migrieren.

  • Wenn Ihre Anwendung die Stackdriver Logging API direkt verwendet, ist die Ressource von der API und Ihrer Konfiguration abhängig. Sie können in Ihrer Anwendung zum Beispiel eine Ressource angeben 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.