Configurer Error Reporting pour Node.js

Vous pouvez envoyer des rapports d'erreurs à Error Reporting depuis des applications Node.js à l'aide de la bibliothèque Error Reporting pour Node.js.

Error Reporting est intégré à certains services Google Cloud, tels que Cloud Functions, App Engine, Compute Engine et Google Kubernetes Engine. Error Reporting vous permet d'afficher les erreurs qui sont consignées dans Cloud Logging par les applications exécutées sur ces services. Pour en savoir plus, consultez la section Exécuter sur Google Cloud Platform de cette page.

Vous pouvez également envoyer des données d'erreur à Error Reporting à l'aide de Logging. Pour en savoir plus sur les exigences en matière de mise en forme des données, consultez la page Formater les messages d'erreur dans Logging.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. Activez Error Reporting API .

    Activer l'API

  5. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  6. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  7. Activez Error Reporting API .

    Activer l'API

  8. Préparez votre environnement au développement de Node.js.

    Accéder au guide de configuration de Node.js

Installer la bibliothèque cliente

La bibliothèque Error Reporting pour Node.js vous permet de surveiller et d'afficher les erreurs signalées par les applications Node.js exécutées depuis presque n'importe quel emplacement.

  1. Installez le package à l'aide de npm :

    npm install --save @google-cloud/error-reporting
  2. Importez la bibliothèque et créez un client pour commencer à signaler les erreurs :

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

Pour en savoir plus sur l'installation, consultez la documentation sur la bibliothèque Error Reporting pour Node.js. Vous pouvez également signaler d'éventuels problèmes à l'aide de l'outil de suivi des problèmes.

Configurer la bibliothèque cliente

Vous pouvez personnaliser le comportement de la bibliothèque Error Reporting pour Node.js. Consultez la configuration de la bibliothèque pour afficher la liste des options de configuration possibles. Ces options peuvent être transmises dans l'objet options, qui est lui-même transmis au constructeur de la bibliothèque.

Signaler des erreurs

Vous pouvez signaler une erreur manuellement en appelant la méthode report, comme illustré dans l'exemple suivant :

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

Signaler des erreurs avec Express.js

La bibliothèque Error Reporting pour Node.js est capable d'intégrer Error Reporting dans les frameworks Web Node.js populaires tels que 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.');
});

Autres intégrations

Pour en savoir plus sur les intégrations entre la bibliothèque Error Reporting pour Node.js et les autres frameworks Web Node.js, consultez le dépôt de la bibliothèque sur GitHub.

Exécuter des applications sur Google Cloud

L'utilisation de la bibliothèque Error Reporting pour Node.js nécessite de disposer du rôle Cloud Identity and Access Management de rédacteur pour Error Reporting. La plupart des plates-formes de calcul Google Cloud attribuent ce rôle par défaut.

Vous pouvez configurer Error Reporting pour Node.js dans les environnements Google Cloud suivants.

Environnement flexible App Engine

App Engine attribue par défaut le rôle de rédacteur pour Error Reporting.

La bibliothèque Error Reporting pour Node.js peut être utilisée sans avoir à fournir explicitement des identifiants.

Error Reporting est automatiquement activé pour les applications de l'environnement flexible App Engine. Aucune configuration supplémentaire n'est requise.

Google Kubernetes Engine

Sur GKE, vous devez ajouter le niveau d'accès cloud-platform lors de la création du cluster, comme indiqué dans l'exemple de commande ci-dessous :

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

Compute Engine

Lorsque vous utilisez des instances de VM Compute Engine, ajoutez le niveau d'accès cloud-platform à chaque instance. Lorsque vous créez une instance via Google Cloud Console, vous pouvez le faire dans la section Identité et accès à l'API du panneau Créer une instance. Utilisez le compte de service par défaut de Compute Engine ou un autre compte de service de votre choix, puis sélectionnez Autoriser l'accès complet à l'ensemble des API Cloud dans la section Identité et accès à l'API. Quel que soit le compte de service sélectionné, vérifiez qu'il dispose du rôle Rédacteur Error Reporting dans la section IAM et administration de Cloud Console.

Cloud Functions

Cloud Functions attribue par défaut le rôle de rédacteur pour Error Reporting.

La bibliothèque Error Reporting pour Node.js peut être utilisée sans avoir à fournir explicitement des identifiants.

Cloud Functions est configuré de manière à utiliser Error Reporting automatiquement. Les exceptions JavaScript non gérées apparaîtront dans Logging et seront traitées par Error Reporting sans avoir à utiliser la bibliothèque Error Reporting pour Node.js.

Exécuter en local et depuis un autre emplacement

Pour utiliser la bibliothèque Error Reporting pour Node.js en dehors de Google Cloud, y compris en l'exécutant sur votre propre poste de travail, sur les ordinateurs de votre centre de données ou sur les instances de VM d'un autre fournisseur cloud, vous devez saisir l'ID de projet Google Cloud ainsi que les identifiants du compte de service approprié directement dans la bibliothèque Error Reporting pour Node.js.

Vous pouvez créer et obtenir manuellement des identifiants pour le compte de service. Lorsque vous spécifiez le champ Rôle, utilisez le rôle Rédacteur Error Reporting. Pour en savoir plus sur les rôles Cloud IAM (Cloud Identity and Access Management), consultez le Guide du contrôle des accès.

Exemple :

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

Afficher les rapports d'erreurs

Après le déploiement, vous pouvez afficher les rapports d'erreurs dans le tableau de bord Error Reporting de Cloud Console.

Accéder au tableau de bord Error Reporting

Pour en savoir plus, consultez la page Afficher les erreurs.