Vidokezo na mbinu za kubadilisha data isiyo na muundo kutoka kwa kumbukumbu hadi ELK Stack kwa kutumia GROK katika LogStash

Kuunda data isiyo na muundo na GROK

Ikiwa unatumia rafu ya Elastic (ELK) na ungependa kuchora kumbukumbu maalum za Logstash kwenye Elasticsearch, basi chapisho hili ni kwa ajili yako.

Vidokezo na mbinu za kubadilisha data isiyo na muundo kutoka kwa kumbukumbu hadi ELK Stack kwa kutumia GROK katika LogStash

Rafu ya ELK ni kifupi cha miradi mitatu ya chanzo huria: Elasticsearch, Logstash na Kibana. Kwa pamoja huunda jukwaa la usimamizi wa kumbukumbu.

  • Elasticsearch ni mfumo wa utafutaji na uchambuzi.
  • Logstash ni njia ya usindikaji ya data ya upande wa seva ambayo humeza data kutoka kwa vyanzo vingi kwa wakati mmoja, kuibadilisha, na kisha kuituma kwa "stash" kama vile Elasticsearch.
  • Kibana inaruhusu watumiaji kuibua data kwa kutumia chati na grafu katika Elasticsearch.

Beats ilikuja baadaye na ni msafirishaji wa data nyepesi. Kuanzishwa kwa Beats kulibadilisha Rafu ya Elk kuwa Rafu ya Elastic, lakini hiyo sio maana yake.

Nakala hii inahusu Grok, ambayo ni kipengele katika Logstash ambacho kinaweza kubadilisha kumbukumbu zako kabla ya kutumwa kwa stash. Kwa madhumuni yetu, nitazungumza tu kuhusu usindikaji wa data kutoka kwa Logstash hadi Elasticsearch.

Vidokezo na mbinu za kubadilisha data isiyo na muundo kutoka kwa kumbukumbu hadi ELK Stack kwa kutumia GROK katika LogStash

Grok ni kichujio ndani ya Logstash ambacho hutumika kuchanganua data ambayo haijaundwa kuwa kitu kilichopangwa na kinachoweza kuhojiwa. Hukaa juu ya usemi wa kawaida (regex) na hutumia muundo wa maandishi kulinganisha mifuatano kwenye faili za kumbukumbu.

Kama tutakavyoona katika sehemu zifuatazo, kutumia Grok hufanya tofauti kubwa linapokuja suala la usimamizi bora wa kumbukumbu.

Bila Grok data yako ya kumbukumbu haijaundwa

Vidokezo na mbinu za kubadilisha data isiyo na muundo kutoka kwa kumbukumbu hadi ELK Stack kwa kutumia GROK katika LogStash

Bila Grok, kumbukumbu zinapotumwa kutoka kwa Logstash hadi Elasticsearch na kutolewa katika Kibana, zinaonekana tu katika thamani ya ujumbe.

Kuuliza habari muhimu katika hali hii ni ngumu kwa sababu data zote za kumbukumbu huhifadhiwa katika ufunguo mmoja. Ingekuwa bora ikiwa ujumbe wa kumbukumbu ungepangwa vyema.

Data isiyo na muundo kutoka kwa kumbukumbu

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

Ukiangalia kwa karibu data mbichi, utaona kwamba ina sehemu tofauti, kila moja ikitenganishwa na nafasi.

Kwa wasanidi wenye uzoefu zaidi, pengine unaweza kukisia kila moja ya sehemu ina maana gani na ujumbe huo wa kumbukumbu ni nini kutoka kwa simu ya API. Uwasilishaji wa kila kipengee umeainishwa hapa chini.

Mtazamo wa muundo wa data yetu

  • mwenyeji == mazingira
  • PATA == mbinu
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • 400 == hali_ya_majibu
  • 46ms == majibu_muda
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id

Kama tunavyoona katika data iliyopangwa, kuna agizo la kumbukumbu zisizo na muundo. Hatua inayofuata ni usindikaji wa programu ya data ghafi. Hapa ndipo Grok huangaza.

Violezo vya Grok

Violezo vya Grok vilivyojengwa ndani

Logstash inakuja na violezo zaidi ya 100 vilivyojengewa ndani vya kupanga data ambayo haijaundwa. Unapaswa kuchukua fursa hii kila inapowezekana kwa syslog za jumla kama apache, linux, haproxy, aws na kadhalika.

Walakini, nini hufanyika unapokuwa na kumbukumbu maalum kama kwenye mfano hapo juu? Lazima ujenge kiolezo chako cha Grok.

Violezo maalum vya Grok

Lazima ujaribu kuunda kiolezo chako cha Grok. nilitumia Grok Debugger ΠΈ Miundo ya Grok.

Kumbuka kuwa syntax ya kiolezo cha Grok ni kama ifuatavyo: %{SYNTAX:SEMANTIC}

Jambo la kwanza nililojaribu kufanya ni kwenda kwenye kichupo Kugundua kwenye kitatuzi cha Grok. Nilidhani itakuwa nzuri ikiwa zana hii inaweza kutoa muundo wa Grok kiotomatiki, lakini haikuwa muhimu sana kwani ilipata mechi mbili pekee.

Vidokezo na mbinu za kubadilisha data isiyo na muundo kutoka kwa kumbukumbu hadi ELK Stack kwa kutumia GROK katika LogStash

Kwa kutumia ugunduzi huu, nilianza kuunda kiolezo changu mwenyewe kwenye kitatuzi cha Grok kwa kutumia sintaksia inayopatikana kwenye ukurasa wa Elastic Github.

Vidokezo na mbinu za kubadilisha data isiyo na muundo kutoka kwa kumbukumbu hadi ELK Stack kwa kutumia GROK katika LogStash

Baada ya kucheza karibu na syntaxes tofauti, hatimaye niliweza kupanga data ya logi jinsi nilivyotaka.

Vidokezo na mbinu za kubadilisha data isiyo na muundo kutoka kwa kumbukumbu hadi ELK Stack kwa kutumia GROK katika LogStash

Kiungo cha Kitatuzi cha Grok https://grokdebug.herokuapp.com/

Maandishi asilia:

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

Sifa:

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

Nini kilitokea mwishoni

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

Ukiwa na kiolezo cha Grok na data iliyopangwa mkononi, hatua ya mwisho ni kuiongeza kwenye Logstash.

Inasasisha faili ya usanidi ya Logstash.conf

Kwenye seva ambapo ulisakinisha kifurushi cha ELK, nenda kwa usanidi wa Logstash:

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

Bandika mabadiliko.

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

Baada ya kuhifadhi mabadiliko yako, anzisha upya Logstash na uangalie hali yake ili kuhakikisha kuwa bado inafanya kazi.

sudo service logstash restart
sudo service logstash status

Hatimaye, ili kuhakikisha mabadiliko yamefanyika, Hakikisha umesasisha faharasa yako ya Elasticsearch kwa Logstash katika Kibana!

Vidokezo na mbinu za kubadilisha data isiyo na muundo kutoka kwa kumbukumbu hadi ELK Stack kwa kutumia GROK katika LogStash

Ukiwa na Grok, data yako ya kumbukumbu imeundwa!

Vidokezo na mbinu za kubadilisha data isiyo na muundo kutoka kwa kumbukumbu hadi ELK Stack kwa kutumia GROK katika LogStash

Kama tunavyoona kwenye picha hapo juu, Grok ina uwezo wa kulinganisha data ya kumbukumbu kiotomatiki na Elasticsearch. Hii hurahisisha udhibiti wa kumbukumbu na kuuliza habari kwa haraka. Badala ya kuchimba faili za kumbukumbu ili kutatua, unaweza kuchuja tu kulingana na kile unachotafuta, kama vile mazingira au url.

Jaribu maneno ya Grok! Ikiwa una njia nyingine ya kufanya hivyo au una matatizo yoyote na mifano hapo juu, andika tu maoni hapa chini ili unijulishe.

Asante kwa kusoma-na tafadhali fuatana nami hapa kwenye Medium kwa makala zaidi ya kuvutia ya uhandisi wa programu!

Rasilimali

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 Kiungo cha chanzo

Kituo cha Telegraph na Elasticsearch

Chanzo: mapenzi.com

Kuongeza maoni