Ábendingar og brellur til að umbreyta óskipulögðum gögnum úr annálum í ELK Stack með GROK í LogStash

Skipulag ómótaðra gagna með GROK

Ef þú ert að nota Elastic (ELK) stafla og hefur áhuga á að kortleggja sérsniðna Logstash annála við Elasticsearch, þá er þessi færsla fyrir þig.

Ábendingar og brellur til að umbreyta óskipulögðum gögnum úr annálum í ELK Stack með GROK í LogStash

ELK staflan er skammstöfun fyrir þrjú opinn uppspretta verkefni: Elasticsearch, Logstash og Kibana. Saman mynda þeir annálastjórnunarvettvang.

  • Elasticsearch er leitar- og greiningarkerfi.
  • Logstash er gagnavinnsluleiðsla á netþjóni sem tekur inn gögn frá mörgum aðilum samtímis, umbreytir þeim og sendir þau síðan í „geymsla“ eins og Elasticsearch.
  • kibana gerir notendum kleift að sjá gögn með því að nota töflur og línurit í Elasticsearch.

Beats kom síðar og er léttur gagnaflutningsaðili. Kynningin á Beats breytti Elk Stack í Elastic Stack, en það er ekki málið.

Þessi grein er um Grok, sem er eiginleiki í Logstash sem getur umbreytt annálunum þínum áður en þeir eru sendir í geymsluna. Í okkar tilgangi mun ég aðeins tala um vinnslu gagna frá Logstash í Elasticsearch.

Ábendingar og brellur til að umbreyta óskipulögðum gögnum úr annálum í ELK Stack með GROK í LogStash

Grok er sía inni í Logstash sem er notuð til að flokka óskipulögð gögn í eitthvað skipulagt og fyrirspurnarhæft. Það situr ofan á reglulegri tjáningu (regex) og notar textamynstur til að passa við strengi í annálaskrám.

Eins og við munum sjá í eftirfarandi köflum skiptir notkun Grok miklu máli þegar kemur að skilvirkri annálastjórnun.

Án Grok eru loggögnin þín ómótuð

Ábendingar og brellur til að umbreyta óskipulögðum gögnum úr annálum í ELK Stack með GROK í LogStash

Án Grok, þegar annálar eru sendar frá Logstash til Elasticsearch og birtar í Kibana, birtast þær aðeins í skilaboðagildinu.

Það er erfitt að leita eftir mikilvægum upplýsingum í þessum aðstæðum vegna þess að öll annálagögn eru geymd á einum lykli. Það væri betra ef logskilaboðin væru betur skipulögð.

Óskipulögð gögn úr annálum

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

Ef þú skoðar hrá gögnin vel, muntu sjá að þau samanstanda í raun af mismunandi hlutum, hver aðskilinn með bili.

Fyrir reyndari forritara geturðu líklega giskað á hvað hver hluti þýðir og hver þessi annálsskilaboð eru frá API símtalinu. Kynning hvers atriðis er lýst hér að neðan.

Skipulögð sýn á gögnin okkar

  • localhost == umhverfi
  • GET == aðferð
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • 400 == svar_staða
  • 46 ms == viðbragðstími
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id

Eins og við sjáum í skipulögðum gögnum er röð fyrir óskipulagða annála. Næsta skref er hugbúnaðarvinnsla á hrágögnum. Þetta er þar sem Grókur skín.

Grok sniðmát

Innbyggt Grok sniðmát

Logstash kemur með yfir 100 innbyggð sniðmát til að skipuleggja óskipulögð gögn. Þú ættir örugglega að nýta þér þetta þegar mögulegt er fyrir almenna syslog eins og apache, linux, haproxy, aws og svo framvegis.

Hins vegar, hvað gerist þegar þú ert með sérsniðna annála eins og í dæminu hér að ofan? Þú verður að búa til þitt eigið Grok sniðmát.

Sérsniðin Grok sniðmát

Þú verður að reyna að búa til þitt eigið Grok sniðmát. ég notaði Grok aflúsara и Grok mynstur.

Athugaðu að setningafræði Grok sniðmáts er sem hér segir: %{SYNTAX:SEMANTIC}

Það fyrsta sem ég reyndi að gera var að fara á flipann Discover í Grok kembiforritinu. Ég hélt að það væri flott ef þetta tól gæti sjálfkrafa búið til Grok mynstur, en það var ekki of gagnlegt þar sem það fann aðeins tvær samsvörun.

Ábendingar og brellur til að umbreyta óskipulögðum gögnum úr annálum í ELK Stack með GROK í LogStash

Með því að nota þessa uppgötvun byrjaði ég að búa til mitt eigið sniðmát í Grok kembiforritinu með því að nota setningafræðina sem er að finna á Elastic Github síðunni.

Ábendingar og brellur til að umbreyta óskipulögðum gögnum úr annálum í ELK Stack með GROK í LogStash

Eftir að hafa leikið mér með mismunandi setningafræði gat ég loksins skipulagt annálagögnin eins og ég vildi.

Ábendingar og brellur til að umbreyta óskipulögðum gögnum úr annálum í ELK Stack með GROK í LogStash

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

Upprunalegur texti:

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

Mynstur:

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

Hvað gerðist á endanum

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

Með Grok sniðmátið og kortlögð gögn í höndunum er síðasta skrefið að bæta því við Logstash.

Að uppfæra Logstash.conf stillingarskrána

Á þjóninum þar sem þú settir upp ELK stafla, farðu í Logstash stillingar:

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

Límdu breytingarnar.

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

Eftir að þú hefur vistað breytingar þínar skaltu endurræsa Logstash og athuga stöðu þess til að ganga úr skugga um að það sé enn að virka.

sudo service logstash restart
sudo service logstash status

Að lokum, til að tryggja að breytingarnar hafi tekið gildi, Vertu viss um að uppfæra Elasticsearch vísitöluna þína fyrir Logstash í Kibana!

Ábendingar og brellur til að umbreyta óskipulögðum gögnum úr annálum í ELK Stack með GROK í LogStash

Með Grok eru loggögnin þín uppbyggð!

Ábendingar og brellur til að umbreyta óskipulögðum gögnum úr annálum í ELK Stack með GROK í LogStash

Eins og við sjáum á myndinni hér að ofan, er Grok fær um að passa sjálfkrafa annálagögn við Elasticsearch. Þetta gerir það auðveldara að hafa umsjón með annálum og leita fljótt eftir upplýsingum. Í stað þess að grafa í gegnum annálaskrár til að kemba geturðu einfaldlega síað eftir því sem þú ert að leita að, svo sem umhverfi eða slóð.

Prófaðu Grok tjáningu! Ef þú hefur aðra leið til að gera þetta eða átt í vandræðum með dæmin hér að ofan, skrifaðu bara athugasemd hér að neðan til að láta mig vita.

Takk fyrir að lesa - og vinsamlegast fylgdu mér hér á Medium fyrir áhugaverðari greinar um hugbúnaðarverkfræði!

Resources

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 Upprunatengill

Telegram rás eftir Elasticsearch

Heimild: www.habr.com

Bæta við athugasemd