Node.js-Anwendungen für Error Reporting instrumentieren

Mithilfe der Error Reporting-Bibliothek für Node.js können Sie Fehlerberichte von Node.js-Anwendungen an Error Reporting senden. Verwenden Sie die Error Reporting-Bibliothek für Node.js, um Fehlergruppen in den folgenden Fällen zu erstellen:

  • Der Log-Bucket hat vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK).
  • Die Log-Buckets befinden sich nicht in der Region global.
  • Sie möchten benutzerdefinierte Fehlerereignisse melden.

Error Reporting ist in einige Google Cloud-Dienste wie Cloud Functions, App Engine, Compute Engine und Google Kubernetes Engine eingebunden. In Error Reporting sehen Sie die in Cloud Logging protokollierten Fehler der auf diesen Diensten ausgeführten Anwendungen. Weitere Informationen finden Sie auf dieser Seite unter In Google Cloud ausführen.

Sie können Fehlerdaten auch mithilfe von Logging an Error Reporting senden. Informationen zu den Datenformatierungsanforderungen finden Sie unter Fehlermeldungen in Logging formatieren.

Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Error Reporting API aktivieren.

    Aktivieren Sie die API

  5. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  6. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  7. Error Reporting API aktivieren.

    Aktivieren Sie die API

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

    Einrichtungsleitfaden für Node.js aufrufen

Clientbibliothek installieren

Mit der Error Reporting-Bibliothek für Node.js können Sie die von Node.js-Anwendungen gemeldeten Fehler im Blick behalten und ansehen. Dabei ist es in den meisten Fällen unerheblich, wo die Anwendungen ausgeführt werden.

  1. Installieren Sie das Paket mit npm:

    npm install --save @google-cloud/error-reporting
  2. Importieren Sie die Bibliothek und instanziieren Sie einen Client, um mit der Meldung von Fehlern zu beginnen:

    // Imports the Google Cloud client library
    const {ErrorReporting} = require('@google-cloud/error-reporting');
    
    // Instantiates a client
    const errors = new ErrorReporting();
    
    // Reports a simple error
    errors.report('Something broke!');

Weitere Informationen zur Installation finden Sie in der Dokumentation der Error Reporting-Bibliothek für Node.js. Probleme können Sie über die Problemverfolgung melden.

Clientbibliothek konfigurieren

Das Verhalten der Error Reporting-Bibliothek für Node.js kann angepasst werden. Eine Liste der möglichen Konfigurationsoptionen finden Sie in der Konfiguration der Bibliothek. Sie haben die Möglichkeit, diese Optionen im Objekt options an den Konstruktor der Bibliothek zu übergeben.

Sonstige Integrationen

Weitere Informationen zu Integrationen zwischen der Error Reporting-Bibliothek für Node.js und anderen Node.js-Web-Frameworks finden Sie im Repository der Bibliothek auf GitHub.

Anwendungen in Google Cloud ausführen

Zum Erstellen von Fehlergruppen mit projects.events.report benötigt Ihr Dienstkonto die Rolle Error Reporting-Autor (roles/errorreporting.writer).

Einige Google Cloud-Dienste gewähren dem entsprechenden Dienstkonto automatisch die Rolle „Error Reporting-Autor“ (roles/errorreporting.writer). Für einige Dienste müssen Sie diese Rolle jedoch dem entsprechenden Dienstkonto zuweisen.

Flexible App Engine-Umgebung

Die App Engine weist Ihrem Standarddienstkonto automatisch die Rolle Error Reporting-Autor (roles/errorreporting.writer) zu.

Die Error Reporting-Bibliothek für Node.js kann verwendet werden, ohne dass Anmeldedaten explizit angegeben werden müssen.

Error Reporting wird für Anwendungen in flexiblen App Engine-Umgebungen automatisch aktiviert. Es ist keine zusätzliche Einrichtung erforderlich.

Google Kubernetes Engine

So verwenden Sie Error Reporting mit Google Kubernetes Engine:

  1. Prüfen Sie, ob dem Dienstkonto, das von Ihrem Container verwendet werden soll, die Rolle „Error Reporting-Autor“ (roles/errorreporting.writer) gewährt wurde.

    Sie können entweder das Compute Engine-Standarddienstkonto oder ein benutzerdefiniertes Dienstkonto verwenden.

    Informationen zum Gewähren von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

  2. Erstellen Sie den Cluster und gewähren Sie ihm den Zugriffsbereich cloud-platform.

    Mit dem folgenden Befehl „create“ werden beispielsweise der Zugriffsbereich cloud-platform und ein Dienstkonto angegeben:

    gcloud container clusters create CLUSTER_NAME --service-account  SERVICE_ACCT_NAME --scopes=cloud-platform
    

Compute Engine

