Graylog: Envoyer des logs Node.js vers Graylog avec le package graylog2 (recommandé)

Cette documentation fait partie du guide Utilisation avec Node.js. Consultez le guide complet ici : Comment envoyer des logs de Node.js vers Graylog.

👋 Bienvenue dans la documentation Stackhero

Stackhero offre une solution Graylog cloud entièrement gérée, conçue pour la rapidité et la simplicité. Vous pouvez :

  • Compter sur un serveur SMTP d'email dédié et illimité inclus avec votre service.
  • Appliquer les mises à jour facilement en un seul 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é.
  • Profiter d'une performance et d'une sécurité accrues 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 : vous pouvez commencer avec la solution Graylog cloud hosting de Stackhero en seulement quelques minutes.

Envoyer des logs de Node.js vers Graylog est très simple. Dans cet exemple, vous verrez comment utiliser le package graylog2 pour rendre ce processus transparent.

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('Simple message example');

// Ajouter des données à un message
logger.log(
  'Password recovery email', // Message
  // Un objet JSON avec des détails additionnels
  {
    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).