Graylog: Utilisation avec Node.js
Comment envoyer des logs de Node.js vers Graylog
👋 Bienvenue sur la documentation de Stackhero !
Stackhero propose une solution Graylog cloud prête à l'emploi qui offre de nombreux avantages, notamment :
- Serveur e-mail SMTP illimité et dédié inclus.
- Mises à jour sans effort en un clic.
- Nom de domaine personnalisable sécurisé avec HTTPS (par exemple, https://logs.votre-entreprise.com).
- Performance optimale et sécurité robuste grâce à une VM privée et dédiée.
Gagnez du temps et simplifiez-vous la vie : il suffit de 5 minutes pour essayer la solution Graylog cloud hosting de Stackhero !
Envoi des logs Node.js vers Graylog avec le package graylog2 (recommandé)
Envoyer des logs de Node.js vers Graylog est assez simple. Dans cet exemple, vous verrez comment utiliser le package graylog2 pour rendre ce processus fluide.
Pour commencer, vous pouvez installer 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 }] // Assurez-vous de remplacer "host" par votre domaine Graylog
});
// Envoyer un message simple à Graylog
logger.log('Exemple de message simple');
// Ajouter des données à un message
logger.log(
'E-mail de récupération de mot de passe', // Message
// Un objet JSON avec des détails supplémentaires
{
subject: 'Récupération de mot de passe',
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(
'Requête API', // Message
// Un objet JSON avec plus de détails
{
route: '/v1/messages/1234/',
method: 'POST',
responseTime: 12, // ms
responseCode: 200,
ipHash,
userIdHash
}
);
// Enregistrer les exceptions non interceptées dans Node.js
process.on(
'uncaughtException',
err => {
logger.log(
err,
{ type: 'uncaughtException' }
);
}
);
Pour plus d'exemples, vous pouvez visiter ce dépôt GitHub.
warning N'oubliez pas de configurer votre entrée Graylog (détails ci-dessous).
Utilisation du package Winston GELF pour envoyer des 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, vous pouvez l'ajouter 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 de 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('Ceci est une information de log');
// Exemple de log d'erreur
try {
throw Error('Ceci est une erreur d'exemple');
}
catch(error) {
logger.warn({ message: 'Erreur déclenchée', error });
}
N'oubliez pas de configurer votre entrée Graylog (détails ci-dessous).
Configuration de l'entrée Graylog
Sur l'interface Graylog, accédez à System/Inputs, créez une nouvelle entrée de type "GELF UDP" et cliquez sur "Lancer une nouvelle entrée". Dans la fenêtre modale qui apparaît, cochez "Global", ajoutez un titre et confirmez sans modifier d'autres paramètres.
Et voilà ! Votre Graylog est maintenant configuré pour recevoir des logs de votre application Node.js.
Pour renforcer la sécurité, envisagez de filtrer les IP autorisées à envoyer des données au port 12201. Vous pouvez le faire en accédant au tableau de bord Stackhero, en sélectionnant votre service Graylog et en configurant le "Pare-feu" pour n'autoriser que vos IP.