Application Logging and Monitoring
Application တစ်ခုက server ဒါမှမဟုတ် cloud မှာ run ရုံပဲဆိုရင်တော့ လွယ်ပါလိမ့်မယ်။ personal အမြင် အရဆိုရင်တော့ proper monotorings and alerts တွေ မရှိရင် application ကိုရပ်ထားတာ အကောင်းဆုံးပါပဲ။ ဘာလို့လဲဆိုတော့ ကိုယ့် application/service က ဘာတွေဖြစ်နေတယ်၊ ဘာ error တက်နေတယ်၊ users တွေက တကယ်ရောသုံးလို့ရရဲ့လား အစရှိတာတွေ သိဖို့လိုပါတယ်။ Application မှာ error တစ်ခုခု တက်တာနဲ့ ကိုယ်က သိဖို့လိုပါတယ်၊ user ကပြောမှသိတာမျိုးဆိုရင်တော့ အတော်ကိုအဆင်မပြေပါဘူး။ Bad VOC(Voice of Customers) တွေပဲရပြီး ဘယ်သူမှသုံးချင်တော့မှာမဟုတ်ပါဘူး။
ဒါတွေထဲက တစ်စိတ်တစ်ပိုင်းဖြေရှင်းဖို့အတွက် Logging and Alerts tools တွေအများကြီးရှိပါတယ်။
- Splunk
- ELK
- Graylog
- Etc...
ဒီထဲကမှ Splunk အကြောင်းကိုနည်းနည်း ပြောချင်ပါတယ်။
Splunk က log management and centralized logging tool တစ်ခုဖြစ်တယ်။
ဘာလို့ ဒီ log management ကိုသုံးရလဲ ဆိုတော့ ကိုယ့် Application/Service က very high performance နဲ့ very high QPS တွေနဲ့ run တယ်ဆိုရင် log တွေကို အလွယ်တကူကြည့်ဖို့ ရှာဖို့ဆိုတာ မလွယ််ပါဘူး။ Instances တွေအများကြီး သုံးထားရင်ပိုလိို့တောင်ဆိုးပါသေးတယ် request ကို ဘယ် instance က handle လုပ်သွားလဲတောင် သိဖို့မလွယ်ပါဘူး။ ဒီထဲကကမှ containerized architecture နဲ့ ဆိုရင် ပိုဆိုးသွားပါပြီ၊ ပုံမှန်ဆိုရင် logs တွေက container destory ဖြစ်တာနဲ့ အကုန်ပျောက်သွားမှာပါ။ အဲ့ဒါတွေကြောင့် centralized log management tools တွေသုံးဖို့လိုပါတယ်။
Splunk ဘယ်လို အလုပ်လုပ်လဲ/ ဘာတွေလိုအပ်လဲ
- Log server
- Log forwarder
အဲ့ဒါတွေလိုပါတယ်။ တစ်ခုရှိတာက Splunk က free မရပါဘူး ဝယ်သုံးရပါတယ်
1. Log Server
အခြေခံအားဖြင့်ဆိုရင်တော့ log server မှာ logs တွေသိမ်းမယ်၊ အဲ့မှာပဲ ရှာတာတွေ၊ alerts တွေ နဲ့ monitoring တွက် graph တွေ ကို logs ပေါ်အခြေခံပြီးတော့ setup လုပ်လို့ရပါတယ်။
2. Log forwarder
Log forwarder ကတော့ရှင်းပါတယ်။ သူ့နာမည် အတိုင်းပဲ logs တွေကို သတ်မှတ်ထားတဲ့ server ကို realtime forward လုပ်ပေးပါတယ်။ Applications ဒါမှမဟုတ် containers run တဲ့ server မှာပဲ forward လုပ်ရမယ့် log files ကို configure လုပ်ပေးရပါတယ်။
Log တွေကို ဘယ်လိုရှာကြမလဲ
ကြည့်ချင်တဲ့ application ရဲ့ sourcetype ပေါ်မူတည်ပြီး ကြည့်လို့လို့ရပါတယ်။ ကြည့်ချင်တဲ့အချိန်အပိုင်းအခြားနဲ့ ရှာချင်တဲ့ keyword လေးရိုက်ပြီးလဲ ရှာလို့ရပါတယ်။ ဥပမာ user တစ်ယောက်ရဲ့ action ကို ကြည့်ချင်တယ်ဆိုရင် logs ရိုက်ထားတဲ့ user id နဲ့ကြည့်ချင်တဲ့ အချိန်အပိုင်းခြားရွေးလိုက်ရင် အကုန်ကြည့်လို့ရပါပြီ။ Application မှာတော့ logs တွေကို စနစ်တကျ ရိုက်ထားဖို့လိုတာပေါ့ အဲ့ဒါကြောင့် အရင်တစ်ခါရေးခဲ့တဲ့ post လိုပဲ DevOps knowledge ရှိနေရင်တော့ပိုကောင်းပါတယ်။
Alerts တွေဘယ်လို အလုပ်လုပ်လဲ
Alerts တွေကိုလဲ logs တွေ ပေါ်အခြေခံပြီး လုပ်ပါမယ်။ ဥပမာ ကိုယ့် Application ရဲ့ log မှာ ERROR ဒါမှမဟုတ် Exception ဆိုတဲ့ text ကို 5မိနစ်တစ်ခါ Splunk ကိုရှာစေပြီး တွေ့တာနဲ့ alert email ကို trigger လုပ်ထားလို့ရပါတယ်။
Monitoring and Dashboard
Monitoring နဲ့ Dashboard တွေကိုလဲ ထုံးစံအတိုင်း log ပေါ် အခြေခံပြီး လိုအပ်သလို setup လုပ်ထားလို့ရပါတယ်။
ဥပမာ - ကိုယ်က alerts လဲ မလုပ်ထားချင်ဘူး စောင့်လဲစောင့်ကြည့်ချင်တဲ့ အနေအထားပေါ့၊ ဆိုကြပါစို့ Unauthorized/ Forbidden လိုဟာမျိုးဆိုရင် သာမာန် users တွေလဲ password မှားရိုက်တာတွေ၊ permission မရှိတဲ့ function တွေကို သွားကြည့်မိတာတွေဆိုရင်ဖြစ်တတ်တယ်။ Error လဲမဟုတ်ဘူး၊ ဒါပေမယ့် Unauthorized/ Forbidden တွေအရမ်းများရင်လဲ attack လုပ်ခံရတာဖြစ်နိုင်ပါတယ်။ ဒီလို အခြေနေမျိုးမှာလဲသုံးလို့ရပါတယ်။ ဒါကို Alerts အနေနဲ့လဲ occurrences က 5 minutes မှာ အခါ ၁၀၀ ထက်ပိုရင် Alert email trigger လုပ်ဆိုပြီးတော့လဲ setup လုပ်ထားလို့ရပါတယ်။
နောက်ထပ်ဥပမာ တစ်ခု အနေနဲ့ - ဘယ်functions တွေကို user access ဘယ်လောက်ရှိတယ် ဆိုတာမျိုးတွေ ကို analysis အနေနဲ့လဲ dashboard တွေ setup လုပ်ထားလို့ရပါတယ်။