Eseguire il monitoraggio delle app Node.js per Error Reporting

Puoi inviare eventi di errore a Error Reporting dalle applicazioni Node.js utilizzando la libreria Error Reporting per Node.js. Utilizza la libreria Error Reporting per Node.js per creare gruppi di errori nei seguenti casi:

  • Un bucket di log che contiene le voci di log ha chiavi di crittografia gestite dal cliente (CMEK).
  • Il bucket di log soddisfa una delle seguenti condizioni:
    • Il bucket di log è archiviato nello stesso progetto in cui sono state create le voci di log.
    • Le voci di log sono state instradate a un progetto, che le ha archiviate in un bucket di log di sua proprietà.
  • Vuoi segnalare eventi di errore personalizzati.

Error Reporting è integrato con alcuni Google Cloud servizi, come Cloud Run Functions e App Engine, Compute Engine e Google Kubernetes Engine. Error Reporting mostra gli eventi di errore registrati in Cloud Logging dalle applicazioni in esecuzione su questi servizi. Per saperne di più, vai a Esecuzione su Google Cloud in questa pagina.

Puoi anche inviare eventi di errore a Error Reporting utilizzando Logging. Per informazioni sui requisiti di formattazione dei dati, consulta Formattare una voce di log per segnalare eventi di errore.

Prima di iniziare

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. Enable the Error Reporting API .

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  4. Prepara l'ambiente per lo sviluppo Node.js.

    Vai alla guida alla configurazione di Node.js

Installa la libreria client

La libreria Error Reporting per Node.js consente di monitorare e visualizzare gli eventi di errore segnalati dalle applicazioni Node.js in esecuzione praticamente ovunque.

  1. Utilizza npm per installare il pacchetto:

    npm install @google-cloud/error-reporting
  2. Importa la libreria e crea un'istanza di un client per iniziare a segnalare gli errori:

    // 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!');

Per saperne di più sull'installazione, consulta la documentazione della libreria Error Reporting per Node.js. Puoi anche segnalare i problemi utilizzando il tracker dei problemi.

Configura la libreria client

Puoi personalizzare il comportamento della libreria Error Reporting per Node.js. Consulta la configurazione della libreria per un elenco delle possibili opzioni di configurazione. Queste opzioni possono essere passate nell'oggetto options passato al costruttore della libreria.

Altre integrazioni

Per saperne di più sulle integrazioni tra la libreria Error Reporting per Node.js e altri framework web Node.js, consulta il repository della libreria su GitHub.

Esegui app su Google Cloud

Per creare gruppi di errori utilizzando projects.events.report, il tuo account di servizio richiede il ruolo Writer di Error Reporting (roles/errorreporting.writer).

Alcuni Google Cloud servizi concedono automaticamente il ruolo Writer di Error Reporting (roles/errorreporting.writer) al account di servizio appropriato. Tuttavia, devi concedere questo ruolo al service account appropriato per alcuni servizi.

Cloud Run e Cloud Run Functions

Il account di servizio predefinito utilizzato da Cloud Run dispone delle autorizzazioni del ruolo Writer di Error Reporting (roles/errorreporting.writer).

La libreria Error Reporting per Node.js può essere utilizzata senza dover fornire esplicitamente le credenziali.

Cloud Run è configurato per utilizzare Error Reporting automaticamente. Le eccezioni JavaScript non gestite verranno visualizzate in Logging ed elaborate da Error Reporting senza dover utilizzare la libreria Error Reporting per Node.js.

Esempio:

// 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!');

Ambiente flessibile di App Engine

App Engine concede automaticamente il ruolo Writer di Error Reporting (roles/errorreporting.writer) al tuo account di servizio predefinito.

La libreria Error Reporting per Node.js può essere utilizzata senza dover fornire esplicitamente le credenziali.

Error Reporting è abilitato automaticamente per le applicazioni dell'ambiente flessibile di App Engine. Non è richiesta nessuna ulteriore configurazione.

Google Kubernetes Engine

Per utilizzare Error Reporting con Google Kubernetes Engine:

  1. Assicurati che al account di servizio da utilizzare dal container sia stato concesso il ruolo Writer di Error Reporting (roles/errorreporting.writer).

    Puoi utilizzare il service account predefinito di Compute Engine o un account di servizio personalizzato.

    Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

  2. Crea il cluster e concedi al cluster l' cloud-platform ambito di accesso.

    Ad esempio, il seguente comando create specifica l'ambito di accesso cloud-platform e un account di servizio:

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

Compute Engine

Per utilizzare Error Reporting con le istanze VM di Compute Engine:

  1. Assicurati che al account di servizio da utilizzare dall'istanza VM sia stato concesso il ruolo Writer di Error Reporting (roles/errorreporting.writer).

    Puoi utilizzare il service account predefinito di Compute Engine o un account di servizio personalizzato.

    Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

  2. Nella Google Cloud console, vai alla pagina Istanze VM:

    Vai a Istanze VM

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Compute Engine.

  3. Seleziona l'istanza VM a cui vuoi concedere l' cloud-platform ambito di accesso.

  4. Fai clic su Arresta e poi su Modifica.

  5. Nella sezione Identità e accesso API, seleziona un account di servizio con il ruolo Writer di Error Reporting (roles/errorreporting.writer).

  6. Nella sezione Ambiti di accesso, seleziona Consenti l'accesso completo a tutte le API Cloud e salva le modifiche.

  7. Fai clic su Avvia/Riprendi.

Esempio

Puoi segnalare manualmente un errore chiamando il metodo report, come mostrato nell'esempio seguente:

// 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!');
});

Segnalazione degli errori con Express.js

La libreria Error Reporting per Node.js può integrare Error Reporting in framework web Node.js diffusi come Express.js:

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.');
});

Esegui app in un ambiente di sviluppo locale

Per utilizzare la libreria Error Reporting per Node.js in un ambiente di sviluppo locale, ad esempio eseguendola sulla tua workstation, devi fornire alla libreria Error Reporting per Node.js le credenziali predefinite dell'applicazione locale. Per saperne di più, consulta Autenticarsi a Error Reporting.

Per utilizzare gli esempi di Node.js in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

  1. Installa Google Cloud CLI.

  2. Configura gcloud CLI per utilizzare la tua identità federata.

    Per ulteriori informazioni, vedi Accedi a gcloud CLI con la tua identità federata.

  3. Crea le credenziali di autenticazione locali per il tuo account utente:

    gcloud auth application-default login

    Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.

Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Il metodo projects.events.report supporta anche le chiavi API. Se vuoi utilizzare le chiavi API per l'autenticazione, non devi configurare un file di Credenziali predefinite dell'applicazione locale. Per saperne di più, consulta Crea una chiave API nella Google Cloud documentazione sull'autenticazione di.

Esempio:

// 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!');

Visualizza i gruppi di errori

Nella Google Cloud console, vai alla pagina Error Reporting:

Vai a Error Reporting

Puoi trovare questa pagina anche utilizzando la barra di ricerca.

Per saperne di più, consulta Visualizzare e filtrare i gruppi di errori.