Egituratu gabeko datuak erregistroetatik ELK Stack-era bihurtzeko aholkuak eta trikimailuak GROK LogStash-en erabiliz

Egituratu gabeko datuak GROK-ekin egituratzea

Elastic (ELK) pila erabiltzen ari bazara eta Logstash erregistro pertsonalizatuak Elasticsearch-en mapatzea interesatzen bazaizu, argitalpen hau zuretzat da.

Egituratu gabeko datuak erregistroetatik ELK Stack-era bihurtzeko aholkuak eta trikimailuak GROK LogStash-en erabiliz

ELK pila kode irekiko hiru proiekturen akronimoa da: Elasticsearch, Logstash eta Kibana. Elkarrekin erregistroak kudeatzeko plataforma bat osatzen dute.

  • Elasticsearch bilaketa eta analisi sistema bat da.
  • Logstash zerbitzariaren alboko datuak prozesatzeko kanalizazio bat da, hainbat iturritako datuak aldi berean irensten dituena, eraldatzen dituena eta, ondoren, Elasticsearch bezalako "stash" batera bidaltzen dituena.
  • Kibana erabiltzaileei datuak bistaratzeko aukera ematen die taulak eta grafikoak erabiliz Elasticsearch-en.

Beats geroago etorri zen eta datuen bidalketa arina da. Beats-en sarrerak Elk Stack Elastic Stack bihurtu zuen, baina hori ez da kontua.

Artikulu hau Grok-i buruzkoa da, hau da, Logstash-en zure erregistroak eraldatzeko funtzio bat gordetzera bidali aurretik. Gure helburuetarako, Logstash-eko datuak Elasticsearch-era prozesatzeari buruz bakarrik hitz egingo dut.

Egituratu gabeko datuak erregistroetatik ELK Stack-era bihurtzeko aholkuak eta trikimailuak GROK LogStash-en erabiliz

Grok Logstash-en barneko iragazkia da, egiturarik gabeko datuak egituratu eta kontsultagarri batean aztertzeko erabiltzen dena. Adierazpen erregular baten gainean kokatzen da (regex) eta testu-ereduak erabiltzen ditu log-fitxategietako kateak bat etortzeko.

Hurrengo ataletan ikusiko dugunez, Grok erabiltzeak diferentzia handia egiten du erregistroen kudeaketa eraginkorrari dagokionez.

Grok gabe zure erregistroko datuak egituratu gabe daude

Egituratu gabeko datuak erregistroetatik ELK Stack-era bihurtzeko aholkuak eta trikimailuak GROK LogStash-en erabiliz

Grok gabe, Logstash-etik Elasticsearch-era erregistroak bidaltzen direnean eta Kibana-n errendatzen direnean, mezuaren balioan bakarrik agertzen dira.

Egoera honetan informazio esanguratsua kontsultatzea zaila da erregistroko datu guztiak gako bakar batean gordetzen direlako. Hobe izango litzateke erregistroko mezuak hobeto antolatuta egongo balira.

Erregistroetako datuak egituratu gabeak

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

Datu gordinak arretaz begiratuz gero, ikusiko duzu benetan zati ezberdinez osatuta dagoela, bakoitza espazio batez bereizita.

Garatzaile esperientziadunentzat, ziurrenik asma dezakezu zer esan nahi duen zati bakoitzak eta zer den erregistro-mezu hori API deitik. Elementu bakoitzaren aurkezpena jarraian azaltzen da.

Gure datuen ikuspegi egituratua

  • localhost == ingurunea
  • GET == metodoa
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • 400 == erantzun_egoera
  • 46 ms == erantzun_denbora
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id

Datu egituratuetan ikusten dugunez, egiturarik gabeko erregistroen ordena dago. Hurrengo urratsa datu gordinaren software prozesatzea da. Hor distira egiten du Grok.

Grok txantiloiak

Grok txantiloi integratuak

