Graylog: Używanie z Node.js
Jak wysyłać logi z Node.js do Graylog
👋 Witamy w dokumentacji Stackhero!
Stackhero oferuje gotowe do użycia rozwiązanie Graylog cloud, które zapewnia wiele korzyści, w tym:
- Nieograniczony i dedykowany serwer e-mail SMTP w zestawie.
- Bezproblemowe aktualizacje za pomocą jednego kliknięcia.
- Dostosowywalna nazwa domeny zabezpieczona za pomocą HTTPS (na przykład, https://logs.twoja-firma.com).
- Optymalna wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.
Oszczędzaj czas i upraszczaj swoje życie: wystarczy 5 minut, aby wypróbować rozwiązanie Graylog cloud hosting Stackhero!
Wysyłanie logów z Node.js do Graylog za pomocą pakietu graylog2 (zalecane)
Wysyłanie logów z Node.js do Graylog jest dość proste. W tym przykładzie zobaczysz, jak użyć pakietu graylog2, aby ten proces był płynny.
Aby rozpocząć, możesz zainstalować pakiet, uruchamiając następujące polecenie:
npm install graylog2
Oto jak możesz go użyć do rejestrowania wiadomości:
const graylog2 = require('graylog2');
const crypto = require('crypto');
const logger = new graylog2.graylog({
servers: [{ host: '<XXXXXX>.stackhero-network.com', port: 12201 }] // Upewnij się, że zastąpisz "host" swoją domeną Graylog
});
// Wyślij prostą wiadomość do Graylog
logger.log('Przykład prostej wiadomości');
// Dołącz dane do wiadomości
logger.log(
'E-mail odzyskiwania hasła', // Wiadomość
// Obiekt JSON z dodatkowymi szczegółami
{
subject: 'Odzyskiwanie hasła',
language: 'en_US',
domain: 'gmail.com'
}
);
// Zaawansowany przykład
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(
'Żądanie API', // Wiadomość
// Obiekt JSON z większą ilością szczegółów
{
route: '/v1/messages/1234/',
method: 'POST',
responseTime: 12, // ms
responseCode: 200,
ipHash,
userIdHash
}
);
// Rejestrowanie nieprzechwyconych wyjątków w Node.js
process.on(
'uncaughtException',
err => {
logger.log(
err,
{ type: 'uncaughtException' }
);
}
);
Więcej przykładów znajdziesz w tym repozytorium GitHub.
warning Nie zapomnij skonfigurować swojego wejścia Graylog (szczegóły poniżej).
Używanie pakietu Winston GELF do wysyłania logów z Node.js do Graylog
warning Najlepiej używać pakietu
graylog2, chyba że Winston jest już częścią twojego projektu. W takim przypadku możesz go zastąpićwinston-gelf.
Aby zainstalować pakiet Winston GELF, uruchom:
npm install winston-gelf
Jeśli Winston nie jest jeszcze w twoim projekcie, możesz go dodać za pomocą:
npm install winston
Oto podstawowa konfiguracja:
const winston = require('winston');
const winstonGelf = require('winston-gelf');
const process = require('process');
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
new winstonGelf({
// Sprawdź wszystkie opcje gelfPro tutaj: https://www.npmjs.com/package/gelf-pro
gelfPro: {
fields: {
env: process.env.NODE_ENV || 'development'
},
adapterName: 'udp',
adapterOptions: {
host: '<XXXXXX>.stackhero-network.com', // Zastąp swoją domeną Graylog
port: 12201,
}
}
})
]
});
// Przykład logu informacyjnego
logger.info('To jest informacja logu');
// Przykład logu błędu
try {
throw Error('To jest przykładowy błąd');
}
catch(error) {
logger.warn({ message: 'Błąd wywołany', error });
}
Nie zapomnij skonfigurować swojego wejścia Graylog (szczegóły poniżej).
Konfigurowanie wejścia Graylog
Na interfejsie Graylog przejdź do System/Inputs, utwórz nowe wejście typu "GELF UDP" i kliknij "Uruchom nowe wejście". W pojawiającym się oknie modalnym zaznacz "Global", dodaj tytuł i potwierdź bez modyfikowania innych ustawień.
To wszystko! Twój Graylog jest teraz skonfigurowany do odbierania logów z twojej aplikacji Node.js.
Aby zwiększyć bezpieczeństwo, rozważ filtrowanie IP, które mogą wysyłać dane na port 12201. Możesz to zrobić, przechodząc do panelu Stackhero, wybierając swoją usługę Graylog i konfigurując "Firewall", aby zezwalać tylko na twoje IP.