Graylog: Utilizzo con Node.js
Come inviare i log da Node.js a Graylog
👋 Benvenuti nella documentazione di Stackhero!
Stackhero offre una soluzione Graylog cloud pronta all'uso che fornisce numerosi vantaggi, tra cui:
- Server email SMTP illimitato e dedicato incluso.
- Aggiornamenti senza sforzo con un solo clic.
- Nome di dominio personalizzabile sicuro con HTTPS (ad esempio, https://logs.tua-azienda.com).
- Prestazioni ottimali e sicurezza robusta grazie a una VM privata e dedicata.
Risparmia tempo e semplifica la tua vita: bastano 5 minuti per provare la soluzione Graylog cloud hosting di Stackhero!
Invio dei log di Node.js a Graylog con il pacchetto graylog2 (consigliato)
Inviare i log da Node.js a Graylog è piuttosto semplice. In questo esempio, vedrai come utilizzare il pacchetto graylog2 per rendere questo processo fluido.
Per iniziare, puoi installare il pacchetto eseguendo il seguente comando:
npm install graylog2
Ecco come puoi usarlo per registrare i messaggi:
const graylog2 = require('graylog2');
const crypto = require('crypto');
const logger = new graylog2.graylog({
servers: [{ host: '<XXXXXX>.stackhero-network.com', port: 12201 }] // Assicurati di sostituire "host" con il tuo dominio Graylog
});
// Invia un messaggio semplice a Graylog
logger.log('Esempio di messaggio semplice');
// Aggiungi dati a un messaggio
logger.log(
'Email di recupero password', // Messaggio
// Un oggetto JSON con dettagli aggiuntivi
{
subject: 'Recupero password',
language: 'en_US',
domain: 'gmail.com'
}
);
// Esempio avanzato
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(
'Richiesta API', // Messaggio
// Un oggetto JSON con più dettagli
{
route: '/v1/messages/1234/',
method: 'POST',
responseTime: 12, // ms
responseCode: 200,
ipHash,
userIdHash
}
);
// Registra le eccezioni non gestite in Node.js
process.on(
'uncaughtException',
err => {
logger.log(
err,
{ type: 'uncaughtException' }
);
}
);
Per ulteriori esempi, puoi visitare questo repository GitHub.
warning Non dimenticare di configurare il tuo input Graylog (dettagli sotto).
Utilizzo del pacchetto Winston GELF per inviare i log di Node.js a Graylog
warning È meglio utilizzare il pacchetto
graylog2a meno che Winston non faccia già parte del tuo progetto. In tal caso, puoi sostituirlo conwinston-gelf.
Per installare il pacchetto Winston GELF, esegui:
npm install winston-gelf
Se Winston non è già nel tuo progetto, puoi aggiungerlo con:
npm install winston
Ecco una configurazione di 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({
// Controlla tutte le opzioni di gelfPro qui: https://www.npmjs.com/package/gelf-pro
gelfPro: {
fields: {
env: process.env.NODE_ENV || 'development'
},
adapterName: 'udp',
adapterOptions: {
host: '<XXXXXX>.stackhero-network.com', // Sostituisci con il tuo dominio Graylog
port: 12201,
}
}
})
]
});
// Esempio di log informativo
logger.info('Questa è un'informazione di log');
// Esempio di log di errore
try {
throw Error('Questo è un errore di esempio');
}
catch(error) {
logger.warn({ message: 'Errore attivato', error });
}
Non dimenticare di configurare il tuo input Graylog (dettagli sotto).
Configurazione dell'input Graylog
Sull'interfaccia Graylog, vai su System/Inputs, crea un nuovo input di tipo "GELF UDP" e clicca su "Avvia nuovo input". Nella finestra modale che appare, seleziona "Globale", aggiungi un titolo e conferma senza modificare altre impostazioni.
Ecco fatto! Il tuo Graylog è ora configurato per ricevere i log dalla tua applicazione Node.js.
Per migliorare la sicurezza, considera di filtrare gli IP autorizzati a inviare dati alla porta 12201. Puoi farlo accedendo alla dashboard di Stackhero, selezionando il tuo servizio Graylog e configurando il "Firewall" per consentire solo i tuoi IP.