NÀpunÀited ja soovitused struktureerimata andmete teisendamiseks logidest ELK Stackis, kasutades GROK-i LogStashis.

Struktureerimata andmete struktuurimine GROK abil

Kui kasutate Elastic (ELK) steiki ja olete huvitatud Logstashi kasutajate logide vastavusest Elasticsearchi, on see postitus teie jaoks.

NÀpunÀited ja soovitused struktureerimata andmete teisendamiseks logidest ELK Stackis, kasutades GROK-i LogStashis.

ELK steik on kolm avatud lÀhtekoodiga projekti: Elasticsearch, Logstash ja Kibana. Koos loovad nad logihalduse platvormi.

  • Elasticsearch – see on otsing ja analĂŒĂŒsisĂŒsteem.
  • Logstash – see on andmete töötlemise serverikontsesioon, mis vĂ”tab andmeid mitmest allikast korraga vastu, muudab need ja saadab seejĂ€rel “majakasse”, nĂ€iteks Elasticsearchi.
  • Kibana Kibana vĂ”imaldab kasutajatel visualiseerida andmeid diagrammide ja graafikute abil Elasticsearchis.

Beats ilmus hiljem ja on kerge andmeedastaja. Beatsi tutvustamine muutis ELK steigi Elastic steigiks, kuid see pole peamine.

See artikkel keskendub Grokile, mis on Logstashi funktsioon, mis suudab teie logisid muuta, enne kui need maimasse saadetakse. Meie eesmÀrkide jaoks rÀÀgin ma ainult Logstashi andmete töötlemisest Elasticsearchis.

NÀpunÀited ja soovitused struktureerimata andmete teisendamiseks logidest ELK Stackis, kasutades GROK-i LogStashis.

Grok on Logstashi sisalduv filtr, mida kasutatakse struktuurimata andmete töötlemiseks struktuureeritud ja pÀringutele vastavaks formaatideks. See asub regulaarsete vÀljende (regex) peal ja kasutab tekstimalle logifailide ridade sidumiseks.

Nagu me nĂ€eme jĂ€rgmistes jaotistes, on Groki kasutamine ĂŒlioluline, kui rÀÀkida logihalduse tĂ”hususest.

Ilma Grokita on teie logiandmed struktuurimata.

NÀpunÀited ja soovitused struktureerimata andmete teisendamiseks logidest ELK Stackis, kasutades GROK-i LogStashis.

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

Olulise teabe pĂ€rimine selgelt on keeruline, kuna kĂ”ik logiandmed on salvestatud ĂŒhes vĂ”tmes. Oleks parem, kui logisĂ”numid oleksid paremini korraldatud.

Struktuurimata andmed logidest

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

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

Kogen arendajad saavad ilmselt aru, mida iga osa tÀhendab ja et see logisÔnum pÀrineb API-kutsest. Allpool on toodud iga punkti seletus.

Meie andmete struktureeritud vaade

  • localhost == keskkond
  • GET == meetod
  • /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • 400 == response_status
  • 46ms == response_time
  • 5bc6e716b5d6cb35fc9687c0 == user_id

Nagu nÀeme struktureeritud andmetes, on seal jÀrjekord mittestruktureeritud logide jaoks. JÀrgmine samm on toorandmete programmeeritud töötlemine. Just siin sÀrab Grok.

Grok'i mallid

Sisseehitatud Grok'i mallid

Logstash on varustatud enam kui 100 sisseehitatud malliga mittestruktureeritud andmete struktureerimiseks. Te peaksite kindlasti seda vĂ”imalust Ă€ra kasutama, kui vĂ”imalik, ĂŒldiste sĂŒsteemilogide jaoks, nagu apache, linux, haproxy, aws jne.

Aga mis juhtub, kui teil on kohandatud logid, nagu ĂŒlaltoodud nĂ€ites? Peate oma Grok'i malli looma.

Kohandatud Grok'i mallid

Proovige oma Grok'i malli loomiseks. Olen kasutanud Grok Debugger ja Grok'i mustrid.

Pange tĂ€hele, et Grok mallide sĂŒntaks nĂ€eb vĂ€lja jĂ€rgmine: %{SYNTAX:SEMANTIC}

Esimene asi, mida proovisin teha, oli minna vahelehele Discover Grok siluri. MÔtlesin, et oleks tore, kui see tööriist suudaks automaatselt genereerida Grok malli, kuid see ei olnud eriti kasulik, kuna see leidis ainult kaks vastet.

NÀpunÀited ja soovitused struktureerimata andmete teisendamiseks logidest ELK Stackis, kasutades GROK-i LogStashis.

Kasutasin seda avastust, et alustada omaenda malli loomist Grok siluris, kasutades sĂŒntaksit, mille leidsin Github Elastic lehelt.

NÀpunÀited ja soovitused struktureerimata andmete teisendamiseks logidest ELK Stackis, kasutades GROK-i LogStashis.

MĂ€ngides erinevate sĂŒntaksitega, suutsin lĂ”puks struktureerida logi andmed nii, nagu soovis.

NÀpunÀited ja soovitused struktureerimata andmete teisendamiseks logidest ELK Stackis, kasutades GROK-i LogStashis.

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

Algne tekst:

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

Muster:

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

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

KĂ€esoleva Grok malli ja vastandatud andmetega on viimane samm lisada see Logstashi.

Logstash.conf konfiguratsioonifaili uuendamine

Serveril, kuhu olete paigaldanud ELK stacki, minge Logstashi konfiguratsiooni:

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

Kasutage muudatusi.

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 Elasticsearchi indeksit Logstashi jaoks Kibanas!

NÀpunÀited ja soovitused struktureerimata andmete teisendamiseks logidest ELK Stackis, kasutades GROK-i LogStashis.

Grokiga on teie logid struktuursed!

NÀpunÀited ja soovitused struktureerimata andmete teisendamiseks logidest ELK Stackis, kasutades GROK-i LogStashis.

Nagu nĂ€eme ĂŒlaltoodud pildilt, suudab Grok automaatselt sobitada logiandmeid Elasticsearchiga. See lihtsustab logide haldamist ja kiiret teabe pĂ€rimist. Selle asemel, et kaevuda logifailidesse tĂ”rkeotsingul, saate lihtsalt filtreerida selle, mida otsite, nagu keskkond vĂ”i url.

Proovige Grok expressions 'i! Kui teil on mĂ”ni muu viis, kuidas seda teha, vĂ”i kui teil on kĂŒsimusi eelnevate nĂ€idete osas, kirjutage lihtsalt allpool kommentaar, et mulle teada anda.

AitĂ€h lugemast — ja palun jĂ€lgige mind siin, Mediumis, et saada rohkem huvitavaid artikleid tarkvarainseneri teemal!

Ressursid

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 Elasticsearch

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster