Graylog: Verwendung mit Node.js
Wie man Logs von Node.js an Graylog sendet
👋 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!
Senden von Node.js-Logs an Graylog mit dem graylog2-Paket (empfohlen)
Das Senden von Logs von Node.js an Graylog ist ziemlich einfach. In diesem Beispiel sehen Sie, wie Sie das graylog2-Paket verwenden können, um diesen Prozess nahtlos zu gestalten.
Um zu beginnen, können Sie das Paket mit folgendem Befehl installieren:
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 }] // Stellen Sie sicher, "host" durch Ihre Graylog-Domain zu ersetzen
});
// Senden Sie eine einfache Nachricht an Graylog
logger.log('Einfaches Nachrichtenbeispiel');
// Daten an eine Nachricht anhängen
logger.log(
'Passwort-Wiederherstellungs-E-Mail', // Nachricht
// Ein JSON-Objekt mit zusätzlichen Details
{
subject: 'Passwort-Wiederherstellung',
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-Anfrage', // Nachricht
// Ein JSON-Objekt mit mehr Details
{
route: '/v1/messages/1234/',
method: 'POST',
responseTime: 12, // ms
responseCode: 200,
ipHash,
userIdHash
}
);
// Ungefangene Ausnahmen in Node.js protokollieren
process.on(
'uncaughtException',
err => {
logger.log(
err,
{ type: 'uncaughtException' }
);
}
);
Für weitere Beispiele können Sie dieses GitHub-Repository besuchen.
warning Vergessen Sie nicht, Ihren Graylog-Eingang zu konfigurieren (Details unten).
Verwendung des Winston GELF-Pakets zum Senden von Node.js-Logs an Graylog
warning Es ist am besten, das
graylog2-Paket zu verwenden, es sei denn, Winston ist bereits Teil Ihres Projekts. In diesem Fall können Sie es durchwinston-gelfersetzen.
Um das Winston GELF-Paket zu installieren, führen Sie aus:
npm install winston-gelf
Wenn Winston noch nicht in Ihrem Projekt ist, können Sie es mit folgendem Befehl hinzufügen:
npm install winston
Hier ist eine grundlegende Einrichtung:
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 hier prüfen: 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 durch Ihre Graylog-Domain
port: 12201,
}
}
})
]
});
// Beispiel eines informativen Logs
logger.info('Dies ist eine Log-Information');
// Beispiel eines Fehler-Logs
try {
throw Error('Dies ist ein Beispiel-Fehler');
}
catch(error) {
logger.warn({ message: 'Fehler ausgelöst', error });
}
Vergessen Sie nicht, Ihren Graylog-Eingang zu konfigurieren (Details unten).
Konfiguration des Graylog-Eingangs
In der Graylog-Oberfläche navigieren Sie zu System/Inputs, erstellen Sie einen neuen Eingang vom Typ "GELF UDP" und klicken Sie auf "Neuen Eingang starten". Im erscheinenden Modal aktivieren Sie "Global", fügen einen Titel hinzu und bestätigen ohne weitere Einstellungen zu ändern.
Das war's! Ihr Graylog ist jetzt bereit, Logs von Ihrer Node.js-Anwendung zu empfangen.
Um die Sicherheit zu erhöhen, sollten Sie in Betracht ziehen, die IPs zu filtern, die Daten an Port 12201 senden dürfen. Sie können dies tun, indem Sie zum Stackhero-Dashboard gehen, Ihren Graylog-Dienst auswählen und die "Firewall" so konfigurieren, dass nur Ihre IPs zugelassen werden.