Cunsiglii è trucchi per cunvertisce dati non strutturati da logs à ELK Stack utilizendu GROK in LogStash

Strutture di dati non strutturati cù GROK

Sè vo aduprate a pila Elastic (ELK) è site interessatu à mapping logs Logstash persunalizati à Elasticsearch, allora questu post hè per voi.

Cunsiglii è trucchi per cunvertisce dati non strutturati da logs à ELK Stack utilizendu GROK in LogStash

A pila ELK hè un acronimu per trè prughjetti open source: Elasticsearch, Logstash è Kibana. Inseme formanu una piattaforma di gestione di log.

  • Elasticsearch hè un sistema di ricerca è analitica.
  • Logstash hè un pipeline di trasfurmazioni di dati da u servitore chì ingest data da parechje fonti simultaneamente, trasfurmà, è poi l'invia à un "stash" cum'è Elasticsearch.
  • Kibana permette à l'utilizatori di visualizà e dati utilizendu charts è grafici in Elasticsearch.

Beats hè vinutu dopu è hè un speditore di dati ligeru. L'intruduzioni di Beats hà trasfurmatu l'Elk Stack in l'Elastic Stack, ma questu ùn hè micca u puntu.

Questu articulu hè di Grok, chì hè una funzione in Logstash chì pò trasfurmà i vostri logs prima di esse mandati à u stash. Per i nostri scopi, parleraghju solu di trasfurmà e dati da Logstash in Elasticsearch.

Cunsiglii è trucchi per cunvertisce dati non strutturati da logs à ELK Stack utilizendu GROK in LogStash

Grok hè un filtru in Logstash chì hè utilizatu per analizà e dati non strutturati in qualcosa strutturatu è interrogabile. Si trova nantu à una espressione regulare (regex) è usa mudelli di testu per currisponde à e stringhe in i schedarii di log.

Cumu vedemu in e sezzioni seguenti, l'usu di Grok face una grande diferenza quandu si tratta di una gestione efficiente di log.

Senza Grok i vostri dati di logu ùn sò micca strutturati

Cunsiglii è trucchi per cunvertisce dati non strutturati da logs à ELK Stack utilizendu GROK in LogStash

Senza Grok, quandu i logs sò mandati da Logstash à Elasticsearch è resi in Kibana, appariscenu solu in u valore di u messagiu.

A dumanda di infurmazione significativa in questa situazione hè difficiule perchè tutti i dati di logu sò guardati in una sola chjave. Saria megliu s'ellu i missaghji di log eranu megliu urganizata.

Dati micca strutturati da logs

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

Se guardate attentamente i dati crudi, vi vede chì in realtà hè custituitu da diverse parti, ognuna siparata da un spaziu.

Per i sviluppatori più sperimentati, pudete probabilmente indovinà ciò chì ognuna di e parte significa è ciò chì u messagiu di log hè da a chjama API. A presentazione di ogni articulu hè delineata quì sottu.

Vista strutturata di i nostri dati

  • ​localhost == ambiente
  • GET == metudu
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • 400 == risposta_status
  • 46 ms == tempu di risposta
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id

Comu avemu vistu in dati strutturati, ci hè un ordine per logs unstructured. U prossimu passu hè u prucessu di software di dati crudi. Questu hè induve Grok brilla.

Modelli di Grok

Modelli Grok integrati

Logstash vene cun più di 100 mudelli integrati per a strutturazione di dati non strutturati. Duvete definitivamente prufittà di questu sempre chì hè pussibule per i syslogs generale cum'è apache, linux, haproxy, aws è cusì.

Tuttavia, chì succede quandu avete logs persunalizati cum'è in l'esempiu sopra? Duvete custruisce u vostru propiu mudellu Grok.

Modelli Grok persunalizati

Avete da pruvà à custruisce u vostru propiu mudellu Grok. Aghju utilizatu Grok Debugger и Modelli di Grok.

Nota chì a sintassi di u mudellu Grok hè a siguenti: %{SYNTAX:SEMANTIC}

A prima cosa ch'e aghju pruvatu à fà era andà à a tabulazione Discover in u debugger Grok. Pensu chì saria bellu se sta strumentu puderia generà automaticamente un mudellu Grok, ma ùn era micca troppu utile postu chì hà truvatu solu duie partite.

Cunsiglii è trucchi per cunvertisce dati non strutturati da logs à ELK Stack utilizendu GROK in LogStash

Utilizendu sta scuperta, aghju cuminciatu à creà u mo propiu mudellu in u Grok debugger utilizendu a sintassi truvata in a pagina Elastic Github.

Cunsiglii è trucchi per cunvertisce dati non strutturati da logs à ELK Stack utilizendu GROK in LogStash

Dopu avè ghjucatu cù diverse sintassi, aghju statu infine capace di strutturà i dati di u logu cumu vulia.

Cunsiglii è trucchi per cunvertisce dati non strutturati da logs à ELK Stack utilizendu GROK in LogStash

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

Testu originale:

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

Pattern:

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

Ciò chì hè accadutu à a fine

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

Cù u mudellu di Grok è i dati mappati in manu, l'ultimu passu hè di aghjunghje à Logstash.

Aghjurnà u schedariu di cunfigurazione Logstash.conf

In u servitore induve installate a pila ELK, andate à a cunfigurazione Logstash:

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

Incolla i cambiamenti.

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

Dopu avè salvatu i vostri cambiamenti, riavvia Logstash è verificate u so statutu per verificà chì hè sempre travagliatu.

sudo service logstash restart
sudo service logstash status

Infine, per assicurà chì i cambiamenti anu fattu effettu, Assicuratevi di aghjurnà u vostru indice Elasticsearch per Logstash in Kibana!

Cunsiglii è trucchi per cunvertisce dati non strutturati da logs à ELK Stack utilizendu GROK in LogStash

Cù Grok, i vostri dati di log sò strutturati!

Cunsiglii è trucchi per cunvertisce dati non strutturati da logs à ELK Stack utilizendu GROK in LogStash

Comu pudemu vede in l'imaghjini di sopra, Grok hè capaci di cunfurmà automaticamente i dati di log cù Elasticsearch. Questu facilita a gestione di i logs è l'infurmazioni rapidamente interrugati. Invece di scavà i schedarii di log per debug, pudete solu filtrà per ciò chì cercate, cum'è un ambiente o un url.

Pruvate l'espressioni Grok! Sì avete un altru modu per fà questu o avete qualchì prublema cù l'esempii sopra, basta à scrive un cumentu sottu per fà sapè.

Grazie per leghje, è per piacè seguitemi quì nantu à Medium per articuli più interessanti di ingegneria di software!

Risorse

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 Fonte ligame

Canale Telegram da Elasticsearch

Source: www.habr.com

Add a comment