Graylog: Gebruik met Node.js
Hoe logs van Node.js naar Graylog te sturen
👋 Welkom bij de Stackhero documentatie!
Stackhero biedt een kant-en-klare Graylog cloud oplossing die tal van voordelen biedt, waaronder:
- Onbeperkte en toegewijde SMTP e-mailserver inbegrepen.
- Moeiteloze updates met slechts één klik.
- Aanpasbare domeinnaam beveiligd met HTTPS (bijvoorbeeld, https://logs.uw-bedrijf.com).
- Optimale prestaties en robuuste beveiliging aangedreven door een privé en toegewijde VM.
Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Graylog cloud hosting oplossing van Stackhero te proberen!
Logs van Node.js naar Graylog sturen met het graylog2-pakket (aanbevolen)
Het sturen van logs van Node.js naar Graylog is vrij eenvoudig. In dit voorbeeld ziet u hoe u het graylog2-pakket kunt gebruiken om dit proces soepel te laten verlopen.
Om te beginnen kunt u het pakket installeren door de volgende opdracht uit te voeren:
npm install graylog2
Hier is hoe u het kunt gebruiken om berichten te loggen:
const graylog2 = require('graylog2');
const crypto = require('crypto');
const logger = new graylog2.graylog({
servers: [{ host: '<XXXXXX>.stackhero-network.com', port: 12201 }] // Zorg ervoor dat u "host" vervangt door uw Graylog-domein
});
// Stuur een eenvoudig bericht naar Graylog
logger.log('Eenvoudig berichtvoorbeeld');
// Voeg gegevens toe aan een bericht
logger.log(
'Wachtwoordherstel e-mail', // Bericht
// Een JSON-object met extra details
{
subject: 'Wachtwoordherstel',
language: 'en_US',
domain: 'gmail.com'
}
);
// Geavanceerd voorbeeld
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-verzoek', // Bericht
// Een JSON-object met meer details
{
route: '/v1/messages/1234/',
method: 'POST',
responseTime: 12, // ms
responseCode: 200,
ipHash,
userIdHash
}
);
// Log niet-opgevangen uitzonderingen in Node.js
process.on(
'uncaughtException',
err => {
logger.log(
err,
{ type: 'uncaughtException' }
);
}
);
Voor meer voorbeelden kunt u deze GitHub-repository bezoeken.
warning Vergeet niet uw Graylog-input te configureren (details hieronder).
Het gebruik van het Winston GELF-pakket om Node.js-logs naar Graylog te sturen
warning Het is het beste om het
graylog2-pakket te gebruiken, tenzij Winston al deel uitmaakt van uw project. In dat geval kunt u het vervangen doorwinston-gelf.
Om het Winston GELF-pakket te installeren, voert u uit:
npm install winston-gelf
Als Winston nog niet in uw project zit, kunt u het toevoegen met:
npm install winston
Hier is een basisconfiguratie:
const winston = require('winston');
const winstonGelf = require('winston-gelf');
const process = require('process');
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
new winstonGelf({
// Bekijk alle gelfPro-opties hier: https://www.npmjs.com/package/gelf-pro
gelfPro: {
fields: {
env: process.env.NODE_ENV || 'development'
},
adapterName: 'udp',
adapterOptions: {
host: '<XXXXXX>.stackhero-network.com', // Vervang door uw Graylog-domein
port: 12201,
}
}
})
]
});
// Voorbeeld van een informatieve log
logger.info('Dit is een loginformatie');
// Voorbeeld van een foutlog
try {
throw Error('Dit is een voorbeeldfout');
}
catch(error) {
logger.warn({ message: 'Fout geactiveerd', error });
}
Vergeet niet uw Graylog-input te configureren (details hieronder).
Configuratie van de Graylog-input
Ga in de Graylog-interface naar System/Inputs, maak een nieuwe input van het type "GELF UDP" en klik op "Nieuwe input starten". In het verschijnende venster vinkt u "Global" aan, voegt u een titel toe en bevestigt u zonder andere instellingen te wijzigen.
Dat is alles! Uw Graylog is nu ingesteld om logs van uw Node.js-applicatie te ontvangen.
Om de beveiliging te verbeteren, overweeg om de IP's te filteren die gegevens naar poort 12201 mogen sturen. U kunt dit doen door naar het Stackhero-dashboard te gaan, uw Graylog-service te selecteren en de "Firewall" te configureren om alleen uw IP's toe te staan.