Graylog: Naudojimas su Node.js
Kaip siųsti logus iš Node.js į Graylog
👋 Sveiki atvykę į Stackhero dokumentaciją
Stackhero siūlo pilnai valdomą Graylog cloud sprendimą, sukurtą greičiui ir paprastumui. Galite:
- Pasikliauti neribotu, dedikuotu SMTP el. pašto serveriu, kuris įtrauktas į jūsų paslaugą.
- Taikyti atnaujinimus be pastangų vienu paspaudimu, nereikalaujant rankinio įsikišimo.
- Naudoti individualų domeno vardą, apsaugotą HTTPS (pavyzdžiui, https://logs.jusu-imone.com), suteikiant komandai saugų ir tiesioginį priėjimą.
- Patirti aukštą veikimo spartą ir saugumą naudojant privačią, dedikuotą infrastruktūrą be bendrų resursų ar triukšmingų kaimynų.
Susitelkite į savo duomenis, o ne į įrankius: pradėti naudotis Stackhero Graylog cloud hosting sprendimu galite vos per kelias minutes.
Node.js logų siuntimas į Graylog naudojant graylog2 paketą (rekomenduojama)
Logų siuntimas iš Node.js į Graylog yra gana paprastas procesas. Šiame pavyzdyje matysite, kaip naudoti graylog2 paketą, kad šis procesas būtų sklandus.
Norėdami pradėti, įdiekite paketą vykdydami šią komandą:
npm install graylog2
Štai kaip galite jį naudoti žinučių logavimui:
const graylog2 = require('graylog2');
const crypto = require('crypto');
const logger = new graylog2.graylog({
servers: [{ host: '<XXXXXX>.stackhero-network.com', port: 12201 }] // Nepamirškite "host" pakeisti į savo Graylog domeną
});
// Paprastos žinutės siuntimas į Graylog
logger.log('Simple message example');
// Pridėti duomenų prie žinutės
logger.log(
'Password recovery email', // Žinutė
// JSON objektas su papildoma informacija
{
subject: 'Password recovery',
language: 'en_US',
domain: 'gmail.com'
}
);
// Sudėtingesnis pavyzdys
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', // Žinutė
// JSON objektas su daugiau informacijos
{
route: '/v1/messages/1234/',
method: 'POST',
responseTime: 12, // ms
responseCode: 200,
ipHash,
userIdHash
}
);
// Loguoti neapdorotas (uncaught) išimtis Node.js
process.on(
'uncaughtException',
err => {
logger.log(
err,
{ type: 'uncaughtException' }
);
}
);
Daugiau pavyzdžių rasite šiame GitHub repozitoriume.
warning Nepamirškite sukonfigūruoti savo Graylog input (detalės žemiau).
Node.js logų siuntimas į Graylog naudojant Winston GELF paketą
warning Rekomenduojama naudoti
graylog2paketą, nebent Winston jau yra jūsų projekte. Tokiu atveju galite naudotiwinston-gelf.
Norėdami įdiegti Winston GELF paketą, vykdykite:
npm install winston-gelf
Jei Winston dar nėra jūsų projekte, pridėkite jį su:
npm install winston
Pagrindinė konfigūracija atrodytų taip:
const winston = require('winston');
const winstonGelf = require('winston-gelf');
const process = require('process');
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
new winstonGelf({
// Visas gelfPro parinktis rasite čia: https://www.npmjs.com/package/gelf-pro
gelfPro: {
fields: {
env: process.env.NODE_ENV || 'development'
},
adapterName: 'udp',
adapterOptions: {
host: '<XXXXXX>.stackhero-network.com', // Pakeiskite į savo Graylog domeną
port: 12201,
}
}
})
]
});
// Informacinio log'o pavyzdys
logger.info('This is a log information');
// Klaidos log'o pavyzdys
try {
throw Error('This is an example error');
}
catch(error) {
logger.warn({ message: 'Error triggered', error });
}
Nepamirškite sukonfigūruoti savo Graylog input (detalės žemiau).
Graylog input konfigūravimas
Graylog sąsajoje eikite į System/Inputs, sukurkite naują input tipo "GELF UDP" ir spauskite "Launch new input". Atsidariusiame lange pažymėkite "Global", įrašykite pavadinimą ir patvirtinkite nekeisdami kitų nustatymų.
Viskas! Dabar jūsų Graylog paruoštas priimti logus iš jūsų Node.js aplikacijos.
Norėdami padidinti saugumą, rekomenduojama filtruoti IP adresus, kuriems leidžiama siųsti duomenis į 12201 portą. Tai galite padaryti Stackhero valdymo pulte pasirinkę savo Graylog paslaugą ir sukonfigūravę "Firewall", kad būtų leidžiami tik jūsų IP adresai.