Graylog: Utilisation avec Node.js
Comment envoyer des logs de Node.js vers Graylog
👋 Bienvenue sur la documentation Stackhero
Stackhero propose une solution Graylog cloud entièrement managée, pensée pour la rapidité et la simplicité. Vous pouvez :
- Compter sur un serveur SMTP d'e-mail dédié et illimité inclus avec votre service.
- Appliquer les mises à jour en toute simplicité, en un clic, sans intervention manuelle.
- Utiliser un nom de domaine personnalisé sécurisé par HTTPS (par exemple, https://logs.votre-entreprise.com), pour offrir à votre équipe un accès direct et sécurisé.
- Bénéficier d'une performance et d'une sécurité optimales sur une infrastructure privée et dédiée, sans ressources partagées ni voisins bruyants.
Concentrez-vous sur vos données, pas sur vos outils : il suffit de quelques minutes pour démarrer avec la solution Graylog cloud hosting de Stackhero.
Envoyer les logs Node.js vers Graylog avec le package graylog2 (recommandé)
Envoyer des logs de Node.js vers Graylog est très simple. Dans cet exemple, vous allez voir comment utiliser le package graylog2 pour rendre ce processus fluide.
Pour commencer, installez le package en exécutant la commande suivante :
npm install graylog2
Voici comment l'utiliser pour enregistrer des messages :
const graylog2 = require('graylog2');
const crypto = require('crypto');
const logger = new graylog2.graylog({
servers: [{ host: '<XXXXXX>.stackhero-network.com', port: 12201 }] // Pensez à remplacer "host" par votre domaine Graylog
});
// Envoyer un message simple à Graylog
logger.log('Simple message example');
// Ajouter des données à un message
logger.log(
'Password recovery email', // Message
// Un objet JSON avec des détails supplémentaires
{
subject: 'Password recovery',
language: 'en_US',
domain: 'gmail.com'
}
);
// Exemple avancé
const ip = '1.2.3.4';
const ipHash = crypto.createHash('md5').update(ip).digest('hex');
const userId = '1234';
const userIdHash = crypto.createHash('md5').update(userId).digest('hex');
logger.log(
'API request', // Message
// Un objet JSON avec plus de détails
{
route: '/v1/messages/1234/',
method: 'POST',
responseTime: 12, // ms
responseCode: 200,
ipHash,
userIdHash
}
);
// Logger les exceptions non interceptées dans Node.js
process.on(
'uncaughtException',
err => {
logger.log(
err,
{ type: 'uncaughtException' }
);
}
);
Pour plus d'exemples, vous pouvez consulter ce dépôt GitHub.
warning N'oubliez pas de configurer votre input Graylog (voir détails ci-dessous).
Utiliser le package Winston GELF pour envoyer les logs Node.js vers Graylog
warning Il est préférable d'utiliser le package
graylog2sauf si Winston fait déjà partie de votre projet. Dans ce cas, vous pouvez le remplacer parwinston-gelf.
Pour installer le package Winston GELF, exécutez :
npm install winston-gelf
Si Winston n'est pas déjà dans votre projet, ajoutez-le avec :
npm install winston
Voici une configuration de base :
const winston = require('winston');
const winstonGelf = require('winston-gelf');
const process = require('process');
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
new winstonGelf({
// Consultez toutes les options gelfPro ici : https://www.npmjs.com/package/gelf-pro
gelfPro: {
fields: {
env: process.env.NODE_ENV || 'development'
},
adapterName: 'udp',
adapterOptions: {
host: '<XXXXXX>.stackhero-network.com', // Remplacez par votre domaine Graylog
port: 12201,
}
}
})
]
});
// Exemple de log informatif
logger.info('This is a log information');
// Exemple de log d'erreur
try {
throw Error('This is an example error');
}
catch(error) {
logger.warn({ message: 'Error triggered', error });
}
N'oubliez pas de configurer votre input Graylog (voir détails ci-dessous).
Configuration de l'input Graylog
Sur l'interface Graylog, allez dans System/Inputs, créez un nouvel input de type "GELF UDP" et cliquez sur "Launch new input". Dans la fenêtre qui s'affiche, cochez "Global", ajoutez un titre et validez sans modifier les autres paramètres.
C'est tout ! Votre Graylog est maintenant prêt à recevoir les logs de votre application Node.js.
Pour renforcer la sécurité, pensez à filtrer les IPs autorisées à envoyer des données sur le port 12201. Pour cela, rendez-vous sur le tableau de bord Stackhero, sélectionnez votre service Graylog et configurez le "Firewall" pour n'autoriser que vos IPs.