Graylog: Pasirinkite įvesties tipus

Kaip pasirinkti tinkamą Graylog įvesties tipą

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

Graylog siūlo įvairias įvestis. Šios įvestys leidžia jums siųsti žurnalus į Graylog serverį arba leidžia Graylog gauti žurnalus iš kito šaltinio.

Beveik visais atvejais norėsite siųsti duomenis iš programos ar įrenginio į Graylog serverį. Mes neaptarsime pažangių atvejų, kai norite, kad Graylog gautų žurnalus iš kitur. Tačiau, jei norite tai padaryti, būkite ramūs, tai labai paprasta.

Norėdami pasirinkti geriausią įvesties tipą, pirmiausia turite nuspręsti, kokį žurnalo formatą norite siųsti į Graylog. Rekomenduojame naudoti GELF formatą, kaip nurodyta žemiau.

Tada turėsite pasirinkti protokolą: UDP arba TCP.

Pirmasis sprendimas yra pasirinkti jūsų žurnalo pranešimų formatą. Yra trys pagrindinės parinktys: RAW/Plaintext, Syslog arba GELF.

Tai paprasčiausias formatas. Jis veikia su bet kuria sistema, nes siunčia visą paprasto teksto pranešimą. Jis labai lengvai naudojamas ir puikiai tinka pradinei testavimui, pavyzdžiui, siunčiant pranešimą naudojant netcat įrankį.

Norėdami jį išbandyti, galite sukurti "Raw/Plaintext UDP" įvestį ir tada siųsti testinį žurnalą naudodami vieną iš šių komandų eilučių:

  1. Iš macOS: echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555
  2. Iš Linux: echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555

Labai paprasta, ar ne? Tačiau, kadangi tai yra pagrindinis formatas, greitai susidursite su apribojimais. Todėl nerekomenduojame jo naudoti daugiau nei paprastiems testams.

Tai gerai žinomas formatas, plačiai naudojamas žurnalams saugoti ir siųsti serverių aplinkose. Jį galite rasti Linux, Windows ir *BSD, tarp kitų operacinių sistemų.

Jei naudojate Syslog, Rsyslog ar kitą suderinamą paslaugą ir norite siųsti žurnalus iš serverio į Graylog, syslog įvestis yra paprasčiausias pasirinkimas.

Tačiau, kadangi GELF yra galingesnis, jei galite siųsti GELF formatuotus pranešimus, rekomenduojame tai daryti, kaip paaiškinta žemiau.

Atkreipkite dėmesį, kad syslog formatas yra ribotas iki 1024 simbolių.

GELF reiškia "Graylog Extended Log Format". Šis formatas buvo sukurtas Graylog ir tapo plačiai priimtas daugelyje produktų, įsitvirtinęs kaip standartas.

GELF formatas yra galingas, nes jis siunčia žurnalus struktūrizuotu būdu. Struktūrizuotas žurnalavimas leidžia perduoti kelis laukus ir reikšmes, o ne vieną nestruktūrizuotą teksto pranešimą. Tai palengvina Graylog analizuoti ir gauti informaciją.

Pavyzdžiui, jei norite siųsti žurnalą, kuriame yra IP adresas ir užklausos tipas, galite siųsti pranešimą su dviem laukais, pavadintais ip ir request_type. Graylog pusėje galėsite tiesiogiai ieškoti šiuose laukuose, pavyzdžiui, ieškoti visų užklausų su užklausa: request_type: POST.

GELF yra pagrįstas JSON ir turi apimti bent version, host ir short_message laukus. Tada galite pridėti papildomų laukų, kurie turi būti priešais pabraukimą (_).

Pavyzdžiui, paprastas pranešimas su papildomu lauku, pavadintu device_id, atrodo taip:

{
  "version": "1.1",
  "host": "myIotDevice",
  "short_message": "Something is happening",
  "_device_id": "abcd"
}

Tada galite ieškoti visų pranešimų iš įrenginio "abcd" Graylog naudodami užklausą: device_id: abcd.

Daugiau informacijos apie GELF galite rasti oficialioje specifikacijoje čia: https://docs.graylog.org/en/4.0/pages/gelf.html.

Jei norite siųsti žurnalus iš serverių ar programų, galite naudoti vieną iš daugelio prieinamų bibliotekų, kurios automatiškai kuria ir siunčia jūsų pranešimus. Pavyzdžiai yra prieinami Node.js, .NET ir Python.

Kai pasirinkote tinkamą formatą (tikimės, kad pasirinkote GELF!), turite pasirinkti komunikacijos protokolą tarp TCP ir UDP.

UDP protokolas yra gana paprastas. Jūsų programa siunčia pranešimą serveriui nereikalaudama gavimo patvirtinimo. Nėra dialogo tarp kliento ir serverio, tai reiškia, kad serveris nepatvirtina, kad gavo pranešimą.

Šio požiūrio privalumas yra tas, kad jei jūsų Graylog serveris yra lėtas arba neveikia, tai neturės įtakos jūsų programos veikimui. Trūkumas yra tas, kad negalite būti tikri, kad kiekvienas iš jūsų programos išsiųstas žurnalas pasieks serverį. Be to, šifravimas nėra prieinamas su UDP.

  1. Neturi įtakos jūsų programai, jei Graylog yra lėtas arba neveikia.
  1. Kai kurie pranešimai gali būti prarasti.
  2. Šifravimas nėra prieinamas.
  3. Pranešimo dydis ribotas iki 8192 baitų.

TCP protokolas, priešingai nei UDP, keičiasi informacija tarp jūsų programos ir Graylog. Tai reiškia, kad gaunate patvirtinimą, kad pranešimas buvo gautas Graylog.

TCP privalumas yra tas, kad galite iš naujo siųsti pranešimą, jei jis nebuvo gautas Graylog (pavyzdžiui, kai serveris neveikia). Trūkumas yra tas, kad jei Graylog yra lėtas arba nereaguoja, jūsų programa turi laukti atsakymo arba laiko limito, kas gali ją sulėtinti.

Kitas privalumas yra tas, kad galite šifruoti savo komunikacijas su TLS (taip pat žinomas kaip SSL).

  • Užtikrina, kad pranešimas buvo gautas.
  • Šifravimas yra prieinamas (TLS).
  • Nėra pranešimo dydžio apribojimo
  • Gali sulėtinti siuntėją, jei Graylog lėtai reaguoja arba neveikia.

Tikimės, kad šis vadovas suteikė jums reikiamą informaciją, kad pasirinktumėte geriausią formatą ir protokolą jūsų žurnalams siųsti į Graylog.

Atminkite, kad galite paleisti kelias įvestis vienu metu, naudodami skirtingus prievadus kiekvienai. Pavyzdžiui, galite turėti "syslog UDP" įvestį 514 prievade kartu su "GELF TCP" įvestimi 12201 prievade.