Logstash-ek 100 txantiloi baino gehiago ditu egituratu gabeko datuak egituratzeko. Zalantzarik gabe, hau aprobetxatu beharko zenuke ahal den guztietan apache, linux, haproxy, aws eta abar bezalako syslog orokorretarako.

Hala ere, zer gertatzen da goiko adibidean bezalako erregistro pertsonalizatuak dituzunean? Zure Grok txantiloia eraiki behar duzu.

Grok txantiloi pertsonalizatuak

Zure Grok txantiloia eraikitzen saiatu behar duzu. erabili nuen Grok Debugger ΠΈ Grok ereduak.

Kontuan izan Grok txantiloiaren sintaxia honakoa dela: %{SYNTAX:SEMANTIC}

Egiten saiatu nintzen lehenengo gauza fitxara joatea izan zen Ezagutu Grok arazketan. Tresna honek Grok eredua automatikoki sor zezakeela oso polita iruditu zitzaidan, baina ez zen oso erabilgarria izan bi bat-etortze soilik aurkitu baitzituen.

Egituratu gabeko datuak erregistroetatik ELK Stack-era bihurtzeko aholkuak eta trikimailuak GROK LogStash-en erabiliz

Aurkikuntza hau erabiliz, Grok araztailean nire txantiloia sortzen hasi nintzen Elastic Github orrian aurkitutako sintaxia erabiliz.

Egituratu gabeko datuak erregistroetatik ELK Stack-era bihurtzeko aholkuak eta trikimailuak GROK LogStash-en erabiliz

Sintaxi ezberdinekin jolastu ondoren, azkenean log-datuak nahi nuen moduan egituratu ahal izan ditut.

Egituratu gabeko datuak erregistroetatik ELK Stack-era bihurtzeko aholkuak eta trikimailuak GROK LogStash-en erabiliz

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

Jatorrizko testua:

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

Eredua:

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

Zer gertatu zen azkenean

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

Grok txantiloia eta mapatutako datuak eskuan, azken urratsa Logstash-en gehitzea da.

Logstash.conf konfigurazio fitxategia eguneratzen

ELK pila instalatu duzun zerbitzarian, joan Logstash konfiguraziora:

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

Itsatsi aldaketak.

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

Zure aldaketak gorde ondoren, berrabiarazi Logstash eta egiaztatu bere egoera funtzionatzen ari dela ziurtatzeko.

sudo service logstash restart
sudo service logstash status

Azkenik, aldaketak indarrean jarri direla ziurtatzeko, Ziurtatu Kibanako Logstash-erako Elasticsearch indizea eguneratzen duzula!

Egituratu gabeko datuak erregistroetatik ELK Stack-era bihurtzeko aholkuak eta trikimailuak GROK LogStash-en erabiliz

Grok-ekin, zure erregistro-datuak egituratuta daude!

Egituratu gabeko datuak erregistroetatik ELK Stack-era bihurtzeko aholkuak eta trikimailuak GROK LogStash-en erabiliz

Goiko irudian ikus dezakegunez, Grok gai da Elasticsearch-ekin erregistroko datuak automatikoki lotzeko. Horrek erregistroak kudeatzea eta informazioa azkar kontsultatzea errazten du. Araztzeko erregistro-fitxategiak arakatu beharrean, bilatzen ari zarenaren arabera iragazi dezakezu, adibidez, ingurune edo url baten arabera.

Probatu Grok esamoldeak! Horretarako beste modu bat baduzu edo goiko adibideekin arazorik baduzu, idatzi iruzkin bat behean jakinarazteko.

Eskerrik asko irakurtzeagatik, eta jarraitu nazazu hemen Medium-en, software ingeniaritza artikulu interesgarri gehiago lortzeko!

baliabideak

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 Iturburuaren esteka

Telegram kanala Elasticsearch

Iturria: www.habr.com

Gehitu iruzkin berria