GROK ဖြင့်ဖွဲ့စည်းပုံမထားသောဒေတာကိုတည်ဆောက်ခြင်း။
အကယ်၍ သင်သည် Elastic (ELK) stack ကိုအသုံးပြုပြီး စိတ်ကြိုက် Logstash မှတ်တမ်းများကို Elasticsearch သို့ ပုံဖော်ရန် စိတ်ဝင်စားပါက၊ ဤပို့စ်သည် သင့်အတွက်ဖြစ်သည်။
ELK stack သည် Elasticsearch၊ Logstash နှင့် Kibana ပရောဂျက်သုံးခုအတွက် အတိုကောက်ဖြစ်သည်။ ၎င်းတို့သည် မှတ်တမ်းစီမံခန့်ခွဲမှု ပလပ်ဖောင်းကို အတူတကွ ဖွဲ့စည်းကြသည်။
- Elasticsearch ရှာဖွေမှုနှင့် ခွဲခြမ်းစိတ်ဖြာမှုစနစ်တစ်ခုဖြစ်သည်။
- logstash ဆာဗာဘက်ခြမ်းဒေတာကို စီမံဆောင်ရွက်ပေးသည့် ပိုက်လိုင်းတစ်ခုဖြစ်ပြီး ရင်းမြစ်များစွာမှ ဒေတာများကို တစ်ပြိုင်နက်ထည့်သွင်းကာ ၎င်းကိုအသွင်ပြောင်းကာ Elasticsearch ကဲ့သို့သော "stash" သို့ ပေးပို့သည်။
- ကီဘာနာ အသုံးပြုသူများအား Elasticsearch တွင် ဇယားများနှင့် ဂရပ်များကို အသုံးပြု၍ ဒေတာကို မြင်ယောင်နိုင်စေပါသည်။
Beats နောက်ပိုင်းမှ ရောက်လာပြီး ပေါ့ပါးသော ဒေတာ ပို့ဆောင်သူဖြစ်သည်။ Beats ၏နိဒါန်းတွင် Elk Stack ကို Elastic Stack အဖြစ်သို့ပြောင်းလဲခဲ့သည်၊ သို့သော်ထိုအချက်မဟုတ်ပါ။
ဤဆောင်းပါးသည် သင့်မှတ်တမ်းများကို stash သို့မပို့မီတွင် ပြောင်းလဲနိုင်သော Logstash ရှိအင်္ဂါရပ်တစ်ခုဖြစ်သည့် Grok အကြောင်းဖြစ်သည်။ ကျွန်ုပ်တို့၏ရည်ရွယ်ချက်များအတွက်၊ ကျွန်ုပ်သည် Logstash မှ Elasticsearch သို့ အချက်အလက်လုပ်ဆောင်ခြင်းအကြောင်းသာ ပြောပါမည်။
Grok သည် Logstash အတွင်းရှိ စစ်ထုတ်မှုတစ်ခုဖြစ်ပြီး ဖွဲ့စည်းတည်ဆောက်ပုံမထားသော အချက်အလက်များကို ခွဲခြမ်းစိပ်ဖြာပြီး စုံစမ်းမေးမြန်းနိုင်သော အရာတစ်ခုအဖြစ် အသုံးပြုသည်။ ၎င်းသည် ပုံမှန်အသုံးအနှုန်း (regex) ၏ထိပ်တွင်ထိုင်ပြီး မှတ်တမ်းဖိုင်များတွင် စာကြောင်းများကို ကိုက်ညီရန် စာသားပုံစံများကို အသုံးပြုသည်။
အောက်ဖော်ပြပါ ကဏ္ဍများတွင် တွေ့ရမည်ဖြစ်သကဲ့သို့၊ Grok ကိုအသုံးပြုခြင်းသည် ထိရောက်သောမှတ်တမ်းစီမံခန့်ခွဲမှုနှင့်ပတ်သက်လာလျှင် ကြီးမားသောကွာခြားချက်တစ်ခုဖြစ်သည်။
Grok မရှိလျှင် သင်၏ မှတ်တမ်းဒေတာသည် ဖွဲ့စည်းပုံမရှိပေ။
Grok မရှိဘဲ Logstash မှ Elasticsearch သို့ ပေးပို့ပြီး Kibana တွင် ပြန်ဆိုသည့်အခါ ၎င်းတို့သည် မက်ဆေ့ခ်ျတန်ဖိုးတွင်သာ ပေါ်လာသည်။
မှတ်တမ်းဒေတာအားလုံးကို သော့တစ်ခုတည်းတွင် သိမ်းဆည်းထားသောကြောင့် ဤအခြေအနေတွင် အဓိပ္ပာယ်ရှိသော အချက်အလက်ကို မေးမြန်းရန် ခက်ခဲသည်။ မှတ်တမ်းမက်ဆေ့ဂျ်များကို ပိုမိုကောင်းမွန်စွာ စီစဉ်နိုင်လျှင် ပိုကောင်းပါသည်။
မှတ်တမ်းများမှဖွဲ့စည်းပုံမထားသောဒေတာ
localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0
ဒေတာအကြမ်းကို အနီးကပ်ကြည့်လျှင် ၎င်းတွင် နေရာလွတ်တစ်ခုစီ ခြားထားသော အစိတ်အပိုင်းများ အမှန်တကယ် ပါဝင်ကြောင်း သင်တွေ့ရပါမည်။
ပိုမိုအတွေ့အကြုံရှိသော developer များအတွက်၊ အစိတ်အပိုင်းတစ်ခုစီ၏အဓိပ္ပာယ်နှင့် API ခေါ်ဆိုမှုမှ မှတ်တမ်းမက်ဆေ့ချ်သည် အဘယ်အရာဖြစ်သည်ကို သင် ခန့်မှန်းနိုင်ပါသည်။ အကြောင်းအရာတစ်ခုစီ၏ တင်ပြချက်ကို အောက်တွင်ဖော်ပြထားသည်။
ကျွန်ုပ်တို့၏ဒေတာကိုဖွဲ့စည်းပုံအမြင်
- localhost == ပတ်ဝန်းကျင်
- == နည်းလမ်းရယူပါ။
- /v2/applink/5c2f4bb3e9fda1234edc64d == url
- 400 == တုံ့ပြန်မှု_အခြေအနေ
- 46ms == တုံ့ပြန်မှု_အချိန်
- 5bc6e716b5d6cb35fc9687c0 == user_id
ဖွဲ့စည်းတည်ဆောက်ပုံဒေတာတွင် ကျွန်ုပ်တို့မြင်ရသည့်အတိုင်း၊ ဖွဲ့စည်းတည်ဆောက်ပုံမထားသော မှတ်တမ်းများအတွက် အမှာစာတစ်ခုရှိသည်။ နောက်တစ်ဆင့်မှာ ဒေတာကုန်ကြမ်းများကို ဆော့ဖ်ဝဲလ်လုပ်ဆောင်ခြင်း ဖြစ်သည်။ ဤနေရာသည် Grok တောက်ပနေသည်။
Grok ပုံစံများ
တပ်ဆင်ပြီး Grok နမူနာများ
Logstash တွင် တည်ဆောက်ပုံမထားသောဒေတာကို တည်ဆောက်ရန်အတွက် built-in ပုံစံ 100 ကျော်ပါရှိသည်။ apache၊ linux၊ haproxy၊ aws စသည်တို့ကဲ့သို့သော အထွေထွေ syslog များအတွက် ဖြစ်နိုင်သည့်အခါတိုင်း ၎င်းကို သေချာပေါက် အသုံးချသင့်သည်။
သို့သော်၊ အထက်ဖော်ပြပါဥပမာတွင်ကဲ့သို့ စိတ်ကြိုက်မှတ်တမ်းများရှိပါက မည်သို့ဖြစ်မည်နည်း။ သင့်ကိုယ်ပိုင် Grok နမူနာပုံစံကို သင်တည်ဆောက်ရပါမည်။
စိတ်ကြိုက် Grok ပုံစံများ
သင်၏ကိုယ်ပိုင် Grok ပုံစံကိုတည်ဆောက်ရန်ကြိုးစားရမည်။ ငါသုံးခဲ့တယ်
Grok နမူနာပုံစံ syntax သည် အောက်ပါအတိုင်းဖြစ်သည်ကို သတိပြုပါ။ %{SYNTAX:SEMANTIC}
ငါပထမဆုံးကြိုးစားခဲ့တာက tab ကိုသွားပါ။ ရှာဖှေတှေ့ Grok debugger တွင်။ ဒီကိရိယာက Grok ပုံစံကို အလိုအလျောက်ထုတ်ပေးနိုင်ရင် ပိုကောင်းမယ်လို့ ထင်ပါတယ်၊ ဒါပေမယ့် တိုက်ဆိုင်မှု နှစ်ခုပဲတွေ့တဲ့အတွက် သိပ်အသုံးဝင်မှာ မဟုတ်ပါဘူး။
ဤရှာဖွေတွေ့ရှိမှုကို အသုံးပြု၍ Elastic Github စာမျက်နှာပေါ်ရှိ syntax ကို အသုံးပြု၍ Grok debugger တွင် ကျွန်ုပ်၏ကိုယ်ပိုင်ပုံစံကို စတင်ဖန်တီးခဲ့ပါသည်။
မတူညီသော syntax များဖြင့် ကစားပြီးနောက်၊ နောက်ဆုံးတွင် ကျွန်ုပ်အလိုရှိသည့်အတိုင်း မှတ်တမ်းဒေတာကို တည်ဆောက်နိုင်ခဲ့သည်။
Grok Debugger လင့်ခ်
မူရင်းစာသား-
localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0
pattern:
%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}
အဆုံးမှာ ဘာဖြစ်သွားတာလဲ။
{
"environment": [
[
"localhost"
]
],
"method": [
[
"GET"
]
],
"url": [
[
"/v2/applink/5c2f4bb3e9fda1234edc64d"
]
],
"response_status": [
[
"400"
]
],
"BASE10NUM": [
[
"400"
]
],
"response_time": [
[
"46ms"
]
],
"user_id": [
[
"5bc6e716b5d6cb35fc9687c0"
]
]
}
Grok ပုံစံခွက်နှင့် မြေပုံဆွဲထားသောဒေတာကို လက်ထဲတွင် ကိုင်ဆောင်ထားခြင်းဖြင့် ၎င်းကို Logstash သို့ထည့်ရန် နောက်ဆုံးအဆင့်ဖြစ်သည်။
Logstash.conf ဖွဲ့စည်းမှုပုံစံဖိုင်ကို အပ်ဒိတ်လုပ်ခြင်း။
သင် ELK stack ကိုထည့်သွင်းသည့်ဆာဗာတွင်၊ Logstash ဖွဲ့စည်းမှုပုံစံသို့သွားပါ-
sudo vi /etc/logstash/conf.d/logstash.conf
ပြောင်းလဲမှုများကို ကူးထည့်ပါ။
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" ]
}
}
သင်၏ပြောင်းလဲမှုများကိုသိမ်းဆည်းပြီးနောက်၊ Logstash ကိုပြန်လည်စတင်ပြီး ၎င်းသည်အလုပ်လုပ်နေသေးကြောင်းသေချာစေရန်၎င်း၏အခြေအနေကိုစစ်ဆေးပါ။
sudo service logstash restart
sudo service logstash status
နောက်ဆုံးအနေနဲ့ အပြောင်းအလဲတွေ အကျိုးသက်ရောက်မှုရှိအောင်၊ Kibana ရှိ Logstash အတွက် သင်၏ Elasticsearch အညွှန်းကို အပ်ဒိတ်လုပ်ရန် သေချာပါစေ။
Grok ဖြင့်၊ သင်၏မှတ်တမ်းဒေတာကို ဖွဲ့စည်းတည်ဆောက်ထားပါသည်။
အပေါ်ကပုံမှာတွေ့မြင်ရတဲ့အတိုင်း Grok ဟာ Elasticsearch နဲ့ မှတ်တမ်းဒေတာကို အလိုအလျောက်ကိုက်ညီအောင်လုပ်ဆောင်ပေးနိုင်ပါတယ်။ ၎င်းသည် မှတ်တမ်းများကို စီမံခန့်ခွဲရန်နှင့် အချက်အလက်များကို လျင်မြန်စွာ မေးမြန်းရန် ပိုမိုလွယ်ကူစေသည်။ အမှားရှာရန် မှတ်တမ်းဖိုင်များကို တူးခြင်းအစား၊ သင်ရှာဖွေနေသည့် ပတ်ဝန်းကျင်တစ်ခု သို့မဟုတ် url ကဲ့သို့ ရိုးရိုးရှင်းရှင်း စစ်ထုတ်နိုင်သည်။
Grok အသုံးအနှုန်းများကို စမ်းကြည့်ပါ။ သင့်တွင် ၎င်းကိုပြုလုပ်ရန် အခြားနည်းလမ်းရှိလျှင် သို့မဟုတ် အထက်ဖော်ပြပါနမူနာများနှင့် ပြဿနာတစ်စုံတစ်ရာရှိပါက၊ ကျွန်ုပ်အား အသိပေးရန် အောက်တွင် မှတ်ချက်ရေးပါ။
ဖတ်ရှုခြင်းအတွက် ကျေးဇူးတင်ပါသည်—ပိုမိုစိတ်ဝင်စားစရာကောင်းသော ဆော့ဖ်ဝဲအင်ဂျင်နီယာဆောင်းပါးများအတွက် Medium တွင် ကျွန်ုပ်ကို ကျေးဇူးပြု၍ လိုက်နာပါ။
အရင်းမြစ်များ
Telegram channel မှ
source: www.habr.com