Mga tip ug mga limbong alang sa pag-convert sa wala'y istruktura nga datos gikan sa mga troso ngadto sa ELK Stack gamit ang GROK sa LogStash

Pag-istruktura sa dili istruktura nga datos gamit ang GROK

Kung gigamit nimo ang Elastic (ELK) stack ug interesado sa pagmapa sa naandan nga Logstash logs sa Elasticsearch, nan kini nga post para kanimo.

Mga tip ug mga limbong alang sa pag-convert sa wala'y istruktura nga datos gikan sa mga troso ngadto sa ELK Stack gamit ang GROK sa LogStash

Ang ELK stack usa ka acronym sa tulo ka open source nga mga proyekto: Elasticsearch, Logstash ug Kibana. Mag-uban sila nagporma usa ka plataporma sa pagdumala sa log.

  • Elasticsearch kay usa ka search ug analytical system.
  • Logstash maoy usa ka server-side nga data processing pipeline nga nag-ingest sa datos gikan sa daghang mga tinubdan nga dungan, nagbag-o niini, ug dayon gipadala kini sa usa ka "stash" sama sa Elasticsearch.
  • Kibana nagtugot sa mga tiggamit sa paghanduraw sa datos gamit ang mga tsart ug mga graph sa Elasticsearch.

Mga Beats miabut sa ulahi ug usa ka gaan nga data shipper. Ang pagpaila sa Beats nagbag-o sa Elk Stack ngadto sa Elastic Stack, apan dili kana ang punto.

Kini nga artikulo mahitungod sa Grok, nga usa ka bahin sa Logstash nga makapausab sa imong mga troso sa dili pa kini ipadala ngadto sa stash. Alang sa among katuyoan, maghisgot lang ako bahin sa pagproseso sa datos gikan sa Logstash hangtod sa Elasticsearch.

Mga tip ug mga limbong alang sa pag-convert sa wala'y istruktura nga datos gikan sa mga troso ngadto sa ELK Stack gamit ang GROK sa LogStash

Ang Grok usa ka filter sa sulod sa Logstash nga gigamit sa pag-parse sa wala'y istruktura nga datos ngadto sa usa ka butang nga gambalay ug mapangutana. Naglingkod kini sa ibabaw sa usa ka regular nga ekspresyon (regex) ug naggamit sa mga pattern sa teksto aron ipares ang mga string sa mga file sa log.

Sama sa atong makita sa mosunod nga mga seksyon, ang paggamit sa Grok makahimo og dako nga kalainan kon bahin sa episyente nga pagdumala sa log.

Kung wala ang Grok ang imong data sa log wala ma-istruktura

Mga tip ug mga limbong alang sa pag-convert sa wala'y istruktura nga datos gikan sa mga troso ngadto sa ELK Stack gamit ang GROK sa LogStash

Kung wala ang Grok, kung ang mga troso gipadala gikan sa Logstash hangtod sa Elasticsearch ug gihubad sa Kibana, kini makita ra sa kantidad sa mensahe.

Ang pagpangutana sa makahuluganon nga kasayuran sa kini nga sitwasyon lisud tungod kay ang tanan nga data sa log gitipigan sa usa ka yawe. Mas maayo kung ang mga mensahe sa log mas organisado.

Unstructured data gikan sa logs

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

Kung imong tan-awon pag-ayo ang hilaw nga datos, imong makita nga kini sa tinuud naglangkob sa lainlaing mga bahin, ang matag usa gibulag sa usa ka wanang.

Alang sa mas eksperyensiyado nga mga developer, mahimo nimong tag-an kung unsa ang gipasabut sa matag usa sa mga bahin ug kung unsa ang mensahe sa log gikan sa tawag sa API. Ang presentasyon sa matag aytem gilatid sa ubos.

Structured view sa among data

  • localhost == palibot
  • GET == pamaagi
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • 400 == tubag_status
  • 46ms == oras_pagtubag
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id

Sama sa atong nakita sa structured data, adunay usa ka order alang sa unstructured logs. Ang sunod nga lakang mao ang pagproseso sa software sa hilaw nga datos. Dinhi nagsidlak ang Grok.

Mga Template sa Grok

Gitukod-sa Grok templates

