Graylog: Naudojimas su Node.js
Kaip siųsti žurnalus 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 žurnalų siuntimas į Graylog naudojant graylog2 paketą (rekomenduojama)
Žurnalų siuntimas iš Node.js į Graylog yra gana paprastas. Šiame pavyzdyje pamatysite, kaip naudoti graylog2 paketą, kad šis procesas būtų sklandus.
Norėdami pradėti, galite įdiegti paketą vykdydami šią komandą:
npm install graylog2
Štai kaip galite jį naudoti žinutėms registruoti:
const graylog2 = require('graylog2');
const crypto = require('crypto');
const logger = new graylog2.graylog({
servers: [{ host: '<XXXXXX>.stackhero-network.com', port: 12201 }] // Įsitikinkite, kad pakeitėte "host" savo Graylog domenu
});
// Siųsti paprastą žinutę į Graylog
logger.log('Paprastos žinutės pavyzdys');
// Pridėti duomenis prie žinutės
logger.log(
'Slaptažodžio atkūrimo el. laiškas', // Žinutė
// JSON objektas su papildoma informacija
{
subject: 'Slaptažodžio atkūrimas',
language: 'en_US',
domain: 'gmail.com'
}
);
// Išplėstinis 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 užklausa', // Žinutė
// JSON objektas su daugiau detalių
{
route: '/v1/messages/1234/',
method: 'POST',
responseTime: 12, // ms
responseCode: 200,
ipHash,
userIdHash
}
);
// Registruoti neapdorotas išimtis Node.js
process.on(
'uncaughtException',
err => {
logger.log(
err,
{ type: 'uncaughtException' }
);
}
);
Daugiau pavyzdžių galite rasti šiame GitHub saugykloje.
warning Nepamirškite sukonfigūruoti savo Graylog įvesties (detalės žemiau).
Naudojant Winston GELF paketą Node.js žurnalams siųsti į Graylog
warning Geriausia naudoti
graylog2paketą, nebent Winston jau yra jūsų projekte. Jei taip, galite jį pakeistiwinston-gelf.
Norėdami įdiegti Winston GELF paketą, vykdykite:
npm install winston-gelf
Jei Winston dar nėra jūsų projekte, galite jį pridėti su:
npm install winston
Štai pagrindinė konfigūracija:
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 domenu
port: 12201,
}
}
})
]
});
// Informacinio žurnalo pavyzdys
logger.info('Tai yra žurnalo informacija');
// Klaidos žurnalo pavyzdys
try {
throw Error('Tai yra klaidos pavyzdys');
}
catch(error) {
logger.warn({ message: 'Klaida sukelta', error });
}
Nepamirškite sukonfigūruoti savo Graylog įvesties (detalės žemiau).
Graylog įvesties konfigūravimas
Graylog sąsajoje eikite į System/Inputs, sukurkite naują įvestį tipo "GELF UDP" ir spustelėkite "Paleisti naują įvestį". Atsiradusiame modale pažymėkite "Global", pridėkite pavadinimą ir patvirtinkite nekeisdami kitų nustatymų.
Ir viskas! Jūsų Graylog dabar sukonfigūruotas priimti žurnalus iš jūsų Node.js programos.
Norėdami padidinti saugumą, apsvarstykite galimybę filtruoti IP adresus, leidžiamus siųsti duomenis į 12201 prievadą. Tai galite padaryti eidami į Stackhero prietaisų skydelį, pasirinkdami savo Graylog paslaugą ir konfigūruodami "Firewall", kad leistumėte tik savo IP.