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.
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.
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
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
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.
Aurkikuntza hau erabiliz, Grok araztailean nire txantiloia sortzen hasi nintzen Elastic Github orrian aurkitutako sintaxia erabiliz.
Sintaxi ezberdinekin jolastu ondoren, azkenean log-datuak nahi nuen moduan egituratu ahal izan ditut.
Grok Debugger esteka
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!
Grok-ekin, zure erregistro-datuak egituratuta daude!
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
Telegram kanala
Iturria: www.habr.com