Graylog: Enviar logs de Node.js para o Graylog com o pacote graylog2 (recomendado)

Esta documentação faz parte do guia Utilizar com Node.js. Consulte o guia completo aqui: Como enviar logs de Node.js para o Graylog.

👋 Bem-vindo à documentação da Stackhero

A Stackhero disponibiliza uma solução Graylog cloud totalmente gerida, concebida para garantir rapidez e simplicidade. Pode:

  • Contar com um servidor de email SMTP dedicado e ilimitado incluído no seu serviço.
  • Aplicar atualizações de forma simples, com apenas um clique, sem necessidade de intervenção manual.
  • Utilizar um domínio personalizado protegido por HTTPS (por exemplo, https://logs.sua-empresa.com), proporcionando à sua equipa um acesso direto e seguro.
  • Beneficiar de elevada performance e segurança numa infraestrutura privada e dedicada, sem recursos partilhados nem vizinhos ruidosos.

Concentre-se nos seus dados, não nas ferramentas: pode começar a utilizar a solução Graylog cloud hosting da Stackhero em apenas alguns minutos.

Enviar logs de Node.js para o Graylog é bastante simples. Neste exemplo, irá ver como utilizar o pacote graylog2 para tornar este processo transparente.

Para começar, pode instalar o pacote executando o seguinte comando:

npm install graylog2

Veja como pode utilizá-lo para registar mensagens:

const graylog2 = require('graylog2');
const crypto = require('crypto');

const logger = new graylog2.graylog({
  servers: [{ host: '<XXXXXX>.stackhero-network.com', port: 12201 }] // Certifique-se de substituir "host" pelo seu domínio Graylog
});

// Enviar uma mensagem simples para o Graylog
logger.log('Simple message example');

// Anexar dados a uma mensagem
logger.log(
  'Password recovery email', // Mensagem
  // Um objeto JSON com detalhes adicionais
  {
    subject: 'Password recovery',
    language: 'en_US',
    domain: 'gmail.com'
  }
);

// Exemplo avançado
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', // Mensagem
  // Um objeto JSON com mais detalhes
  {
    route: '/v1/messages/1234/',
    method: 'POST',

    responseTime: 12, // ms
    responseCode: 200,

    ipHash,
    userIdHash
  }
);

// Registar exceções não capturadas em Node.js
process.on(
  'uncaughtException',
  err => {
    logger.log(
      err,
      { type: 'uncaughtException' }
    );
  }
);

Para mais exemplos, pode consultar este repositório GitHub.

warning Não se esqueça de configurar o seu input Graylog (detalhes abaixo).