NĂ”uanded ja soovitused struktureerimata andmete ĂŒmberkujundamiseks logidest ELK Stackis, kasutades GROK-i LogStashis

Ebareegiline andmete struktuurimine GROK abil

Kui kasutate Elastic (ELK) steki ja olete huvitatud Logstashi kasutajalogide sobitamisest Elasticsearchiga, siis on see postitus just teile.

NĂ”uanded ja soovitused struktureerimata andmete ĂŒmberkujundamiseks logidest ELK Stackis, kasutades GROK-i LogStashis

ELK stek on lĂŒhend kolmest avatud lĂ€htekoodiga projektist: Elasticsearch, Logstash ja Kibana. Koos moodustavad nad logihalduse platvormi.

  • Elasticsearch – on otsingu- ja analĂŒĂŒsisĂŒsteem.
  • Logstash – on serveripoolne andmeprotsessimise konveier, mis vĂ”tab andmed mitmest allikast korraga, muudab need ja saadab seejĂ€rel “salve”, nĂ€iteks Elasticsearchisse.
  • Kibana vĂ”imaldab kasutajatel visualiseerida andmeid diagrammide ja graafikute abil Elasticsearchis.

Beats ilmus hiljem ja on kerge andmete edastaja. Beatsi tutvustamine muutis Elk Stacki Elastic Stackiks, kuid see ei ole peamine.

See artikkel on pĂŒhendatud Grokile, mis on Logstashi funktsioon, mis suudab teie logisid muuta enne, kui need saadetakse salve. Meie eesmĂ€rkide jaoks rÀÀgin ainult Logstashi andmete töötlemisest Elasticsearchisse.

NĂ”uanded ja soovitused struktureerimata andmete ĂŒmberkujundamiseks logidest ELK Stackis, kasutades GROK-i LogStashis

Grok on Logstashi sees asuv filter, mida kasutatakse ebareeglipĂ€raste andmete analĂŒĂŒsimiseks struktuuri ja pĂ€ringute jaoks sobivaks. See pĂ”hineb regulaarsetel vĂ€ljenditel (regex) ning kasutab tekstimalle logifailide ridade sobitamiseks.

Kuidas me nÀeme jÀrgmistes osades, on Groki kasutamine ÀÀrmiselt oluline tÔhusa logihalduse jaoks.

Ilma Grokita on teie logiandmed struktuuri puuduvad.

NĂ”uanded ja soovitused struktureerimata andmete ĂŒmberkujundamiseks logidest ELK Stackis, kasutades GROK-i LogStashis

Ilma Grokita, kui logid saadetakse Logstashist Elasticsearchisse ja visualiseeritakse Kibanas, ilmuvad nad ainult sÔnumi vÀÀrtuses.

Olulise teabe pĂ€rimine sellises olukorras on keeruline, kuna kĂ”ik logiandmed on salvestatud ĂŒhte vĂ”tmesse. Oleks parem, kui logisĂ”numid oleksid paremini struktureeritud.

EbareeglipÀrased andmed logidelt

localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0

Kui vaatate toorandmeid tĂ€helepanelikult, nĂ€ete, et need koosnevad tegelikult erinevatest osadest, millest igaĂŒks on eraldatud tĂŒhikuga.

Kogenud arendajatele, tÔenÀoliselt suudate Àra arvata, mida iga osa tÀhendab ja et see on logisÔnum API kutse kohta. Iga elemendi esitlus on allpool.

Meie andmete struktureeritud vorm

  • ​ localhost == keskkond
  • ​ GET == meetod
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • ​ 400 == vastuse_staatus
  • ​ 46ms == vastuse_aeg
  • ​ 5bc6e716b5d6cb35fc9687c0 == kasutaja_id

Kuna me nÀeme struktureeritud andmetes, eksisteerib ebastruktureeritud logide jaoks mingi kord. JÀrgmine samm on toore andmete programmiline töötlemine. Just siin paistab Grok silma.

Grok mallid

Logstash tarnib enam kui 100 sisse ehitatud malliga, et struktureerida ebastruktureeritud andmeid. Te peaksite kindlasti seda vĂ”imalust Ă€ra kasutama, kui vĂ”imalik, tavaliste sĂŒsteemi logide nagu apache, linux, haproxy, aws jne jaoks.

Kuid mis juhtub, kui teil on kohandatud logid, nagu eespool toodud nÀites? Peate koostama oma Grok malli.

Kohandatud Grok mallid