So verwenden Sie Error Reporting mit Compute Engine-VM-Instanzen:

  1. Achten Sie darauf, dass dem von Ihrer VM-Instanz zu verwendenden Dienstkonto die Rolle Error Reporting-Autor (roles/errorreporting.writer) gewährt wurde.

    Sie können entweder das Compute Engine-Standarddienstkonto oder ein benutzerdefiniertes Dienstkonto verwenden.

    Informationen zum Gewähren von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

  2. Wählen Sie im Navigationsbereich der Google Cloud Console Compute Engine und dann VM-Instanzen aus:

    Zu Seite VM-Instanzen

  3. Wählen Sie die VM-Instanz aus, die den Zugriffsbereich cloud-platform erhalten soll.

  4. Klicken Sie auf Beenden und dann auf Bearbeiten.

  5. Wählen Sie im Abschnitt Identität und API-Zugriff ein Dienstkonto mit der Rolle „Error Reporting-Autor“ (roles/errorreporting.writer) aus.

  6. Wählen Sie im Abschnitt Zugriffsbereiche die Option Uneingeschränkten Zugriff auf alle Cloud APIs zulassen aus und speichern Sie dann die Änderungen.

  7. Klicken Sie auf Starten/Fortsetzen.

Cloud Functions

Cloud Functions weist Ihrem Standarddienstkonto automatisch die Rolle Error Reporting-Autor (roles/errorreporting.writer) zu.

Die Error Reporting-Bibliothek für Node.js kann verwendet werden, ohne dass Anmeldedaten explizit angegeben werden müssen.

Cloud Functions ist automatisch für die Verwendung von Error Reporting konfiguriert. Unverarbeitete JavaScript-Ausnahmen werden in Logging angezeigt und von Error Reporting verarbeitet, ohne dass dafür die Error Reporting-Bibliothek für Node.js angewendet werden muss.

Beispiel:

// Imports the Google Cloud client library
const {ErrorReporting} = require('@google-cloud/error-reporting');

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

// Reports a simple error
errors.report('Something broke!');

Beispiel

Sie können einen Fehler auch manuell melden. Dazu rufen Sie die Methode report wie im folgenden Beispiel gezeigt auf:

// Imports the Google Cloud client library
const {ErrorReporting} = require('@google-cloud/error-reporting');

// Instantiates a client
const errors = new ErrorReporting();

// Use the error message builder to customize all fields ...
const errorEvent = errors.event();

// Add error information
errorEvent.setMessage('My error message');
errorEvent.setUser('root@nexus');

// Report the error event
errors.report(errorEvent, () => {
  console.log('Done reporting error event!');
});

// Report an Error object
errors.report(new Error('My error message'), () => {
  console.log('Done reporting Error object!');
});

// Report an error by provided just a string
errors.report('My error message', () => {
  console.log('Done reporting error string!');
});

Fehler mit Express.js melden

Mit der Error Reporting-Bibliothek für Node.js lässt sich Error Reporting in gängige Node.js-Web-Frameworks wie Express.js einbinden:

const express = require('express');

// Imports the Google Cloud client library
const {ErrorReporting} = require('@google-cloud/error-reporting');

// Instantiates a client
const errors = new ErrorReporting();

const app = express();

app.get('/error', (req, res, next) => {
  res.send('Something broke!');
  next(new Error('Custom error message'));
});

app.get('/exception', () => {
  JSON.parse('{"malformedJson": true');
});

// Note that express error handling middleware should be attached after all
// the other routes and use() calls. See the Express.js docs.
app.use(errors.express);

const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`App listening on port ${PORT}`);
  console.log('Press Ctrl+C to quit.');
});

Anwendungen in einer lokalen Entwicklungsumgebung ausführen

Wenn Sie die Error Reporting-Bibliothek für Node.js in einer lokalen Entwicklungsumgebung verwenden möchten, z. B. auf Ihrer eigenen Workstation, müssen Sie der Error Reporting-Bibliothek für Node.js die Standardanmeldedaten der lokalen Anwendung hinzufügen. Weitere Informationen finden Sie unter Bei Error Reporting authentifizieren.

Wenn Sie die Node.js-Beispiele auf dieser Seite aus einer lokalen Entwicklungsumgebung heraus verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

  1. Installieren Sie die Google Cloud CLI.
  2. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  3. Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:

    gcloud auth application-default login

Weitere Informationen: Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Die projects.events.report-Methode unterstützt auch API-Schlüssel. Wenn Sie API-Schlüssel für die Authentifizierung verwenden möchten, müssen Sie keine lokale Datei mit den Standardanmeldedaten für Anwendungen einrichten. Weitere Informationen: Erstellen eines API-Schlüssels in der Dokumentation zur Google Cloud-Authentifizierung.

Beispiel:

// Imports the Google Cloud client library
const {ErrorReporting} = require('@google-cloud/error-reporting');

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

// Reports a simple error
errors.report('Something broke!');

Fehlerberichte ansehen

Wählen Sie im Navigationsbereich der Google Cloud Console Error Reporting und dann Ihr Google Cloud-Projekt aus:

Zu Error Reporting

Weitere Informationen finden Sie unter Fehler anzeigen.