Këshilla dhe truket për konvertimin e të dhënave të pastrukturuara nga regjistrat në ELK Stack duke përdorur GROK në LogStash

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

Nëse jeni duke përdorur grupin Elastic (ELK) dhe jeni të interesuar të hartoni regjistrat e personalizuar të Logstash në Elasticsearch, atëherë ky postim është për ju.

Këshilla dhe truket për konvertimin e të dhënave të pastrukturuara nga regjistrat në ELK Stack duke përdorur GROK në LogStash

Stacki ELK është një akronim për tre projekte me burim të hapur: Elasticsearch, Logstash dhe Kibana. Së bashku ata formojnë një platformë të menaxhimit të regjistrave.

  • Elasticsearch është një sistem kërkimi dhe analitik.
  • logstash është një tubacion për përpunimin e të dhënave nga ana e serverit që gëlltit të dhëna nga burime të shumta njëkohësisht, i transformon ato dhe më pas i dërgon në një "stash" siç është Elasticsearch.
  • kibana i lejon përdoruesit të vizualizojnë të dhënat duke përdorur grafikët dhe grafikët në Elasticsearch.

Beats erdhi më vonë dhe është një dërgues i lehtë i të dhënave. Prezantimi i Beats e transformoi rafte Elk në Elastic Stack, por kjo nuk është çështja.

Ky artikull ka të bëjë me Grok, i cili është një veçori në Logstash që mund të transformojë regjistrat tuaj përpara se të dërgohen në ruajtje. Për qëllimet tona, unë do të flas vetëm për përpunimin e të dhënave nga Logstash në Elasticsearch.

Këshilla dhe truket për konvertimin e të dhënave të pastrukturuara nga regjistrat në ELK Stack duke përdorur GROK në LogStash

Grok është një filtër brenda Logstash që përdoret për të analizuar të dhënat e pastrukturuara në diçka të strukturuar dhe të pyetshme. Ai ulet në krye të një shprehjeje të rregullt (regex) dhe përdor modele teksti për të përputhur vargjet në skedarët e regjistrit.

Siç do të shohim në seksionet në vijim, përdorimi i Grok bën një ndryshim të madh kur bëhet fjalë për menaxhimin efikas të regjistrave.

Pa Grok, të dhënat tuaja të regjistrit janë të pastrukturuara

Këshilla dhe truket për konvertimin e të dhënave të pastrukturuara nga regjistrat në ELK Stack duke përdorur GROK në LogStash

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

Kërkimi i informacionit kuptimplotë në këtë situatë është i vështirë sepse të gjitha të dhënat e regjistrit ruhen në një çelës të vetëm. Do të ishte më mirë nëse mesazhet e regjistrit do të organizoheshin më mirë.

Të dhëna të pastrukturuara nga regjistrat

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

Nëse shikoni nga afër të dhënat e papërpunuara, do të shihni se ato në të vërtetë përbëhet nga pjesë të ndryshme, secila e ndarë nga një hapësirë.

Për zhvilluesit më me përvojë, ndoshta mund të merrni me mend se çfarë do të thotë secila nga pjesët dhe çfarë është mesazhi i regjistrit nga thirrja API. Paraqitja e secilit artikull është përshkruar më poshtë.

Pamje e strukturuar e të dhënave tona

  • ​ localhost == mjedis
  • Metoda GET ==
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • ​400 == status_përgjigje
  • ​ 46 ms == koha_përgjigje
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id

Siç e shohim në të dhënat e strukturuara, ekziston një urdhër për regjistrat e pastrukturuar. Hapi tjetër është përpunimi i softuerit të të dhënave të papërpunuara. Këtu shkëlqen Grok.

Shabllonet Grok

Modelet e integruara të Grok

Logstash vjen me mbi 100 shabllone të integruara për strukturimin e të dhënave të pastrukturuara. Ju duhet patjetër të përfitoni nga kjo sa herë që është e mundur për sistemet e përgjithshme si apache, linux, haproxy, aws etj.

Megjithatë, çfarë ndodh kur keni regjistra të personalizuar si në shembullin e mësipërm? Ju duhet të ndërtoni shabllonin tuaj Grok.

Modele të personalizuara të Grok

Ju duhet të përpiqeni të ndërtoni shabllonin tuaj të Grok. une e perdora Grok Debugger и Modelet Grok.

Vini re se sintaksa e shabllonit Grok është si më poshtë: %{SYNTAX:SEMANTIC}

Gjëja e parë që u përpoqa të bëja ishte të shkoja te skeda Zbuloni në korrigjuesin Grok. Mendova se do të ishte mirë nëse ky mjet mund të gjeneronte automatikisht një model Grok, por nuk ishte shumë i dobishëm pasi gjeti vetëm dy ndeshje.

Këshilla dhe truket për konvertimin e të dhënave të pastrukturuara nga regjistrat në ELK Stack duke përdorur GROK në LogStash

Duke përdorur këtë zbulim, fillova të krijoj shabllonin tim në korrigjuesin Grok duke përdorur sintaksën e gjetur në faqen Elastic Github.

Këshilla dhe truket për konvertimin e të dhënave të pastrukturuara nga regjistrat në ELK Stack duke përdorur GROK në LogStash

Pasi luajta me sintaksa të ndryshme, më në fund arrita t'i strukturoja të dhënat e regjistrit ashtu siç doja.

Këshilla dhe truket për konvertimin e të dhënave të pastrukturuara nga regjistrat në ELK Stack duke përdorur GROK në LogStash

Link Debugger Grok https://grokdebug.herokuapp.com/

Teksti origjinal:

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

model:

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

Çfarë ndodhi në fund

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

Me shabllonin Grok dhe të dhënat e hartës në dorë, hapi i fundit është ta shtoni atë në Logstash.

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

Në serverin ku keni instaluar pirgun ELK, shkoni te konfigurimi Logstash:

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

Ngjit 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 tuaja, rinisni Logstash dhe kontrolloni statusin e tij për t'u siguruar që është ende duke punuar.

sudo service logstash restart
sudo service logstash status

Së fundi, për t'u siguruar që ndryshimet kanë hyrë në fuqi, Sigurohuni që të përditësoni indeksin tuaj Elasticsearch për Logstash në Kibana!

Këshilla dhe truket për konvertimin e të dhënave të pastrukturuara nga regjistrat në ELK Stack duke përdorur GROK në LogStash

Me Grok, të dhënat tuaja të regjistrit janë të strukturuara!

Këshilla dhe truket për konvertimin e të dhënave të pastrukturuara nga regjistrat në ELK Stack duke përdorur GROK në LogStash

Siç mund ta shohim në imazhin e mësipërm, Grok është në gjendje të përputhë automatikisht të dhënat e regjistrit me Elasticsearch. Kjo e bën më të lehtë menaxhimin e regjistrave dhe kërkimin e shpejtë të informacionit. Në vend që të gërmoni skedarët e regjistrave për të korrigjuar, thjesht mund të filtroni sipas asaj që po kërkoni, si p.sh. një mjedis ose një url.

Provoni shprehjet e Grokut! Nëse keni një mënyrë tjetër për ta bërë këtë ose keni ndonjë problem me shembujt e mësipërm, thjesht shkruani një koment më poshtë për të më njoftuar.

Faleminderit për leximin - dhe ju lutem më ndiqni këtu në Medium për artikuj më interesantë të inxhinierisë softuerike!

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/

PS Lidhja e burimit

Kanali i telegramit nga Elasticsearch

Burimi: www.habr.com

Shto një koment