Këshilla dhe rekomandime për transformimin e të dhënave të pastruktuara nga log-et në ELK Stack duke përdorur GROK në LogStash

Strukturimi i të dhënave të pastruktuara me GROK

Nëse po përdorni stack-un Elastic (ELK) dhe jeni të interesuar për të lidhur log-et e përdoruesit të Logstash me Elasticsearch, atëherë ky post është për ju.

Këshilla dhe rekomandime për transformimin e të dhënave të pastruktuara nga log-et në ELK Stack duke përdorur GROK në LogStash

Stacku ELK është një akronim për tre projekte me burim të hapur: Elasticsearch, Logstash dhe Kibana. Së bashku, ato formojnë një platformë për menaxhimin e log-eve.

  • Elasticsearch – Ă«shtĂ« njĂ« sistem kĂ«rkimi dhe analize.
  • Logstash – Ă«shtĂ« njĂ« pipeline server pĂ«r pĂ«rpunimin e tĂ« dhĂ«nave, qĂ« merr tĂ« dhĂ«na nga disa burime nĂ« tĂ« njĂ«jtĂ«n kohĂ«, i transformon ato dhe mĂ« pas i dĂ«rgon nĂ« njĂ« "stash", si Elasticsearch.
  • Kibana lejon pĂ«rdoruesit tĂ« vizualizojnĂ« tĂ« dhĂ«nat me ndihmĂ«n e diagrameve dhe grafikĂ«ve nĂ« Elasticsearch.

Beats duke u shfaqur më vonë, është një dërgues të dhënash i lehtë. Hyrja e Beats e transformoi Elk Stack në Elastic Stack, por kjo nuk është thelbësore.

Ky artikull është dedikuar Grok, i cili është një funksion në Logstash që mund të transformojë log-et tuaja përpara se ato të dërgohen në stash. Për qëllimet tona, do të flas vetëm për përpunimin e të dhënave nga Logstash në Elasticsearch.

Këshilla dhe rekomandime për transformimin e të dhënave të pastruktuara nga log-et në ELK Stack duke përdorur GROK në LogStash

Grok është një filtrues brenda Logstash që përdoret për të analizuar të dhënat e pastruktuara në diçka të strukturuar dhe të kërkueshme. Ai ndodhet mbi shprehjet e rregullta (regex) dhe përdor modele teksti për të përputhur vargje në skedarët e log-eve.

Siç do të shohim në seksionet në vazhdim, përdorimi i Grok ka rëndësi të madhe kur bëhet fjalë për menaxhimin efektiv të log-eve.

Pa Grok, të dhënat tuaja të log-ut janë të pastruktuara

Këshilla dhe rekomandime për transformimin e të dhënave të pastruktuara nga log-et në ELK Stack duke përdorur GROK në LogStash

Pa Grok, kur log-et dërgohen nga Logstash në Elasticsearch dhe vizualizohen në Kibana, ato shfaqen vetëm si vlera mesazhi.

Kërkimi i informacionit të rëndësishëm në këtë situatë është i vështirë, pasi të gjitha të dhënat e log-ut ruhen në një çelës. Do të ishte më mirë nëse mesazhet e log-ut ishin organizuar më mirë.

Të dhënat e pastruktuara nga log-et

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

Nëse e vëreni me kujdes të dhënat e papërpunuara, do të shihni se ato në të vërtetë përbëhen nga pjesë të ndryshme, secila e ndarë me hapësirë.

Për zhvilluesit më të përvojë, ndoshta mund ta kuptoni se çfarë do të thotë secila nga pjesët dhe se kjo është një mesazh log nga thirrja e API. Prezentimi i çdo pika është renditur më poshtë.

Pamja e strukturuar e të dhënave tona

  • ​ localhost == ambient
  • ​ GET == metodĂ«
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • ​ 400 == statusi_i_reagimit
  • ​ 46ms == koha_e_reagimit
  • ​ 5bc6e716b5d6cb35fc9687c0 == id_i_pĂ«rdoruesit

Siç e shohim në të dhënat e strukturuara, ekziston një rend për log-et e pa-strukturuara. Hapi tjetër është përpunimi programatik i të dhënave të papërpunuara. Këtu shkëlqen Grok.

Shabllonat Grok

Shabllonat e integruara Grok

Logstash vjen me më shumë se 100 shabllone të integruara për strukturimin e të dhënave të pa-strukturuara. Nëse keni mundësi, duhet të përfitoni nga kjo për log-et e zakonshme të sistemeve, si apache, linux, haproxy, aws etj.

Megjithatë, çfarë ndodh kur keni log-e të personalizuara, si në shembullin e mësipërm? Duhet të ndërtoni shabllonin tuaj të Grok.

