Cómo configurar Stackdriver Error Reporting para Node.js

Puedes enviar informes de errores a Stackdriver Error Reporting desde las aplicaciones Node.js con la biblioteca de Stackdriver Error Reporting para Node.js.

Stackdriver Error Reporting se integra en algunos productos, como Cloud Functions y App Engine. Stackdriver Error Reporting muestra los errores que las aplicaciones que se ejecutan en esos productos registran en Stackdriver Logging. Consulta Cómo ejecutar en Google Cloud Platform para obtener más información.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En GCP Console, en la página de selección de proyecto, selecciona o crea un proyecto de GCP.

    Ir a la página de selección de proyecto

  3. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  4. Habilita lasStackdriver Error Reporting APIAPInecesarias.

    Habilita lasAPI

  5. Prepara tu entorno para el desarrollo en Node.js.

    Ir a la guía de configuración de Node.js

Cómo instalar la biblioteca cliente

La biblioteca de Stackdriver Error Reporting para Node.js te permite supervisar y ver errores que informan las aplicaciones de Node.js que se ejecutan prácticamente en cualquier sitio.

  1. Usa npm para instalar el paquete:

    npm install --save @google-cloud/error-reporting
  2. Importa la biblioteca y crea una instancia de cliente para comenzar a informar errores:

    // Imports the Google Cloud client library
    const ErrorReporting = require('@google-cloud/error-reporting')
      .ErrorReporting;
    
    // On Node 6+ the following syntax can be used instead:
    // const {ErrorReporting} = require('@google-cloud/error-reporting');
    
    // With ES6 style imports via TypeScript or Babel, the following
    // syntax can be used instead:
    // import {ErrorReporting} from '@google-cloud/error-reporting';
    
    // Instantiates a client
    const errors = new ErrorReporting();
    
    // Reports a simple error
    errors.report('Something broke!');

A fin de obtener más información sobre la instalación, consulta la documentación sobre la biblioteca de Stackdriver Error Reporting para Node.js. También puedes informar problemas con el seguimiento de problemas.

Cómo configurar la biblioteca cliente

Puedes personalizar el comportamiento de la biblioteca de Stackdriver Error Reporting para Node.js. Consulta la configuración de la biblioteca para obtener una lista de las opciones de configuración posibles. Estas opciones pueden pasarse en el objeto options que se transfiere al constructor de la biblioteca

Cómo informar errores

Puedes informar un error de forma manual llamando al método report, como se indica en el siguiente ejemplo:

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

// On Node 6+ the following syntax can be used instead:
// const {ErrorReporting} = require('@google-cloud/error-reporting');

// With ES6 style imports via TypeScript or Babel, the following
// syntax can be used instead:
// import {ErrorReporting} from '@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!');
});

Cómo informar errores con Express.js

La biblioteca de Stackdriver Error Reporting para Node.js puede integrar Stackdriver Error Reporting en marcos de trabajo web conocidos de Node.js, como Express.js:

const express = require('express');

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

// On Node 6+ the following syntax can be used instead:
// const {ErrorReporting} = require('@google-cloud/error-reporting');

// With ES6 style imports via TypeScript or Babel, the following
// syntax can be used instead:
// import {ErrorReporting} from '@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.');
});

Otras integraciones

Si deseas obtener más información sobre las integraciones entre la biblioteca de Stackdriver Error Reporting para Node.js y otros marcos de trabajo web de Node.js, consulta el repositorio en GitHub de la biblioteca.

Cómo ejecutar en Google Cloud Platform

El uso de la biblioteca de Stackdriver Error Reporting para Node.js requiere la función de escritor de Error Reporting de Cloud IAM. La mayoría de las plataformas de procesamiento de Google Cloud Platform ofrecen esta función de forma predeterminada.

Entorno flexible de App Engine

Google App Engine otorga la función de escritor de Error Reporting de forma predeterminada.

La biblioteca de Stackdriver Error Reporting para Node.js puede usarse sin necesidad de proporcionar credenciales de forma explícita.

Stackdriver Error Reporting está habilitado automáticamente para las aplicaciones de entorno de App Engine. No se requiere ninguna configuración adicional.

Kubernetes Engine

En Google Kubernetes Engine debes agregar el nivel de acceso cloud-platform cuando creas el clúster, como se muestra en el siguiente comando de ejemplo:

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

Compute Engine

Cuando uses las instancias de VM de Google Compute Engine, agrega el nivel de acceso cloud-platform a cada instancia. Cuando crees una instancia nueva con Google Cloud Platform Console, puedes hacerlo en la sección Identidad y acceso a la API del panel Crear instancia. Usa la cuenta de servicio predeterminada de Compute Engine, o bien otra cuenta de servicio de tu elección, y selecciona Permitir acceso completo a todas las API de Cloud en la sección Identidad y acceso a la API. Independientemente de la cuenta de servicio que selecciones, asegúrate de que se otorgue la función de escritor de Error Reporting en la sección IAM y administrador de GCP Console.

Cloud Functions

Google Cloud Functions otorga la función de escritor de Error Reporting de forma predeterminada.

La biblioteca de Stackdriver Error Reporting para Node.js puede usarse sin necesidad de proporcionar credenciales de forma explícita.

Cloud Functions está configurado para usar Stackdriver Error Reporting automáticamente. Las excepciones de JavaScript no controladas aparecerán en Stackdriver Logging y serán procesadas por Stackdriver Error Reporting sin necesidad de usar la biblioteca de Stackdriver Error Reporting para Node.js.

Cómo ejecutar de manera local y en otro lugar

A fin de utilizar la biblioteca de Stackdriver Error Reporting para Node.js fuera de Google Cloud Platform, debes proporcionar el ID del proyecto de GCP y las credenciales correspondientes de tu cuenta de servicio directamente a la biblioteca de Stackdriver Error Reporting para Node.js. Esto se aplica a la ejecución de la biblioteca en tu propia estación de trabajo, en las computadoras del centro de datos o en las instancias de VM de otro proveedor de servicios en la nube. Para obtener más información, consulta Cómo obtener y proporcionar las credenciales de la cuenta de servicio de forma manual.

Ejemplo:

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

// On Node 6+ the following syntax can be used instead:
// const {ErrorReporting} = require('@google-cloud/error-reporting');

// With ES6 style imports via TypeScript or Babel, the following
// syntax can be used instead:
// import {ErrorReporting} from '@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!');

Cómo visualizar informes de errores

Después de la implementación, podrás ver los informes de errores en el panel Error Reporting en GCP Console.

Ir al panel de Error Reporting

Para obtener más información, consulta Cómo visualizar errores.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Stackdriver Error Reporting
Si necesitas ayuda, visita nuestra página de asistencia.