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 įvairius įvesties tipus. Šios įvestys leidžia jums siųsti žurnalus (logus) į Graylog serverį arba suteikia galimybę Graylog pačiam surinkti žurnalus iš kito šaltinio.
Beveik visais atvejais norėsite siųsti duomenis iš aplikacijos ar įrenginio į Graylog serverį. Šiame vadove neaptarsime pažangių atvejų, kai Graylog turi surinkti žurnalus iš kitur. Tačiau jei norėtumėte tai padaryti, galite būti ramūs – tai labai paprasta.
Norėdami pasirinkti tinkamiausią įvesties tipą, pirmiausia turite apsispręsti, kokį žurnalų formatą norite siųsti į Graylog. Rekomenduojame naudoti GELF formatą, kaip aprašyta žemiau.
Toliau reikės pasirinkti protokolą: UDP arba TCP.
Įvesties formato pasirinkimas
Pirmas žingsnis – pasirinkti žinučių formatą. Yra trys pagrindinės galimybės: RAW/Plaintext, Syslog arba GELF.
RAW/Plaintext formatas
Tai pats paprasčiausias formatas. Jis veikia su bet kuria sistema, nes siunčia pilną tekstinę žinutę. Naudoti labai paprasta ir puikiai tinka pradiniams testams, pavyzdžiui, siunčiant žinutę su netcat įrankiu.
Norėdami išbandyti, galite sukurti "Raw/Plaintext UDP" įvestį ir tada išsiųsti bandomąjį žurnalą viena iš šių komandų:
- Iš macOS:
echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555 - Iš Linux:
echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555
Labai paprasta, tiesa? Tačiau, kadangi tai bazinis formatas, greitai susidursite su apribojimais. Todėl nerekomenduojame jo naudoti daugiau nei tik paprastiems testams.
Syslog formatas
Tai gerai žinomas formatas, plačiai naudojamas serverių aplinkose žurnalų saugojimui ir perdavimui. Jį rasite Linux, Windows, *BSD ir kitose operacinėse sistemose.
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 žinutes GELF formatu, rekomenduojame rinktis būtent jį, kaip paaiškinta žemiau.
Atkreipkite dėmesį, kad syslog formato žinutės yra ribojamos iki 1024 simbolių.
GELF formatas (rekomenduojama)
GELF reiškia "Graylog Extended Log Format". Šį formatą sukūrė Graylog ir jis tapo plačiai naudojamu standartu daugelyje produktų.
GELF formatas yra galingas, nes leidžia siųsti žurnalus struktūruotu būdu. Struktūrizuotas žurnalavimas leidžia perduoti kelis laukus ir reikšmes, o ne tik vieną neapdorotą tekstinę žinutę. Tai palengvina Graylog žinučių analizę ir informacijos paiešką.
Pavyzdžiui, jei norite siųsti žurnalą, kuriame yra IP adresas ir užklausos tipas, galite siųsti žinutę su dviem laukais: ip ir request_type. Graylog pusėje galėsite ieškoti pagal šiuos laukus, pavyzdžiui, visų POST užklausų su užklausa: request_type: POST.
GELF pagrįstas JSON ir privalo turėti bent jau laukus version, host ir short_message. Papildomus laukus galite pridėti, tačiau jų pavadinimai turi prasidėti pabraukimo simboliu (_).
Pavyzdžiui, paprasta žinutė su papildomu lauku device_id atrodytų taip:
{
"version": "1.1",
"host": "myIotDevice",
"short_message": "Something is happening",
"_device_id": "abcd"
}
Tuomet Graylog galėsite ieškoti visų žinučių iš įrenginio "abcd" su užklausa: device_id: abcd.
Daugiau informacijos apie GELF rasite oficialioje specifikacijoje: https://docs.graylog.org/en/4.0/pages/gelf.html.
Jei norite siųsti žurnalus iš serverių ar aplikacijų, galite naudoti vieną iš daugelio bibliotekų, kurios automatiškai sukuria ir išsiunčia jūsų žinutes. Pavyzdžių rasite Node.js, .NET ir Python.
Tinkamo protokolo pasirinkimas
Kai pasirinksite tinkamą formatą (tikimės, kad pasirinkote GELF!), turėsite pasirinkti komunikacijos protokolą tarp TCP ir UDP.
UDP protokolas
UDP protokolas yra labai paprastas. Jūsų aplikacija siunčia žinutę į serverį nereikalaudama patvirtinimo apie gavimą. Nėra jokio dialogo tarp kliento ir serverio, t. y. serveris nepatvirtina, kad gavo žinutę.
Šio metodo privalumas – jei jūsų Graylog serveris lėtas ar nepasiekiamas, tai neturės įtakos jūsų aplikacijos veikimui. Trūkumas – negalite būti tikri, kad kiekviena jūsų aplikacijos išsiųsta žinutė pasieks serverį. Be to, UDP protokole nėra galimybės užšifruoti duomenų.
Privalumai
- Neturi įtakos aplikacijai, jei Graylog lėtas ar nepasiekiamas.
Trūkumai
- Kai kurios žinutės gali būti prarastos.
- Nėra šifravimo galimybės.
- Žinutės dydis ribojamas iki 8192 baitų.
TCP protokolas
TCP protokolas, priešingai nei UDP, leidžia keistis informacija tarp jūsų aplikacijos ir Graylog. Tai reiškia, kad gaunate patvirtinimą, jog žinutė buvo gauta Graylog.
TCP privalumas – galite persiųsti žinutę, jei ji nebuvo gauta Graylog (pavyzdžiui, kai serveris nepasiekiamas). Trūkumas – jei Graylog lėtas ar nereaguoja, jūsų aplikacija turi laukti atsakymo arba timeout, kas gali ją sulėtinti.
Kitas privalumas – galite užšifruoti komunikaciją naudodami TLS (dar vadinamą SSL).
Privalumai
- Užtikrina, kad žinutė buvo gauta.
- Galimas šifravimas (TLS).
- Nėra žinutės dydžio apribojimo
Trūkumai
- Gali sulėtinti siuntėją, jei Graylog lėtai reaguoja arba yra nepasiekiamas.
Išvada
Tikimės, kad šis vadovas suteikė jums visą reikiamą informaciją, kad galėtumėte pasirinkti geriausią formatą ir protokolą žurnalų siuntimui į Graylog.
Nepamirškite, galite naudoti kelias įvestis vienu metu, kiekvienai priskirdami skirtingus prievadus. Pavyzdžiui, galite turėti "syslog UDP" įvestį 514 prievade ir "GELF TCP" įvestį 12201 prievade.