Shabllonat e personalizuara të Grok

Nëse dëshironi të provoni për të ndërtuar shabllonin tuaj të Grok. Unë përdora Grok Debugger dhe Shabllonet Grok.

Vini re se sintaksa e shablloneve Grok duket si vijon: %{SYNTAX:SEMANTIC}

E para që përpiqesha të bëja ishte të kaloja te skeda Zbulo në debugger-in e Grok. Mendova se do të ishte e bukur nëse ky mjet mund të gjeneronte automatikisht shabllonin Grok, por kjo nuk ishte shumë e dobishme, pasi ai gjeti vetëm dy përputhje.

Këshilla dhe rekomandime për transformimin e të dhënave të pastruktuara nga log-et në ELK Stack duke përdorur GROK në LogStash

Duke përdorur këtë zbulim, fillova të krijoja shabllonin tim në debugger-in Grok, duke përdorur sintaksën e gjetur në faqen Github Elastic.

Këshilla dhe rekomandime për transformimin e të dhënave të pastruktuara nga log-et në ELK Stack duke përdorur GROK në LogStash

Pas lojës me sintaksat e ndryshme, përfundimisht arrita të strukturizoj të dhënat e log-ut ashtu siç doja.

Këshilla dhe rekomandime për transformimin e të dhënave të pastruktuara nga log-et në ELK Stack duke përdorur GROK në LogStash

Linku në debugger-in Grok https://grokdebug.herokuapp.com/

Teksti origjinal:

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

Shabllon:

%{WORD:ambient} %{WORD:metodë} %{URIPATH:url} %{NUMBER:statusi_i_reagimit} %{WORD:koha_e_reagimit} %{USERNAME:id_i_përdoruesit}

Kjo që rezultoi në fund

{
  "ambient": [
    [
      "localhost"
    ]
  ],
  "metodë": [
    [
      "GET"
    ]
  ],
  "url": [
    [
      "\/v2\/applink\/5c2f4bb3e9fda1234edc64d"
    ]
  ],
  "statusi_i_reagimit": [
    [
      "400"
    ]
  ],
  "NUMBASE10": [
    [
      "400"
    ]
  ],
  "koha_e_reagimit": [
    [
      "46ms"
    ]
  ],
  "id_i_përdoruesit": [
    [
      "5bc6e716b5d6cb35fc9687c0"
    ]
  ]
}

Duke pasur në duar shabllonin Grok dhe të dhënat e përputhura, hapi i fundit është ta shtoni atë në Logstash.

Përditësimi i skedarit të konfigurimit Logstash.conf

Në serverin ku keni instaluar paketën ELK, shkoni te konfigurimi i Logstash:

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

Shtoni ndryshimet.

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" ]
  }
}

Pasi të ruani ndryshimet, rindez Logstash dhe kontrolloni gjendjen e tij për t'u siguruar që ai ende funksionon.

sudo service logstash restart
sudo service logstash status

Në fund, për t'u siguruar që ndryshimet kanë hyrë në fuqi, sigurohuni të përditësoni indeksin Elasticsearch për Logstash në Kibana!

Këshilla dhe rekomandime për transformimin e të dhënave të pastruktuara nga log-et në ELK Stack duke përdorur GROK në LogStash

Me Grok, të dhënat tuaja nga logët janë të strukturuara!

Këshilla dhe rekomandime për transformimin e të dhënave të pastruktuara nga log-et në ELK Stack duke përdorur GROK në LogStash

Siç e shohim në imazhin e mësipërm, Grok është në gjendje të lidhë automatikisht të dhënat e logëve me Elasticsearch. Kjo lehtëson menaxhimin e logëve dhe kërkimin e shpejtë të informacionit. Në vend që të kërkoni në skedarët e logëve për debug, ju mund thjesht të filtroni atë që po kërkoni, siç është ambienti ose url-ja.

Provo t'i japësh mundësi Grok expressions! Nëse ke një mënyrë tjetër për ta bërë këtë ose ke ndonjë problem me shembujt e mësipërm, thjesht lë një koment më poshtë për të më njoftuar për këtë.

Faleminderit pĂ«r leximin — dhe, ju lutem, mĂ« ndiqni kĂ«tu, nĂ« Medium, pĂ«r artikuj mĂ« interesantĂ« rreth inxhinierisĂ« sĂ« softuerit!

Burime

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 Linku në burim

Kanal Telegrami për Elasticsearch

Burimi: habr.com

Bleni hostin e besueshĂ«m pĂ«r faqet me mbrojtje nga DDoS, VPS VDS servera đŸ”„ Bli hostin e besueshĂ«m pĂ«r faqet me mbrojtje nga DDoS, VPS VDS servera | ProHoster