Ang Logstash adunay sobra sa 100 ka mga built-in nga templates alang sa pag-istruktura sa wala'y istruktura nga datos. Kinahanglan gyud nimo nga pahimuslan kini kung mahimo alang sa mga kinatibuk-ang syslog sama sa apache, linux, haproxy, aws ug uban pa.

Bisan pa, unsa ang mahitabo kung ikaw adunay naandan nga mga troso sama sa pananglitan sa ibabaw? Kinahanglan ka magtukod sa imong kaugalingon nga template sa Grok.

Custom nga Grok nga mga template

Kinahanglan nimong sulayan ang paghimo sa imong kaugalingon nga template sa Grok. akong gigamit Grok Debugger ΠΈ Mga Sumbanan sa Grok.

Timan-i nga ang Grok template syntax mao ang mosunod: %{SYNTAX:SEMANTIC}

Ang una nakong gisulayan nga buhaton mao ang pag-adto sa tab Discover sa Grok debugger. Naghunahuna ko nga kini bugnaw kung kini nga himan awtomatiko nga makahimo og usa ka pattern sa Grok, apan dili kini kaayo mapuslanon tungod kay nakit-an ra ang duha nga mga posporo.

Mga tip ug mga limbong alang sa pag-convert sa wala'y istruktura nga datos gikan sa mga troso ngadto sa ELK Stack gamit ang GROK sa LogStash

Gamit kini nga pagkadiskobre, nagsugod ko sa paghimo sa akong kaugalingong template sa Grok debugger gamit ang syntax nga makita sa Elastic Github page.

Mga tip ug mga limbong alang sa pag-convert sa wala'y istruktura nga datos gikan sa mga troso ngadto sa ELK Stack gamit ang GROK sa LogStash

Human sa pagdula-dula uban sa lain-laing mga syntaxes, ako sa katapusan nakahimo sa istruktura sa log data sa paagi sa akong gusto.

Mga tip ug mga limbong alang sa pag-convert sa wala'y istruktura nga datos gikan sa mga troso ngadto sa ELK Stack gamit ang GROK sa LogStash

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

Orihinal nga teksto:

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

Sumbanan:

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

Unsay nahitabo sa katapusan

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

Uban sa Grok template ug mapa nga datos sa kamot, ang katapusang lakang mao ang pagdugang niini sa Logstash.

Pag-update sa Logstash.conf configuration file

Sa server diin imong gi-install ang ELK stack, adto sa Logstash configuration:

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

Idikit ang mga pagbag-o.

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

Human ma-save ang imong mga pagbag-o, i-restart ang Logstash ug susiha ang kahimtang niini aron masiguro nga kini nagtrabaho gihapon.

sudo service logstash restart
sudo service logstash status

Sa katapusan, aron masiguro nga ang mga pagbag-o miepekto, Siguruha nga i-update ang imong Elasticsearch index para sa Logstash sa Kibana!

Mga tip ug mga limbong alang sa pag-convert sa wala'y istruktura nga datos gikan sa mga troso ngadto sa ELK Stack gamit ang GROK sa LogStash

Uban sa Grok, ang imong data sa log gihan-ay!

Mga tip ug mga limbong alang sa pag-convert sa wala'y istruktura nga datos gikan sa mga troso ngadto sa ELK Stack gamit ang GROK sa LogStash

Sama sa atong makita sa hulagway sa ibabaw, ang Grok makahimo sa awtomatikong pagpares sa data sa log sa Elasticsearch. Gipasayon ​​niini ang pagdumala sa mga troso ug dali nga pagpangutana sa impormasyon. Imbis nga magkubkob sa mga file sa log aron ma-debug, mahimo ka lang magsala pinaagi sa kung unsa ang imong gipangita, sama sa usa ka palibot o usa ka url.

Sulayi ang mga ekspresyon sa Grok! Kung naa kay laing paagi sa pagbuhat niini o adunay mga problema sa mga pananglitan sa ibabaw, pagsulat lang og komento sa ubos aron ipahibalo kanako.

Salamat sa pagbasaβ€”ug palihug sunda ako dinhi sa Medium para sa mas makaiikag nga software engineering nga mga artikulo!

Mga Kapanguhaan

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 Tinubdan link

Telegram channel pinaagi sa Elasticsearch

Source: www.habr.com

Idugang sa usa ka comment