Graylog: Verwendung mit Node.js
Wie Sie Logs von Node.js an Graylog senden
👋 Willkommen bei der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite Graylog Cloud-Lösung, die zahlreiche Vorteile bietet, darunter:
- Unbegrenzter und dedizierter SMTP-E-Mail-Server inklusive.
- Mühelose Updates mit nur einem Klick.
- Anpassbarer Domainname gesichert mit HTTPS (zum Beispiel, https://logs.ihre-firma.com).
- Optimale Performance und robuste Sicherheit durch eine private und dedizierte VM.
Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Graylog Cloud Hosting-Lösung von Stackhero auszuprobieren!
Node.js-Logs mit dem graylog2-Paket an Graylog senden (empfohlen)
Das Senden von Logs aus Node.js an Graylog ist sehr unkompliziert. In diesem Beispiel erfahren Sie, wie Sie das graylog2-Paket nutzen, um diesen Prozess nahtlos zu gestalten.
Um zu starten, installieren Sie das Paket mit folgendem Befehl:
npm install graylog2
So können Sie es verwenden, um Nachrichten zu protokollieren:
const graylog2 = require('graylog2');
const crypto = require('crypto');
const logger = new graylog2.graylog({
servers: [{ host: '<XXXXXX>.stackhero-network.com', port: 12201 }] // Ersetzen Sie "host" durch Ihre Graylog-Domain
});
// Senden Sie eine einfache Nachricht an Graylog
logger.log('Simple message example');
// Fügen Sie einer Nachricht zusätzliche Daten hinzu
logger.log(
'Password recovery email', // Nachricht
// Ein JSON-Objekt mit weiteren Details
{
subject: 'Password recovery',
language: 'en_US',
domain: 'gmail.com'
}
);
// Fortgeschrittenes Beispiel
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', // Nachricht
// Ein JSON-Objekt mit weiteren Details
{
route: '/v1/messages/1234/',
method: 'POST',
responseTime: 12, // ms
responseCode: 200,
ipHash,
userIdHash
}
);
// Nicht abgefangene Ausnahmen in Node.js protokollieren
process.on(
'uncaughtException',
err => {
logger.log(
err,
{ type: 'uncaughtException' }
);
}
);
Weitere Beispiele finden Sie in diesem GitHub-Repository.
warning Vergessen Sie nicht, Ihren Graylog-Input zu konfigurieren (Details unten).
Node.js-Logs mit dem Winston GELF-Paket an Graylog senden
warning Es wird empfohlen, das
graylog2-Paket zu verwenden, es sei denn, Winston ist bereits Teil Ihres Projekts. In diesem Fall können Sie stattdessenwinston-gelfeinsetzen.
Um das Winston GELF-Paket zu installieren, führen Sie aus:
npm install winston-gelf
Falls Winston noch nicht in Ihrem Projekt ist, können Sie es mit folgendem Befehl hinzufügen:
npm install winston
Hier ein einfaches Setup:
const winston = require('winston');
const winstonGelf = require('winston-gelf');
const process = require('process');
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
new winstonGelf({
// Alle gelfPro-Optionen finden Sie hier: https://www.npmjs.com/package/gelf-pro
gelfPro: {
fields: {
env: process.env.NODE_ENV || 'development'
},
adapterName: 'udp',
adapterOptions: {
host: '<XXXXXX>.stackhero-network.com', // Ersetzen Sie dies durch Ihre Graylog-Domain
port: 12201,
}
}
})
]
});
// Beispiel für einen Info-Log
logger.info('This is a log information');
// Beispiel für einen Fehler-Log
try {
throw Error('This is an example error');
}
catch(error) {
logger.warn({ message: 'Error triggered', error });
}
Vergessen Sie nicht, Ihren Graylog-Input zu konfigurieren (Details unten).
Graylog-Input konfigurieren
Navigieren Sie in der Graylog-Oberfläche zu System/Inputs, erstellen Sie einen neuen Input vom Typ "GELF UDP" und klicken Sie auf "Launch new input". Im erscheinenden Dialog wählen Sie "Global" aus, vergeben einen Titel und bestätigen ohne weitere Einstellungen zu ändern.
Das war's! Ihr Graylog ist jetzt bereit, Logs aus Ihrer Node.js-Anwendung zu empfangen.
Um die Sicherheit zu erhöhen, sollten Sie die IP-Adressen filtern, die Daten an Port 12201 senden dürfen. Dies können Sie im Stackhero-Dashboard tun, indem Sie Ihren Graylog-Service auswählen und unter "Firewall" nur Ihre eigenen IPs zulassen.