Para enviar tus logs a Datadog, loguea un archivo y supervisa ese archivo con tu Datadog Agent. Utiliza la biblioteca de registro de Winston al log desde tu aplicación Node.js.
Winston está disponible a través de NPM, para empezar, debes añadir la dependencia a tu código:
npm install --save winston
package.json se actualiza con las dependencias correspondientes:
const{createLogger,format,transports}=require('winston');constlogger=createLogger({level:'info',exitOnError:false,format:format.json(),transports:[newtransports.File({filename:`${appRoot}/logs/<FILE_NAME>.log`}),],});module.exports=logger;// Example logs
logger.log('info','Hello simple log!');logger.info('Hello log with metas',{color:'blue'});
varwinston=require('winston');varlogger=new(winston.Logger)({transports:[new(winston.transports.File)({name:'<LOGGER_NAME>',filename:'<FILE_NAME>.log',json:true,level:'info'})]});// Example logs
logger.log('info','Hello simple log!');logger.info('Hello log with metas',{color:'blue'});
Comprueba el contenido del archivo <FILE_NAME>.log para confirmar que Winston está registrando en JSON:
{"level":"info","message":"Hello simple log!","timestamp":"2015-04-23T16:52:05.337Z"}{"color":"blue","level":"info","message":"Hello log with metas","timestamp":"2015-04-23T16:52:05.339Z"}
Ejecuta el subcomando de estado del Agent y busca nodejs en la sección Checks para confirmar que los logs se han enviado correctamente a Datadog.
Si los logs están en formato JSON, Datadog parsea los mensajes del log de forma automática para extraer sus atributos. Utiliza el Log Explorer para ver tus logs y solucionar problemas relacionados.
Si tienes APM activado para esta aplicación, conecta tus logs y trazas añadiendo automáticamente los ID de traza (trace) y los ID de tramo (span),
env, service y version a tus logs mediante las siguientes instrucciones de APM para Node.js
Nota: Si el rastreador APM inyecta service en tus logs, este reemplazará al valor definido en la configuración del Agent.
Puedes poner en el flujo (stream) tus logs desde tu aplicación a Datadog sin instalar un Agent en tu host. Sin embargo, es recomendado que utilices un Agent para reenviar tus logs, ya que proporciona una gestión de conexión nativa.
Utiliza el transporte de HTTP Winston para enviar tus logs directamente a través de la API de log de Datadog.
En tu archivo de arranque o en tu código, declara el registrador de la siguiente manera:
const{createLogger,format,transports}=require('winston');consthttpTransportOptions={host:'http-intake.logs.datadoghq.com',path:'/api/v2/logs?dd-api-key=<DATADOG_API_KEY>&ddsource=nodejs&service=<APPLICATION_NAME>',ssl:true};constlogger=createLogger({level:'info',exitOnError:false,format:format.json(),transports:[newtransports.Http(httpTransportOptions),],});module.exports=logger;// Example logs
logger.log('info','Hello simple log!');logger.info('Hello log with metas',{color:'blue'});
Si tienes errores de búsqueda de DNS en tu aplicación, esto podría ser debido a excepciones logstash no capturadas. Debe añadirse un identificador como el siguiente:
varlogstash=newwinston.transports.Logstash({...});logstash.on('error',function(err){console.error(err);// replace with your own functionality here
});
Asegúrate de que el parámetro max_connect_retries no está configurado en 1 (por defecto es 4).