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ą!

Ž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).

warning Geriausia naudoti graylog2 paketą, nebent Winston jau yra jūsų projekte. Jei taip, galite jį pakeisti winston-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 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.