Configura Cloud Logging para Node.js

En las aplicaciones de Node.js, los complementos se mantienen para las bibliotecas de registro populares Bunyan y Winston.

Winston es una biblioteca de uso general que implementa una variedad de transportes y formateadores de registro.

Bunyan se especializa en registros JSON estructurados. El formato del registro se puede realizar mediante la canalización a la línea de comandos de Bunyan.

También puedes usar la biblioteca cliente de Logging para Node.js directamente o crear tus propias integraciones con tu biblioteca de registro preferida.

No es necesario que el agente de Logging esté instalado para usar las bibliotecas Bunyan y Winston en una instancia de VM de Compute Engine.

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 del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir a la página del selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  4. Habilita las Cloud Logging 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

Usa Bunyan

Cloud Logging proporciona un complemento para la biblioteca de Logging de Node.js de Bunyan. El complemento de Logging para Bunyan proporciona una capa más simple y de nivel superior a fin de trabajar con Logging.

Instala el complemento

  1. La forma más fácil de instalar el complemento de Bunyan de Logging es con npm:

    npm install --save bunyan @google-cloud/logging-bunyan
  2. Importa el complemento y agrégalo a tu configuración de Bunyan:

    const bunyan = require('bunyan');
    
    // Imports the Google Cloud client library for Bunyan
    const {LoggingBunyan} = require('@google-cloud/logging-bunyan');
    
    // Creates a Bunyan Cloud Logging client
    const loggingBunyan = new LoggingBunyan();
    
    // Create a Bunyan logger that streams to Cloud Logging
    // Logs will be written to: "projects/YOUR_PROJECT_ID/logs/bunyan_log"
    const logger = bunyan.createLogger({
      // The JSON payload of the log as it appears in Cloud Logging
      // will contain "name": "my-service"
      name: 'my-service',
      streams: [
        // Log to the console at 'info' and above
        {stream: process.stdout, level: 'info'},
        // And log to Cloud Logging, logging at 'info' and above
        loggingBunyan.stream('info'),
      ],
    });
    
    // Writes some log entries
    logger.error('warp nacelles offline');
    logger.info('shields at 99%');

Configura el complemento

Puedes personalizar el comportamiento del complemento Bunyan con las mismas opciones de configuración compatibles con la biblioteca cliente de Cloud de la API de Cloud Logging para Node.js. Estas opciones se pueden pasar en el objeto options que se pasa al constructor del complemento.

Usa Winston

Cloud Logging proporciona un complemento destinado a la biblioteca Winston de Logging para Node.js. El complemento de Logging para Winston proporciona una capa más simple y de nivel superior a fin de trabajar con Logging.

Instala el complemento

  1. La forma más sencilla de instalar el complemento Winston de Logging es con npm:

    npm install --save @google-cloud/logging-winston winston
  2. Importa el complemento y agrégalo a tu configuración de Winston:

    const winston = require('winston');
    
    // Imports the Google Cloud client library for Winston
    const {LoggingWinston} = require('@google-cloud/logging-winston');
    
    const loggingWinston = new LoggingWinston();
    
    // Create a Winston logger that streams to Stackdriver Logging
    // Logs will be written to: "projects/YOUR_PROJECT_ID/logs/winston_log"
    const logger = winston.createLogger({
      level: 'info',
      transports: [
        new winston.transports.Console(),
        // Add Stackdriver Logging
        loggingWinston,
      ],
    });
    
    // Writes some log entries
    logger.error('warp nacelles offline');
    logger.info('shields at 99%');

Configura el complemento

Puedes personalizar el comportamiento del complemento Winston con las mismas opciones de configuración compatibles con la biblioteca cliente de Cloud de la API de Cloud Logging para Node.js. Estas opciones se pueden pasar en el objeto options que se pasa al constructor del complemento.

Para obtener más información sobre la instalación, consulta la documentación de las bibliotecas de Cloud Logging para Node.js. También puedes informar problemas con la herramienta de seguimiento de errores.

Usa la biblioteca cliente de Cloud directamente

Si deseas información sobre cómo usar directamente la biblioteca cliente de Cloud Logging para Node.js, consulta Bibliotecas cliente de Cloud Logging.

Ejecuta en Google Cloud

El uso de bibliotecas de Cloud Logging para Node.js requiere la función de escritor de registros de IAM en Google Cloud. La mayoría de los entornos de Google Cloud proporcionan esta función de forma predeterminada.

App Engine

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

Las bibliotecas de Cloud Logging para Node.js se pueden usar sin necesidad de proporcionar credenciales de forma explícita.

Cloud Logging está habilitado de forma automática para las aplicaciones de App Engine. No se requiere ninguna configuración adicional.

Google Kubernetes Engine

En Google Kubernetes Engine, debes agregar el permiso de acceso logging.write cuando creas el clúster:

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

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. Asegúrate de que la cuenta de servicio que selecciones tenga la función de escritor de registros en la sección IAM y administración de Cloud Console.

Cloud Functions

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

Las bibliotecas de Cloud Logging para Node.js se pueden usar sin necesidad de proporcionar credenciales de forma explícita.

Cloud Functions está configurado para usar Cloud Logging de forma automática.

Ejecuta de forma local y en otros lugares

Si quieres usar las bibliotecas de Cloud Logging para Node.js fuera de Google Cloud, por ejemplo, a fin de ejecutar 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, debes proporcionar tu ID del proyecto de Google Cloud y las credenciales de las cuentas de servicio adecuadas directamente a las bibliotecas de Cloud Logging 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 escritor de registros. Para obtener más información sobre las funciones de la administración de identidades y accesos, consulta la Guía de control de acceso.

Con Bunyan:

// Imports the Google Cloud client library for Bunyan
const {LoggingBunyan} = require('@google-cloud/logging-bunyan');

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

Con Winston:

// Imports the Google Cloud client library for Winston
const {LoggingWinston} = require('@google-cloud/logging-winston');

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

Ve los registros

Después de la implementación, puedes ver los registros en el visor de registros.

Ve al Explorador de registros.

En el Explorador de registros, debes especificar uno o más recursos, aunque la selección de recursos puede no ser obvia. Aquí encontrarás algunas sugerencias que te ayudarán a comenzar:

  • Si implementas tu aplicación en App Engine o utilizas las bibliotecas específicas de App Engine, configura tu recurso como Aplicación de GAE.

  • Si implementas tu aplicación en Compute Engine, configura el recurso como Instancia de VM de GCE.

  • Si implementas tu aplicación en Google Kubernetes Engine, la configuración de registro de tu clúster determina el tipo de recurso de las entradas de registro. Para obtener información detallada sobre Google Cloud's operations suite heredado, las soluciones de Kubernetes Monitoring de Google Cloud's operations suite, y cómo estas dos opciones afectan el tipo de recurso, consulta Migra a Kubernetes Monitoring de Google Cloud's operations suite.

  • Si la aplicación usa la API de Cloud Logging directamente, el recurso depende de la API y de tu configuración. Por ejemplo, en la aplicación, puedes especificar un recurso o usar un recurso predeterminado.

  • Si no ves ningún registro en el Explorador de registros, cambia al modo de consulta avanzada y usa una consulta vacía para ver todas las entradas de registro.

    1. Para cambiar al modo de consulta avanzada, haz clic en menú (▾) en la parte superior del visor de registros y selecciona Convertir a filtro avanzado.
    2. Borra el contenido que aparece en el cuadro de filtro.
    3. Haz clic en Enviar filtro.

    Puedes examinar las entradas individuales para identificar tus recursos.

Para obtener más información, consulta Visualiza los registros y Consultas de registros avanzadas.