Graylog: Naudojimas su Node.js
Kaip siųsti logus iš Node.js į Graylog
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti Graylog cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:
- Įtrauktas neribotas ir dedikuotas SMTP el. pašto serveris.
- Lengvi atnaujinimai vienu paspaudimu.
- Pritaikomas domeno vardas, apsaugotas HTTPS (pavyzdžiui, https://logs.jusu-imone.com).
- Optimali veikla ir tvirta sauga, užtikrinta privačia ir dedikuota VM.
Taupykite laiką ir supaprastinkite savo gyvenimą: tereikia 5 minučių, kad išbandytumėte Stackhero Graylog cloud hosting sprendimą!
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.