Configura Error Reporting para Node.js

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

Error Reporting está integrado en algunos servicios de Google Cloud, como Cloud Functions y App Engine, Compute Engine y Google Kubernetes Engine. Error Reporting muestra los errores que registran las aplicaciones que se ejecutan en esos servicios en Cloud Logging. Para obtener más información, ve a Ejecuta en Google Cloud Platform en esta página.

También puedes enviar datos de errores a Error Reporting mediante Logging. Para obtener información sobre los requisitos de formato de datos, consulta Dale formato a los mensajes de error en Logging.

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 la página de selección de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página Selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

  4. Habilita las Error Reporting API .

    Habilita la API

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

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

Instala la biblioteca cliente

La biblioteca de Error Reporting para Node.js te permite supervisar y ver los errores que informan las aplicaciones de Node.js que se ejecutan en casi cualquier lugar.

  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 sobre errores:

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

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

Configura la biblioteca cliente

Puedes personalizar el comportamiento de la biblioteca de 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 se pueden pasar en el objeto options que se transfiere al constructor de la biblioteca.

Informa errores

Para informar un error de forma manual, llama al método report, como se muestra en el siguiente ejemplo:

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

Informa sobre errores con Express.js

La biblioteca de Error Reporting para Node.js puede integrar Error Reporting en frameworks web populares de Node.js, como 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.');
});

Otras integraciones

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

Ejecuta en Google Cloud

El uso de la biblioteca de Error Reporting para Node.js requiere las siguientes funciones: Administración de identidades y accesosFunción del escritor de Error Reporting para crear el adjunto de VLAN de supervisión. La mayoría de las plataformas de computación de Google Cloud proporcionan esta función de forma predeterminada.

Puedes configurar Error Reporting para Node.js en los siguientes entornos de Google Cloud.

Entorno flexible de App Engine

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

Se puede usar la biblioteca de Error Reporting para Node.js sin necesidad de proporcionar credenciales de forma explícita.

Error Reporting se habilita de manera automática para las aplicaciones del entorno flexible de App Engine. No se requiere ninguna configuración adicional.

Google Kubernetes Engine

En GKE debes agregar el permiso de acceso de 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 Compute Engine, agrega el permiso de acceso cloud-platform a cada instancia. Si creas una instancia nueva a través de Google Cloud 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 una cuenta de servicio diferente y selecciona Permitir acceso total a las API de Cloud en la sección Identidad y acceso a la API. Con cualquier cuenta de servicio que selecciones, asegúrate de que se le haya otorgado la función de escritor de Error Reporting en la sección IAM y administración de Cloud Console.

Cloud Functions

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

Se puede usar la biblioteca de Error Reporting para Node.js sin necesidad de proporcionar credenciales de forma explícita.

Cloud Functions está configurado para usar Error Reporting de manera automática. Las excepciones de JavaScript no administradas aparecerán en Logging y Error Reporting las procesará sin la necesidad de usar la biblioteca de Error Reporting para Node.js.

Ejecuta de forma local y en otros lugares

Si deseas usar la biblioteca de Error Reporting para Node.js fuera de Google Cloud, incluso si la quieres ejecutar 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, debes proporcionar tu ID del proyecto de Google Cloud y las credenciales adecuadas de la cuenta de servicio directamente a la biblioteca de Error Reporting para Node.js.

Puedes crear y obtener credenciales de cuentas de servicio de forma manual. Cuando especifiques el campo Función, usa la función de escritor de Error Reporting. Para obtener más información sobre las funciones de administración de identidades y accesos, consulta la Guía de control de acceso.

Ejemplo:

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

Ve informes de errores

Después de la implementación, puedes ver los informes de errores en el panel de Error Reporting dentro de Cloud Console.

Ir al panel de Error Reporting

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