Graylog: Utilizar com Node.js
Como enviar logs de Node.js para Graylog
👋 Bem-vindo à documentação da Stackhero!
A Stackhero oferece uma solução Graylog cloud pronta a usar que proporciona uma série de benefícios, incluindo:
- Servidor de email SMTP ilimitado e dedicado incluído.
- Atualizações sem esforço com apenas um clique.
- Nome de domínio personalizável seguro com HTTPS (por exemplo, https://logs.sua-empresa.com).
- Desempenho ótimo e segurança robusta alimentados por uma VM privada e dedicada.
Poupe tempo e simplifique a sua vida: são necessários apenas 5 minutos para experimentar a solução Graylog cloud hosting da Stackhero!
Enviar logs de Node.js para Graylog com o pacote graylog2 (recomendado)
Enviar logs de Node.js para Graylog é bastante simples. Neste exemplo, verá como usar o pacote graylog2 para tornar este processo fluido.
Para começar, pode instalar o pacote executando o seguinte comando:
npm install graylog2
Aqui está como pode usá-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 Graylog
logger.log('Exemplo de mensagem simples');
// Anexar dados a uma mensagem
logger.log(
'Email de recuperação de senha', // Mensagem
// Um objeto JSON com detalhes adicionais
{
subject: 'Recuperação de senha',
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(
'Pedido API', // 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 visitar este repositório GitHub.
warning Não se esqueça de configurar a sua entrada Graylog (detalhes abaixo).
Usar o pacote Winston GELF para enviar logs de Node.js para Graylog
warning É melhor usar o pacote
graylog2a menos que Winston já faça parte do seu projeto. Nesse caso, pode substituí-lo porwinston-gelf.
Para instalar o pacote Winston GELF, execute:
npm install winston-gelf
Se Winston ainda não estiver no seu projeto, pode adicioná-lo com:
npm install winston
Aqui está uma configuração básica:
const winston = require('winston');
const winstonGelf = require('winston-gelf');
const process = require('process');
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
new winstonGelf({
// Verifique todas as opções de gelfPro aqui: https://www.npmjs.com/package/gelf-pro
gelfPro: {
fields: {
env: process.env.NODE_ENV || 'development'
},
adapterName: 'udp',
adapterOptions: {
host: '<XXXXXX>.stackhero-network.com', // Substitua pelo seu domínio Graylog
port: 12201,
}
}
})
]
});
// Exemplo de log informativo
logger.info('Esta é uma informação de log');
// Exemplo de log de erro
try {
throw Error('Este é um erro de exemplo');
}
catch(error) {
logger.warn({ message: 'Erro acionado', error });
}
Não se esqueça de configurar a sua entrada Graylog (detalhes abaixo).
Configurar a entrada Graylog
Na interface Graylog, navegue até System/Inputs, crie uma nova entrada do tipo "GELF UDP" e clique em "Lançar nova entrada". Na janela modal que aparece, marque "Global", adicione um título e confirme sem modificar outras configurações.
E é isso! O seu Graylog está agora configurado para receber logs da sua aplicação Node.js.
Para aumentar a segurança, considere filtrar os IPs autorizados a enviar dados para a porta 12201. Pode fazer isso acedendo ao painel de controlo Stackhero, selecionando o seu serviço Graylog e configurando o "Firewall" para permitir apenas os seus IPs.