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.
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.
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
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
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.
Gamit kini nga pagkadiskobre, nagsugod ko sa paghimo sa akong kaugalingong template sa Grok debugger gamit ang syntax nga makita sa Elastic Github page.
Human sa pagdula-dula uban sa lain-laing mga syntaxes, ako sa katapusan nakahimo sa istruktura sa log data sa paagi sa akong gusto.
Grok Debugger Link
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!
Uban sa Grok, ang imong data sa log gihan-ay!
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
Telegram channel pinaagi sa
Source: www.habr.com