Peate proovima, et koostada oma Grok mall. Mina kasutasin

Grok Debugger Grok mallid ja Pange tĂ€hele, et Grok mallide sĂŒntaks nĂ€eb vĂ€lja jĂ€rgmine:.

%{SYNTAX:SEMANTIC} Esimene asi, mida proovisin teha, oli minna vahekaardile

Avastada Grok Debuggeris. Ma arvasin, et oleks tore, kui see tööriist saaks automaatselt genereerida Grok malli, kuid see ei olnud kuigi kasulik, kuna leidis vaid kaks vastet. Seda avastust kasutades hakkasin koostama oma Grok malli Grok Debuggeris, kasutades sĂŒntaksit, mida leidsin Elastici Githubi lehelt.

NĂ”uanded ja soovitused struktureerimata andmete ĂŒmberkujundamiseks logidest ELK Stackis, kasutades GROK-i LogStashis

MĂ€ngides erinevate sĂŒntaksitega, suutsin lĂ”puks struktureerida logiandmed nii, nagu ma tahtsin.

NĂ”uanded ja soovitused struktureerimata andmete ĂŒmberkujundamiseks logidest ELK Stackis, kasutades GROK-i LogStashis

Link Grok Debuggerile

NĂ”uanded ja soovitused struktureerimata andmete ĂŒmberkujundamiseks logidest ELK Stackis, kasutades GROK-i LogStashis

Algne tekst: https://grokdebug.herokuapp.com/

Muster:

localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0

%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}

KĂŒsimus, mis lĂ”puks vĂ€lja tuli

{ "environment": [ [ "localhost" ] ], "method": [ [ "GET" ] ], "url": [ [ "\/v2\/applink\/5c2f4bb3e9fda1234edc64d" ] ], "response_status": [ [ "400" ] ], "BASE10NUM": [ [ "400" ] ], "response_time": [ [ "46ms" ] ], "user_id": [ [ "5bc6e716b5d6cb35fc9687c0" ] ] }

Olles Grok malli ja vastetega andmed, on viimane samm lisada see Logstashi.

Logstash.conf konfiguratsioonifaili vÀrskendamine

Serveris, kuhu olete paigaldanud ELK kraani, liikuge Logstashi konfiguratsiooni:

sudo vi /etc/logstash/conf.d/logstash.conf

Pange muudatused sisse.

input { file { path => "\/your_logs\/*.log" } } filter{ grok { match => { "message" => "%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}"} } } output { elasticsearch { hosts => [ "localhost:9200" ] } }

input { 
  file {
    path => "/your_logs/*.log"
  }
}
filter{
  grok {
    match => { "message" => "%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}"}
  }
}
output {
  elasticsearch {
    hosts => [ "localhost:9200" ]
  }
}

PÀrast muudatuste salvestamist taaskÀivitage Logstash ja kontrollige selle olekut, et veenduda, et see töötab endiselt.

sudo service logstash restart
sudo service logstash status

LÔpuks, et veenduda, et muudatused on jÔustunud, uuendage kindlasti Logstashi Elasticsearchi indeksit Kibanas!

NĂ”uanded ja soovitused struktureerimata andmete ĂŒmberkujundamiseks logidest ELK Stackis, kasutades GROK-i LogStashis

Grokiga on teie logide andmed struktureeritud!

NĂ”uanded ja soovitused struktureerimata andmete ĂŒmberkujundamiseks logidest ELK Stackis, kasutades GROK-i LogStashis

Nagu nĂ€eme ĂŒlaltoodud pildil, suudab Grok automaatselt siduda logifailide andmed Elasticsearchiga. See lihtsustab logide haldamist ja teabe kiiret pĂ€rimist. Selle asemel, et logifailides ĂŒles otsida, saate lihtsalt filtreerida, mida otsite, nĂ€iteks keskkonda vĂ”i url-i.

Proovige anda Grok expressions vĂ”imalus! Kui teil on mĂ”ni muu viis selle tegemiseks vĂ”i kui teil tekib ĂŒlaltoodud nĂ€idete osas mingeid probleeme, andke lihtsalt allpool kommentaarides teada.

AitĂ€h lugemise eest — ja palun jĂ€rgige mind siin, Mediumis, et saada rohkem huvitavaid artikleid tarkvaraarhitektuurist!

Resursid

https://www.elastic.co/blog/do-you-grok-grok
https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns
https://grokdebug.herokuapp.com/

P.S Allika link

Telegrami kanal teemal Elasticsearch

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster