Këshilla dhe rekomandime për transformimin e të dhënave të pa strukturuara nga logët në ELK Stack duke përdorur GROK në LogStash.

Strukturimi i të dhënave të pa strukturuara me GROK

Nëse përdorni stekën Elastic (ELK) dhe jeni të interesuar për mapimin e regjistrimeve të përdoruesve nga Logstash në Elasticsearch, atëherë ky postim është për ju.

Këshilla dhe rekomandime për transformimin e të dhënave të pa strukturuara nga logët në ELK Stack duke përdorur GROK në LogStash.

Steka ELK është një akronim për tre projekte me kod të hapur: Elasticsearch, Logstash dhe Kibana. Së bashku, ata formojnë një platformë për menaxhimin e regjistrimeve.

  • Elasticsearch – Ă«shtĂ« njĂ« sistem kĂ«rkimi dhe analize.
  • Logstash – Ă«shtĂ« njĂ« konveyer serveri pĂ«r pĂ«rpunimin e tĂ« dhĂ«nave, qĂ« merr tĂ« dhĂ«na nga burime tĂ« shumta njĂ«kohĂ«sisht, i transformon dhe pastaj i dĂ«rgon nĂ« njĂ« “depozitĂ«â€, siç Ă«shtĂ« Elasticsearch.
  • Kibana lejon pĂ«rdoruesit tĂ« vizualizojnĂ« tĂ« dhĂ«nat nĂ«pĂ«rmjet diagrameve dhe grafikĂ«ve nĂ« Elasticsearch.

Beats u shfaq më vonë dhe është një dërgues i lehtë të dhënash. Hyrja e Beats transformoi Elk Stack në Elastic Stack, por kjo nuk është kryesore.

Ky artikull është kushtuar Grok, e cila është një funksion në Logstash që mund të transformojë regjistrimet tuaja para se ato të dërgohen në depo. Për qëllimet tona, do 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ë pa strukturuara nga logët në ELK Stack duke përdorur GROK në LogStash.

Grok është një filtr në Logstash, i cili përdoret për të analizuar të dhënat e paestructuruara në diçka të strukturuar dhe për kërkimin. Ai qëndron sipër shprehjeve të rregullta (regex) dhe përdor modele teksti për të përputhur vargjet në skedarët e regjistrit.

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

Pa Grok, të dhënat tuaja të regjistrave janë të paestructuruara.

Këshilla dhe rekomandime për transformimin e të dhënave të pa strukturuara nga logët në ELK Stack duke përdorur GROK në LogStash.

Pa Grok, kur regjistrat dërgohen nga Logstash në Elasticsearch dhe visualizohen në Kibana, ato shfaqen vetëm në vlerën e mesazhit.

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

Të dhëna të paestructuruara nga regjistrat

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

Nëse e shqyrtoni 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ë me përvojë, ndoshta mund të kuptoni se çfarë do të thotë secili nga pjesët dhe se kjo është një mesazh log-u nga një thirrje API. Paraqitja e secilit element është e shpjeguar më poshtë.

Pamja e strukturuar e të dhënave tona

  • ​ localhost == ambient
  • ​ GET == metodĂ«
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • ​ 400 == statusi i pĂ«rgjigjes
  • ​ 46ms == koha e pĂ«rgjigjes
  • ​ 5bc6e716b5d6cb35fc9687c0 == id e pĂ«rdoruesit

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

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. Definitivisht duhet ta shfrytëzoni këtë avantazh kur të jetë e mundur për log-e të zakonshme sistemore, si apache, linux, haproxy, aws dhe kështu me radhë.

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

Shabllonat Grok të personalizuara

Duhet të provoni për të ndërtuar shabllonin tuaj Grok. Unë përdora Debugger Grok dhe Shabllonat Grok.

Vini re se sintaksa e ŃˆĐ°Đ±Đ»ĐŸĐœĂ«ve Grok ka kĂ«tĂ« pamje: %{SYNTAX:SEMANTIC}

GjĂ«ja e parĂ« qĂ« provova ishte tĂ« kaloja nĂ« skedĂ«n Discover nĂ« debuggerin Grok. Mendova se do tĂ« ishte e shkĂ«lqyer nĂ«se ky mjet mund tĂ« gjeneronte automatikisht njĂ« ŃˆĐ°Đ±Đ»ĐŸĐœ 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ë pa strukturuara nga logët në ELK Stack duke përdorur GROK në LogStash.

Duke pĂ«rdorur kĂ«tĂ« zbulim, fillova tĂ« krijoja ŃˆĐ°Đ±Đ»ĐŸĐœin tim nĂ« debuggerin Grok, duke pĂ«rdorur sintaksĂ«n qĂ« gjeta nĂ« faqen Github Elastic.

Këshilla dhe rekomandime për transformimin e të dhënave të pa strukturuara nga logët në ELK Stack duke përdorur GROK në LogStash.

Pas disa eksperimentesh me sintaksat e ndryshme, më në fund arrita të strukturoja të dhënat e logut ashtu siç doja.

Këshilla dhe rekomandime për transformimin e të dhënave të pa strukturuara nga logët në ELK Stack duke përdorur GROK në LogStash.

Linku për debuggerin Grok https://grokdebug.herokuapp.com/

Teksti origjinal:

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

Pattern:

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

Pas përfundimit

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

Me ŃˆĐ°Đ±Đ»ĐŸĐœin Grok dhe tĂ« dhĂ«nat e pĂ«rputhura, hapi i fundit Ă«shtĂ« ta shtoj atĂ« nĂ« Logstash.

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

NĂ« serverin ku keni instaluar stakun 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" ]
  }
}

Pas ruajtjes së ndryshimeve, rindizni Logstash dhe kontrolloni statusin e tij për të siguruar që ai vazhdon të funksionojë.

sudo service logstash restart
sudo service logstash status

Më në fund, për të siguruar që ndryshimet kanë hyrë në fuqi, sigurohuni të rifreskoni indeksin Elasticsearch për Logstash në Kibana!

Këshilla dhe rekomandime për transformimin e të dhënave të pa strukturuara nga logët në ELK Stack duke përdorur GROK në LogStash.

Me Grok, të dhënat tuaja nga log-e janë strukturuar!

Këshilla dhe rekomandime për transformimin e të dhënave të pa strukturuara nga logët në ELK Stack duke përdorur GROK në LogStash.

Siç e shohim, në imazhin më sipër, Grok është në gjendje të përputhë automatikisht të dhënat e log-ut me Elasticsearch. Kjo lehtëson menaxhimin e log-eve dhe kërkimin e informacionit të shpejtë. Në vend që të kërkoni në skedarët e logëve për debuggim, thjesht mund të filtroni atë që kërkoni, siç është mjedisi apo URL-ja.

Provoni të jepni Grok expressions një shans! Nëse keni një mënyrë tjetër për ta bërë këtë ose keni ndonjë problem me shembujt më sipër, thjesht lëreni një koment më poshtë për të më njoftuar.

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

Burimet

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 Lidhja me burimin

Kanali Telegram për Elasticsearch

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster