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.
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.
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
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
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.
Kwa kutumia ugunduzi huu, nilianza kuunda kiolezo changu mwenyewe kwenye kitatuzi cha Grok kwa kutumia sintaksia inayopatikana kwenye ukurasa wa Elastic Github.
Baada ya kucheza karibu na syntaxes tofauti, hatimaye niliweza kupanga data ya logi jinsi nilivyotaka.
Kiungo cha Kitatuzi cha Grok
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!
Ukiwa na Grok, data yako ya kumbukumbu imeundwa!
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
Kituo cha Telegraph na
Chanzo: mapenzi.com