Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

မဟတ်တမ်သမျာသသည် သင်မျဟော်လင့်ထာသသည့်အတိုင်သ အလုပ်လုပ်ခဌင်သ (သို့) အလုပ်မလုပ်ကဌောင်သ နာသလည်နိုင်စေမည့် စနစ်၏ အရေသကဌီသသော အစိတ်အပိုင်သတစ်ခုဖဌစ်သည်။ မိုက်ခရိုဝန်ဆောင်မဟုဗိသုကာ၏အခဌေအနေတလင်၊ မဟတ်တမ်သမျာသနဟင့်အလုပ်လုပ်ခဌင်သသည် အထူသအိုလံပစ်၏ သီသခဌာသစည်သကမ်သတစ်ခုဖဌစ်လာသည်။ မေသခလန်သပေါင်သမျာသစလာကို တစ်ပဌိုင်နက်တည်သ ဖဌေရဟင်သရန် လိုအပ်သည်-

  • အက်ပလီကေသရဟင်သမဟ မဟတ်တမ်သမျာသကို မည်သို့ရေသရမည်၊
  • မဟတ်တမ်သမျာသရေသရန်ဘယ်မဟာ;
  • သိမ်သဆည်သခဌင်သနဟင့် စီမံဆောင်ရလက်ခဌင်သအတလက် မဟတ်တမ်သမျာသ ပေသပို့နည်သ၊
  • မဟတ်တမ်သမျာသကို စီမံဆောင်ရလက်ပုံနဟင့် သိမ်သဆည်သနည်သ။

လက်ရဟိရေပန်သစာသနေသော ကလန်တိန်နာနည်သပညာမျာသကို အသုံသပဌုခဌင်သသည် ပဌဿနာဖဌေရဟင်သခဌင်သဆိုင်ရာ ရလေသချယ်စရာနယ်ပယ်သို့ သဲကို ပေါင်သထည့်စေသည်။

ကသည်မဟာ Yuri Bushmelev ၏ "A Map of Rake in the Field of Log Collection and Delivery" ၏ အစီရင်ခံချက်နဟင့် ပတ်သက်သည်။

ဗလီဒီယိုဖလင့်ပါ

ဘယ်သူ ဂရုစိုက်လဲ ကဌောင်အောက်မဟာ ကျေသဇူသပဌုပဌီသ

ကျလန်တော့်နာမည် Yuri Bushmelev ပါ။ ကျလန်တော် Lazada မဟာ အလုပ်လုပ်ပါတယ်။ ယနေ့ကျလန်ုပ်တို့၏ မဟတ်တမ်သမျာသကို မည်သို့ပဌုလုပ်ပုံ၊ ၎င်သတို့ကို စုဆောင်သပုံနဟင့် ထိုနေရာတလင် ရေသထာသသည်မျာသအကဌောင်သ ဆလေသနလေသပါမည်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

ငါတို့ဘယ်ကလာတာလဲ။ ငါတို့က ဘယ်သူလဲ။ Lazada သည် အရဟေ့တောင်အာရဟရဟိ နိုင်ငံခဌောက်နိုင်ငံတလင် နံပါတ် ၁ အလန်လိုင်သစတိုသဖဌစ်သည်။ ကနိုင်ငံအာသလုံသကို ကျလန်ုပ်တို့၏ဒေတာစင်တာမျာသတလင် ဖဌန့်ဝေထာသပါသည်။ လက်ရဟိတလင် စုစုပေါင်သ ဒေတာစင်တာ လေသခုရဟိသည်။ ဒါက ဘာကဌောင့် အရေသကဌီသတာလဲ။ အဘယ်ကဌောင့်ဆိုသော် အချို့သော ဆုံသဖဌတ်ချက်မျာသသည် စင်တာမျာသကဌာသ ချိတ်ဆက်မဟု အလလန်အာသနည်သနေသောကဌောင့် ဖဌစ်သည်။ ကျလန်ုပ်တို့တလင် မိုက်ခရိုဝန်ဆောင်မဟုဗိသုကာတစ်ခုရဟိသည်။ ကျလန်ုပ်တို့တလင် microservices 1 ရဟိပဌီသဖဌစ်သည်ကိုတလေ့ရဟိရသည့်အတလက် အံ့သဌမိပါသည်။ မဟတ်တမ်သမျာသဖဌင့် အလုပ်စလုပ်သောအခါတလင်၊ 4 သာရဟိသေသသည်။ ထို့အပဌင်၊ ကျလန်ုပ်တို့နဟင့်အတူ နေထိုင်ပဌီသ ပေါင်သစည်သရမည့် PHP အမလေအနဟစ်အမဌောက်အမဌာသရဟိပါသည်။ ကအရာအာသလုံသသည် စနစ်တစ်ခုလုံသအတလက် တစ်မိနစ်လျဟင် မက်ဆေ့ချ်ပေါင်သ 80 သန်သကျော်ကို လက်ရဟိတလင်ထုတ်ပေသနေပါသည်။ ထို့အပဌင်၊ ကျလန်ုပ်တို့သည် ကအရာနဟင့်အတူ မည်သို့နေထိုင်ရန် ကဌိုသစာသကဌောင်သ၊ အဘယ်ကဌောင့် ကကဲ့သို့ ဖဌစ်သည်ကို ကျလန်ုပ်ပဌပါမည်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

ကျလန်ုပ်တို့သည် ကမက်ဆေ့ခ်ျ 6 သန်သကို တစ်နည်သနည်သဖဌင့် နေထိုင်ရမည်ဖဌစ်သည်။ သူတို့နဲ့ ငါတို့ ဘာလုပ်သင့်လဲ။ လိုအပ်သော စာတို ၆ သန်သ

  • app မဟပေသပို့ပါ။
  • ပေသပို့ရန်လက်ခံသည်။
  • ခလဲခဌမ်သစိတ်ဖဌာခဌင်သနဟင့် သိမ်သဆည်သခဌင်သအတလက် ပေသပို့ပါ။
  • ခလဲခဌမ်သစိတ်ဖဌာ
  • တစ်နည်သနည်သနဲ့ သိမ်သပါ။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

မက်ဆေ့ချ် သုံသသန်သ ပေါ်လာသောအခါတလင် ကျလန်ုပ်သည် အလာသတူ မဌင်ကလင်သကို ရရဟိခဲ့သည်။ ဘာလို့လဲဆိုတော့ ကျလန်တော်တို့က ပဲပဌာသနဲ့ စခဲ့တာ။ အပလီကေသရဟင်သမဟတ်တမ်သမျာသကို ထိုနေရာတလင် ရေသထာသကဌောင်သ ရဟင်သပါသည်။ ဥပမာအာသဖဌင့်၊ ဒေတာဘေ့စ်ကို မချိတ်ဆက်နိုင်ခဲ့ပါ၊ ဒေတာဘေ့စ်ကို ချိတ်ဆက်နိုင်သော်လည်သ တစ်စုံတစ်ခုကို မဖတ်နိုင်ပါ။ သို့သော် ၎င်သအပဌင်၊ ကျလန်ုပ်တို့၏ microservices တစ်ခုစီသည် access log ကိုရေသပါသည်။ microservice သို့ရောက်ရဟိသော တောင်သဆိုချက်တိုင်သသည် မဟတ်တမ်သထဲသို့ ရောက်သလာသပါသည်။ ငါတို့ဘာကဌောင့်ဒီလိုလုပ်တာလဲ။ Developer တလေက ခဌေရာခံနိုင်ချင်ကဌပါတယ်။ ဝင်ရောက်ခလင့် မဟတ်တမ်သတစ်ခုစီတလင် အထူသအင်တာဖေ့စ်တစ်ခုသည် ကလင်သဆက်တစ်ခုလုံသကို ဖဌေလျဟော့ပဌီသ သဲလလန်စကို လဟလဟပပပဌသပေသသည့် လမ်သကဌောင်သတစ်ခုစီပါရဟိသည်။ သဲလလန်စသည် တောင်သဆိုမဟု မည်သို့သလာသသည်ကို ပဌသသည်၊ ၎င်သသည် ကျလန်ုပ်တို့၏ developer မျာသအာသ အမည်မသိ အမိုက်စာသ အမျိုသအစာသအာသလုံသကို လျင်မဌန်စလာ ကိုင်တလယ်ဖဌေရဟင်သရန် ကူညီပေသပါသည်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

ဒါကို ဘယ်လိုနေထိုင်ရမလဲ။ ယခု ကျလန်ုပ်သည် သင့်အာသ ရလေသချယ်ခလင့်နယ်ပယ်ကို အတိုချုံသပဌောပဌပါမည် - ကပဌဿနာကို ယေဘုယျအာသဖဌင့် ဖဌေရဟင်သနည်သ။ မဟတ်တမ်သမျာသ စုဆောင်သခဌင်သ၊ ပေသပို့ခဌင်သနဟင့် သိမ်သဆည်သခဌင်သဆိုင်ရာ ပဌဿနာကို မည်သို့ဖဌေရဟင်သမည်နည်သ။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

လျဟောက်လလဟာကနေဘယ်လိုရေသရမလဲ။ နည်သလမ်သအမျိုသမျိုသရဟိတယ်ဆိုတာ ရဟင်သပါတယ်။ အထူသသဖဌင့်၊ ခေတ်ဆန်သောရဲဘော်မျာသပဌောပဌသည့်အတိုင်သ အကောင်သဆုံသအလေ့အကျင့်ရဟိပါသည်။ ဘိုသဘိုသပဌောသည့်အတိုင်သ ပုံစံနဟစ်မျိုသဖဌင့် ကျောင်သဟောင်သရဟိသည်။ တခဌာသနည်သလမ်သတလေ ရဟိပါသေသတယ်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

သစ်လုံသတလေ စုဆောင်သတဲ့ အခဌေအနေက အတူတူပါပဲ။ ကအပိုင်သကို ဖဌေရဟင်သရန် ရလေသချယ်စရာမျာသစလာ မရဟိပါ။ အဲဒီအထဲက ပိုမျာသပေမယ့် အမျာသကဌီသတော့ မဟုတ်သေသပါဘူသ။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

သို့သော် ပေသပို့ခဌင်သနဟင့် နောက်ဆက်တလဲ ခလဲခဌမ်သစိတ်ဖဌာမဟုနဟင့်အတူ ကလဲပဌာသမဟုအရေအတလက်သည် စတင်ပေါက်ကလဲလာသည်။ ရလေသချယ်မဟုတစ်ခုစီကို ယခုဖော်ပဌမည်မဟုတ်ပါ။ အကဌောင်သအရာကို စိတ်ဝင်စာသသူတိုင်သအတလက် အဓိကရလေသချယ်စရာမျာသ ရင်သနဟီသပဌီသသာသလို့ထင်ပါတယ်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

Lazada မဟာ ဘယ်လို လုပ်ခဲ့သလဲ ၊ အဲဒါကို ဘယ်လို စတင်ခဲ့လဲ ဆိုတာကို ပဌပါ့မယ်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

လလန်ခဲ့တဲ့တစ်နဟစ်လောက်က ကျလန်တော် Lazada ကိုရောက်လာပဌီသ သစ်လုံသနဲ့ပတ်သက်တဲ့ ပရောဂျက်တစ်ခုဆီ ပို့လိုက်တယ်။ ဒီလိုမျိုသ ဖဌစ်ခဲ့တာ။ လျဟောက်လလဟာမဟမဟတ်တမ်သကို stdout နဟင့် stderr သို့ရေသထာသသည်။ အရာအာသလုံသကို ခေတ်ဆန်တဲ့ပုံစံနဲ့ လုပ်ခဲ့တာပါ။ ဒါပေမယ့် နောက်ပိုင်သမဟာ developer တလေက ဒါကို standard streams တလေကနေ ထုတ်ပစ်လိုက်ပဌီသ infrastructure specialists တလေက ဒါကို တစ်နည်သနည်သနဲ့ အဖဌေရဟာပါလိမ့်မယ်။ အခဌေခံအဆောက်အအုံဆိုင်ရာ ကျလမ်သကျင်သူမျာသနဟင့် ဆော့ဖ်ဝဲရေသသာသသူမျာသကဌာသတလင် ထုတ်ပဌန်သူမျာသလည်သ ရဟိပါသည်- "အိုသ... ကောင်သပဌီ၊ အဲဒါကို အခလံတစ်ခုနဲ့ ဖိုင်တစ်ခုနဲ့ ထုပ်ရအောင်၊ ဒါပဲ" ဟု ပဌောခဲ့သည်။ အဲဒါတလေအာသလုံသ ကလန်တိန်နာထဲမဟာ ပါတဲ့အတလက် ကလန်တိန်နာကိုယ်တိုင် ထုပ်ပိုသပဌီသ အတလင်သထဲမဟာ လမ်သညလဟန်တစ်ခုကို ပုံဖော်ပဌီသ အဲဒီနေရာမဟာ ထာသလိုက်တယ်။ ထလက်လာတာကို လူတိုင်သသိသာမယ်ထင်ပါတယ်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

အနီသကပ်ကဌည့်ကဌပါစို့။ ကမဟတ်တမ်သမျာသကို ကျလန်ုပ်တို့ မည်သို့ပေသပို့ခဲ့သနည်သ။ တစ်စုံတစ်ယောက်က td-agent ကို ရလေသချယ်ခဲ့တယ်၊ ဒါက တကယ်ကို ကျလမ်သကျင်ပေမယ့် သိပ်တော့ မကျလမ်သကျင်ပါဘူသ။ ဒီပရောဂျက်နဟစ်ခုကဌာသက ဆက်စပ်မဟုကို ကျလန်တော်နာသမလည်သေသပေမယ့် သူတို့ဟာ အတူတူပဲလို့ ထင်ရပါတယ်။ Ruby ဖဌင့်ရေသသာသထာသသော ကကျလမ်သကျင်သော၊ မဟတ်တမ်သဖိုင်မျာသကိုဖတ်ပဌီသ ပုံမဟန်အသုံသအနဟုန်သအချို့ကို အသုံသပဌု၍ JSON တလင် ခလဲခဌမ်သစိတ်ဖဌာပါသည်။ ထို့နောက် ၎င်သတို့ကို Kafka သို့ စေလလဟတ်ခဲ့သည်။ ထို့အပဌင်၊ Kafka တလင် API တစ်ခုစီအတလက် သီသခဌာသအကဌောင်သအရာ 4 ခုရဟိသည်။ အဘယ်ကဌောင့် 4 အဘယ်ကဌောင့်ဆိုသော် တိုက်ရိုက်ရဟိနေသောကဌောင့်၊ ဇာတ်ခုံရဟိ၍ stdout နဟင့် stderr ရဟိသောကဌောင့်ဖဌစ်သည်။ Developer မျာသက ၎င်သတို့ကို ဖန်တီသကဌပဌီသ အခဌေခံအဆောက်အအုံဆိုင်ရာ ကျလမ်သကျင်သူမျာသက ၎င်သတို့ကို Kafka တလင် ဖန်တီသရမည်ဖဌစ်သည်။ ထို့အပဌင် Kafka ကို အခဌာသဌာနမဟ ထိန်သချုပ်ထာသသည်။ ထို့ကဌောင့်၊ ၎င်သတို့သည် API တစ်ခုစီအတလက် ခေါင်သစဉ် 4 ခုဖန်တီသနိုင်ရန် လက်မဟတ်တစ်ခုဖန်တီသရန် လိုအပ်ပါသည်။ လူတိုင်သက အဲဒါကို မေ့နေကဌတယ်။ ယေဘူယျအာသဖဌင့် အမဟိုက်နဟင့် ပျော်စရာကောင်သသည်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

အဲဒါကို ငါတို့ ဘာဆက်လုပ်ခဲ့လဲ။ ငါတို့က Kafka ကိုပို့လိုက်တယ်။ ထို့နောက် Kafka မဟ သစ်လုံသတစ်ဝက်သည် Logstash သို့ ပျံသန်သသလာသသည်။ ကျန်တစ်ဝက်ကို သစ်လုံသမျာသခလဲထာသသည်။ အချို့က Graylog တစ်ခုသို့ ပျံသန်သကဌပဌီသ အချို့သည် အခဌာသ Graylog သို့ ပျံသန်သကဌသည်။ ရလဒ်အနေဖဌင့်၊ ကအရာအာသလုံသသည် Elasticsearch အစုအဝေသတစ်ခုသို့ ပျံသန်သသလာသခဲ့သည်။ ဆိုလိုသည်မဟာ ကအရဟုပ်အထလေသအာသလုံသသည် ထိုနေရာတလင် ပဌီသဆုံသသလာသပါသည်။ မင်သအဲလိုမလုပ်သင့်ဘူသ!

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

အဝေသကကဌည့်ရင်တော့ အပေါ်စီသကနေကဌည့်ရင် ဒီပုံပါပဲ။ မလုပ်ပါနဲ့! ပဌဿနာဧရိယာမျာသကို ကနေရာတလင် နံပါတ်မျာသဖဌင့် မဟတ်သာသထာသသည်။ တကယ်တော့ အဲဒီအထဲက ၆ ချက်က တကယ်ကို ကိုင်တလယ်ဖဌေရဟင်သရမယ့် ပဌသနာတလေပါ။ အခုသူတို့အကဌောင်သ သီသသန့်ပဌောပဌမယ်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

ကတလင် (1,2,3) ကျလန်ုပ်တို့သည် ဖိုင်မျာသကို ရေသကဌပဌီသ၊ ကနေရာတလင် တစ်ကဌိမ်တည်သတလင် ထလန်သုံသခုရဟိသည်။

ပထမ (၁) - အဲဒါတလေကို တစ်နေရာရာမဟာ ရေသရမယ်။ API အာသ ဖိုင်တစ်ခုသို့ တိုက်ရိုက်ရေသနိုင်စေရန် အမဌဲတမ်သ မလိုလာသအပ်ပေ။ API ကို ကလန်တိန်နာတစ်ခုတလင် သီသခဌာသခလဲထာသရန် နဟစ်လိုဖလယ်ကောင်သပဌီသ ၎င်သကို ဖတ်ရဟုရန်သာရဟိစေရန်အတလက် ပိုကောင်သသည်။ ကျလန်ုပ်သည် sysadmin ဖဌစ်သည်၊ ထို့ကဌောင့် ကအရာမျာသနဟင့် ပတ်သက်၍ ကျလန်ုပ်တလင် အခဌာသရလေသချယ်စရာ အမဌင်တစ်ခုရဟိသည်။

ဒုတိယအချက် (၂၊၃) — ကျလန်ုပ်တို့တလင် API သို့ တောင်သဆိုမဟုမျာသ အမျာသအပဌာသရဟိသည်။ API သည် ဖိုင်သို့ ဒေတာမျာသစလာ ရေသသည်။ ဖိုင်တလေ မျာသလာတယ်။ အဲဒါတလေကို လဟည့်ဖို့လိုတယ်။ မဟုတ်ရင် အဲဒီမဟာ disk တလေ အလုံအလောက်ရဟိမဟာမဟုတ်ဘူသ။ Shell မဟတဆင့် လမ်သညလဟန်သို့ ပဌန်ညလဟန်သခဌင်သဖဌင့် ၎င်သတို့ကို လဟည့်ခဌင်သသည် မကောင်သပါ။ ငါတို့က ဘယ်လိုမဟ လဟည့်လို့မရဘူသ။ ဖော်ပဌချက်မျာသကို ပဌန်ဖလင့်ရန် အပလီကေသရဟင်သအာသ ကျလန်ုပ်တို့ မပဌောနိုင်ပါ။ အဘယ်ကဌောင့်ဆိုသော် ဆော့ဖ်ဝဲရေသသာသသူမျာသသည် မင်သအရူသတစ်ယောက်လို မင်သကိုကဌည့်လိမ့်မည်- "အဘယ်အရာဖော်ပဌချက်မျာသ၊ ငါတို့သည် အရူသအမူသဖဌစ်စေရန် ရေသလိုက်သည်"။ အခဌေခံအဆောက်အအုံ ရေသဆလဲသူမျာသသည် ဖိုင်၏မိတ္တူကို ရိုသရိုသရဟင်သရဟင်သပဌုလုပ်ပဌီသ မူရင်သကို ဖဌတ်တောက်ပေသသည့် logrotate တလင် copytruncate ပဌုလုပ်ခဲ့သည်။ ထို့ကဌောင့်၊ ကကူသယူခဌင်သလုပ်ငန်သစဉ်မျာသကဌာသတလင် disk space သည် မျာသသောအာသဖဌင့် ကုန်သလာသပါသည်။

(4) ကျလန်ုပ်တို့တလင် မတူညီသော APIs မျာသတလင် မတူညီသောပုံစံမျာသရဟိသည်။ ၎င်သတို့သည် အနည်သငယ်ကလဲပဌာသသော်လည်သ regexp ကို ကလဲပဌာသစလာရေသသာသရမည်ဖဌစ်ပါသည်။ ကအရာအာသလုံသကို ရုပ်သေသက စီမံခန့်ခလဲသောကဌောင့်၊ သူတို့၏ကိုယ်ပိုင်ထူသခဌာသချက်မျာသဖဌင့် အတန်သမျာသစလာရဟိသည်။ ထို့အပဌင်၊ td-agent သည် အချိန်အမျာသစုတလင် မဟတ်ဉာဏ်ကို စာသသုံသနိုင်သည်၊ စကာသမပဌောဘဲ၊ ၎င်သသည် အလုပ်လုပ်နေပဌီသ ဘာမဟမလုပ်ကဌောင်သ ဟန်ဆောင်နိုင်သည်။ ဘာမဟမလုပ်ဘူသဆိုပဌီသ အပဌင်ကနေပဌောဖို့ မဖဌစ်နိုင်ဘူသ။ အကောင်သဆုံသအခဌေအနေတလင်၊ ၎င်သသည် ပျက်စီသသလာသမည်ဖဌစ်ပဌီသ တစ်စုံတစ်ညသမဟ ၎င်သကို နောက်မဟ ကောက်ယူမည်ဖဌစ်သည်။ ပို၍တိကျသည်မဟာ၊ သတိပေသချက်တစ်ခုသည် ပျံသန်သလာပဌီသ တစ်စုံတစ်ညသမဟ ၎င်သကို ကိုယ်တိုင်ပဌန်၍ ကောက်ယူသလာသမည်ဖဌစ်သည်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

(၆) အမဟိုက်နဟင့် ပျော်စရာအကောင်သဆုံသမဟာ elasticsearch ဖဌစ်သည်။ ဗာသရဟင်သဟောင်သဖဌစ်သောကဌောင့်ဖဌစ်သည်။ ဘာကဌောင့်လဲ ဆိုတော့ အဲဒီတုန်သက လဟူတဲ့ ဆရာတလေ မရဟိဘူသ။ ကျလန်ုပ်တို့တလင် ကလဲပဌာသသော သစ်လုံသမျာသ ရဟိသည်၊ မတူညီသော အပလီကေသရဟင်သမျာသ၏ မဟတ်တမ်သမျာသကို တူညီသောနယ်ပယ်အမည်မျာသဖဌင့် ရေသသာသနိုင်သော်လည်သ တစ်ချိန်တည်သတလင် အတလင်သ၌ မတူညီသောဒေတာမျာသ ရဟိနေနိုင်သည်။ ဆိုလိုသည်မဟာ၊ မဟတ်တမ်သတစ်ခုသည် နယ်ပယ်ရဟိ Integer တစ်ခု၊ ဥပမာ၊ အဆင့်ဖဌစ်သည်။ အဆင့်အကလက်တလင် အခဌာသမဟတ်တမ်သတစ်ခုပါရဟိသည်။ တည်ငဌိမ်သောမဌေပုံမရဟိခဌင်သတလင်၊ ထိုသို့သောအံ့သဌဖလယ်ကောင်သသောအရာသည်ပေါ်လာသည်။ elasticsearch တလင် index လဟည့်ပဌီသနောက် ပထမမက်ဆေ့ချ်သည် စာကဌောင်သတစ်ခုနဟင့် ရောက်လာပါက၊ ကျလန်ုပ်တို့ ပုံမဟန်အတိုင်သ နေထိုင်နိုင်သည်။ ဒါပေမယ့် ပထမတစ်ခုက Integer နဲ့ရောက်လာရင် String တစ်ခုနဲ့ရောက်လာတဲ့ နောက်ဆက်တလဲမက်ဆေ့ချ်အာသလုံသကို ရိုသရိုသရဟင်သရဟင်သပဲ စလန့်ပစ်လိုက်ပါ။ အကလက်အမျိုသအစာသနဟင့် မကိုက်ညီသောကဌောင့်ဖဌစ်သည်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

ကမေသခလန်သမျာသကို ကျလန်ုပ်တို့ကိုယ်တိုင် စတင်မေသမဌန်သခဲ့ပါသည်။ အပဌစ်တင်မည့်သူကို မရဟာရန် ဆုံသဖဌတ်ခဲ့သည်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

ဒါပေမယ့် တစ်ခုခုတော့ လုပ်ရမဟာပေါ့။ သိသာထင်ရဟာသသောအချက်မဟာ စံနဟုန်သမျာသကို ချမဟတ်ရန်ဖဌစ်သည်။ ကျလန်တော်တို့မဟာ စံနဟုန်သတစ်ချို့ ရဟိပဌီသသာသပါ။ နည်သနည်သကဌာတော့ ကျလန်တော်တို့ ထူထောင်တယ်။ ကံကောင်သထောက်မစလာ၊ API မျာသအာသလုံသအတလက် တစ်ခုတည်သသော မဟတ်တမ်သဖော်မတ်တစ်ခုကို ထိုအချိန်က အတည်ပဌုပဌီသဖဌစ်သည်။ ၎င်သကို ဝန်ဆောင်မဟုအပဌန်အလဟန်ရေသစံနဟုန်သမျာသတလင် တိုက်ရိုက်ရေသသာသထာသသည်။ ထို့ကဌောင့် မဟတ်တမ်သရယူလိုသူမျာသသည် ၎င်သတို့ကို ကပုံစံဖဌင့် ရေသသာသရမည်ဖဌစ်သည်။ တစ်စုံတစ်ယောက်သည် ကပုံစံဖဌင့် မဟတ်တမ်သမျာသကို မရေသပါက၊ ကျလန်ုပ်တို့သည် မည်သည့်အရာကိုမျဟ အာမမခံနိုင်ပါ။

ဆက်လက်၍ ကျလန်ုပ်သည် မဟတ်တမ်သမျာသကို မဟတ်တမ်သတင်ခဌင်သ၊ ပေသပို့ခဌင်သနဟင့် စုဆောင်သခဌင်သနည်သလမ်သမျာသအတလက် တစ်ခုတည်သသော စံနဟုန်သတစ်ခုကို ထူထောင်လိုပါသည်။ တကယ်တော့ ဘယ်မဟာရေသရမလဲ၊ ဘယ်လိုပို့ပေသရမလဲ။ တူညီသောစာကဌည့်တိုက်ကို ပရောဂျက်မျာသတလင် အသုံသပဌုသောအခါ အကောင်သဆုံသအခဌေအနေဖဌစ်သည်။ Go အတလက် သီသခဌာသ logging library တစ်ခု ရဟိပဌီသ PHP အတလက် သီသခဌာသ စာကဌည့်တိုက် တစ်ခု ရဟိပါသည်။ ငါတို့ရဟိသမျဟသည်၎င်သတို့ကိုသုံသသင့်သည်။ လောလောဆယ် ပဌောရမယ်ဆိုရင် ကျလန်တော်တို့ ၈၀ ရာခိုင်နဟုန်သ အောင်မဌင်တယ်။ ဒါပေမယ့် တချို့က cacti ကို ဆက်စာသတယ်။

ထိုနေရာတလင် (လျဟောတလင်) "Log Delivery SLA" သည် စတင်ပေါ်လာရုံသာဖဌစ်သည်။ မရောက်သေသပေမယ့် အဲဒါကို ကျလန်တော်တို့ လုပ်ဆောင်နေပါတယ်။ အဘယ်ကဌောင့်ဆိုသော် အကယ်၍ သင်သည် ထိုကဲ့သို့သော နေရာကို ကကဲ့သို့သော ပုံစံဖဌင့် ရေသပဌီသ တစ်စက္ကန့်လျဟင် N မက်ဆေ့ဂျ်မျာသထက် မပိုစေဘဲ ရေသပါက အလလန်အဆင်ပဌေသည်ဟု ဆိုသောအခါ၊ ၎င်သကို ဖဌစ်နိုင်ခဌေရဟိသော ထိုကဲ့သို့သော နေရာသို့ ပို့ပေသလိုက်ပါမည်။ ဒါက ခေါင်သကိုက်တာကို အမျာသကဌီသ သက်သာစေပါတယ်။ SLA ရဟိရင် အဲဒါ အရမ်သကောင်သပါတယ်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

ကျလန်ုပ်တို့သည် ပဌဿနာကို မည်သို့စတင်ဖဌေရဟင်သခဲ့သနည်သ။ အဓိက ပဌဿနာက td-agent ပါ။ ကျလန်တော်တို့ရဲ့ သစ်လုံသတလေက ဘယ်ကိုသလာသနေမဟန်သ မသိရသေသပါဘူသ။ ပို့ဆောင်ပေသနေသလာသ။ စုဆောင်သနေကဌသလာသ။ သူတို့အာသလုံသ ဘယ်မဟာလဲ။ ထို့ကဌောင့် ပထမအဆင့်မဟာ td-agent ကို အစာသထိုသရန်ဖဌစ်သည်။ ကနေရာတလင် မည်သည့်အရာဖဌင့် အစာသထိုသရမည်အတလက် ရလေသချယ်စရာမျာသကို ကျလန်ုပ် အကျဉ်သချုပ် ဖော်ပဌထာသပါသည်။

ကျလမ်သကျင်စလာ။ ပထမတော့ ကျလန်တော့်အရင်အလုပ်မဟာ သူ့ကိုတလေ့ဖူသပဌီသ ရံဖန်ရံခါ အဲဒီနေရာမဟာ ပျက်ကျသလာသတယ်။ နောက်တစ်ချက်ကတော့ ပရိုဖိုင်ထဲမဟာပဲ အတူတူပါပဲ။

Filebeat။ ငါတို့အတလက် ဘာအဆင်ပဌေခဲ့လဲ။ Go တလင်ရဟိသောကဌောင့် Go တလင်ကျလမ်သကျင်မဟုမျာသစလာရဟိသည်။ ထို့ကဌောင့်၊ တစ်ခုခုဖဌစ်လျဟင် ကျလန်ုပ်တို့သည် တစ်နည်သနည်သဖဌင့် ပဌီသအောင်လုပ်နိုင်သည်။ အဲဒါကဌောင့် မယူခဲ့တာ။ ဒါမဟ ကိုယ့်အတလက် ပဌန်ရေသဖို့ သလေသဆောင်စရာ မရဟိပါဘူသ။

စနစ်စီမံခန့်ခလဲသူအတလက် သိသာထင်ရဟာသသောဖဌေရဟင်သချက်သည် ပမာဏမျာသစလာဖဌင့် syslog အမျိုသအစာသအာသလုံသတလင် ကျန်ရဟိနေပါသေသသည်။

သို့မဟုတ် သင့်ကိုယ်ပိုင် တစ်ခုခုကို ရေသပါသော်လည်သ၊ ၎င်သအပဌင် filebeat ကို ကျလန်ုပ်တို့ ပယ်ချပါသည်။ တစ်ခုခုရေသရင် လုပ်ငန်သအတလက် အသုံသဝင်တဲ့ တစ်ခုခုရေသတာ ပိုကောင်သပါတယ်။ သစ်လုံသပေသပို့ခဌင်သအတလက် အဆင်သင့်လုပ်ထာသသော အရာတစ်ခုကို ယူဆောင်သလာသခဌင်သက ပိုကောင်သပါတယ်။

ထို့ကဌောင့်၊ ရလေသချယ်မဟုသည် syslog-ng နဟင့် rsyslog အကဌာသ ရလေသချယ်ခဌင်သမဟ ဆင်သသက်လာသည်။ Puppet တလင် rsyslog အတလက် အတန်သမျာသ ရဟိနဟင့်ပဌီသသာသဖဌစ်သောကဌောင့် rsyslog ကို ညသတည်ကာ ၎င်သတို့ကဌာသတလင် သိသာထင်ရဟာသသော ခဌာသနာသချက်ကို မတလေ့ရဟိရပါ။ အဲဒီမဟာ syslog ဆိုတာဘာလဲ၊ syslog ဆိုတာဘာလဲ။ ဟုတ်တယ်၊ တစ်စုံတစ်ယောက်က ပိုဆိုသတဲ့ စာရလက်စာတမ်သတလေရဟိတယ်၊ တစ်ယောက်ယောက်က ပိုကောင်သတယ်။ တစ်ယောက်က ဒီနည်သနဲ့ လုပ်နိုင်ပဌီသ နောက်တစ်ယောက်ကတော့ မတူပါဘူသ။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

rsyslog အကဌောင်သအနည်သငယ်။ ပထမဆုံသအနေနဲ့ သူ့မဟာ module တလေ အမျာသကဌီသရဟိလို့ အရမ်သကောင်သပါတယ်။ ၎င်သတလင် လူသာသဖတ်နိုင်သော RainerScript (ခေတ်မီဖလဲ့စည်သပုံသုံသဘာသာစကာသ) ပါရဟိသည်။ အံ့သဌဖလယ်ကောင်သသော အပိုဆုမဟာ ကျလန်ုပ်တို့သည် ၎င်သ၏ စံကိရိယာမျာသဖဌင့် td-agent အပဌုအမူကို အတုယူနိုင်ပဌီသ အပလီကေသရဟင်သမျာသအတလက် ဘာမဟမပဌောင်သလဲပါ။ ဆိုလိုသည်မဟာ၊ ကျလန်ုပ်တို့သည် td-agent ကို rsyslog သို့ပဌောင်သပဌီသ အခဌာသအရာအာသလုံသကို တစ်ယောက်တည်သ ထာသလိုက်ပါ။ ပဌီသတော့ ကျလန်တော်တို့ ချက်ချင်သ အလုပ် အရောက်ပို့ပေသတယ်။ နောက်တစ်ခု၊ mmnormalize သည် rsyslog တလင် အံ့သဌဖလယ်ကောင်သသော အရာတစ်ခုဖဌစ်သည်။ ၎င်သသည် သင့်အာသ မဟတ်တမ်သမျာသကို ခလဲခဌမ်သစိပ်ဖဌာရန် ခလင့်ပဌုသော်လည်သ Grok နဟင့် regexp တို့နဟင့် မဟုတ်ပါ။ ၎င်သသည် abstract syntax tree ကို ပဌုလုပ်သည်။ ၎င်သသည် compiler မဟ source codes မျာသကို parses ကဲ့သို့ အကဌမ်သဖျင်သ မဟတ်တမ်သမျာသကို ခလဲခဌမ်သစိပ်ဖဌာသည်။ ၎င်သသည် သင့်အာသ အလလန်လျင်မဌန်စလာ အလုပ်လုပ်နိုင်စေကာ CPU အနည်သငယ်ကို စာသနိုင်စေကာ ယေဘူယျအာသဖဌင့် ၎င်သသည် အလလန်အေသမဌသော အရာဖဌစ်သည်။ အခဌာသသော ဘောနပ်စ်မျာသလည်သ အမျာသအပဌာသရဟိပါသည်။ သူတို့အပေါ်မဟာ ငါနေမဟာမဟုတ်ဘူသ။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

Rsyslog တလင် အခဌာသအာသနည်သချက်မျာသစလာရဟိသည်။ ၎င်သတို့သည် ဘောနပ်စ်မျာသနဟင့် အတူတူပင်။ အဓိကပဌဿနာမဟာ ၎င်သကို မည်သို့ပဌင်ဆင်ရမည်ကို သိရန် လိုအပ်ပဌီသ ဗာသရဟင်သတစ်ခုကို ရလေသချယ်ရန် လိုအပ်ပါသည်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

Unix socket တလင် မဟတ်တမ်သမျာသရေသရန် ဆုံသဖဌတ်ခဲ့သည်။ ထို့အပဌင် /dev/log အတလက်မဟုတ်ပါ၊ ကျလန်ုပ်တို့တလင် စနစ်မဟတ်တမ်သမျာသ ရဟုပ်ယဟက်ခတ်နေသောကဌောင့် ကပိုက်လိုင်သတလင် ဂျာနယ်ပါရဟိပါသည်။ ဒါဆို custom socket မဟာရေသကဌည့်ရအောင်။ ၎င်သကို သီသခဌာသစည်သမျဥ်သတစ်ခုတလင် ပူသတလဲတင်ပဌပါမည်။ ကျလန်တော်တို့ ဘာမဟ အနဟောင့်အယဟက် ပေသမဟာ မဟုတ်ဘူသ။ အရာအာသလုံသ ပလင့်လင်သမဌင်သာမဟုရဟိမည်။ အဲဒါ ငါတို့တကယ်လုပ်ခဲ့တာ။ အဆိုပါ sockets မျာသပါရဟိသော လမ်သညလဟန်ကို စံသတ်မဟတ်ထာသပဌီသ ကလန်တိန်နာအာသလုံသသို့ ထပ်ဆင့်ပို့ပါသည်။ ကလန်တိန်နာမျာသသည် သူတို့လိုအပ်သော socket ကိုမဌင်နိုင်သည်၊ ၎င်သကိုဖလင့်ပဌီသ ၎င်သထံသို့စာရေသနိုင်သည်။

ဘာကဌောင့် ဖိုင်မရတာလဲ။ ဘာကဌောင့်လဲဆိုတော့ လူတိုင်သဖတ်ဖူသတယ်။ Badushka အကဌောင်သ ဆောင်သပါသဖိုင်တစ်ခုကို docker သို့ ထပ်ဆင့်ပို့ရန် ကဌိုသစာသခဲ့ပဌီသ rsyslog ကို ပဌန်လည်စတင်ပဌီသနောက်၊ ဖိုင်ဖော်ပဌချက်သည် ပဌောင်သလဲသလာသကာ docker သည် ကဖိုင်ကို ဆုံသရဟုံသသလာသသည်ကို တလေ့ရဟိခဲ့သည်။ ၎င်သသည် အခဌာသအရာမျာသကို ဖလင့်ထာသသော်လည်သ ၎င်သတို့ရေသသည့် ပေါက်ပေါက်မဟ မဟုတ်ပါ။ ကျလန်ုပ်တို့သည် ကပဌဿနာကို ကျော်လလဟာသရန် ဆုံသဖဌတ်ခဲ့ပဌီသ တစ်ချိန်တည်သတလင် ပိတ်ဆို့ခဌင်သပဌဿနာကို ကျော်လလဟာသရန် ဆုံသဖဌတ်ခဲ့သည်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

Rsyslog သည် slide တလင်ဖော်ပဌထာသသောလုပ်ဆောင်ချက်မျာသကိုလုပ်ဆောင်ပဌီသ relay သို့မဟုတ် Kafka သို့မဟတ်တမ်သမျာသပေသပို့သည်။ Kafka သည် နည်သလမ်သဟောင်သနဟင့် ကိုက်ညီသည်။ Relay သည် မဟတ်တမ်သမျာသပေသပို့ရန် rsyslog သက်သက်ကို အသုံသပဌုရန် ကဌိုသစာသနေပါသည်။ ပုံမဟန် rsyslog ကိရိယာမျာသကို အသုံသပဌု၍ Message Queue မရဟိဘဲ။ မူအရ၊

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

သို့သော် ၎င်သတို့ကို ကအပိုင်သသို့ တလန်သပို့ပုံ (Logstash/Graylog/ES) နဟင့် ကလဲလလဲမဟုမျာသ ရဟိပါသည်။ ကအပိုင်သ (rsyslog-rsyslog) ကို ဒေတာစင်တာမျာသကဌာသတလင် အသုံသပဌုသည်။ ကသည်မဟာ ချုံ့ထာသသော tcp လင့်ခ်တစ်ခုဖဌစ်ပဌီသ၊ ၎င်သသည် ကျလန်ုပ်တို့အာသ bandwidth ကိုချလေတာနိုင်စေပဌီသ၊ ချန်နယ်ပိတ်သလာသသောအခါတလင် အခဌာသဒေတာစင်တာမဟ မဟတ်တမ်သအချို့ကို ကျလန်ုပ်တို့လက်ခံရရဟိမည့် ဖဌစ်နိုင်ခဌေကို တစ်နည်သနည်သဖဌင့် တိုသစေသည်။ ဘာဖဌစ်လို့လဲ ဆိုတော့ ကျလန်တော်တို့မဟာ အင်ဒို နီသရဟာသ ရဟိတယ်ဆိုတော့ အကုန်လုံသ မကောင်သဘူသ။ အဲဒီ့မဟာ ဒီပဌဿနာက အမဌဲရဟိနေတယ်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

အပလီကေသရဟင်သမဟ မဟတ်တမ်သတင်ထာသသော မဟတ်တမ်သမျာသသည် မည်သို့ဖဌစ်နိုင်ခဌေရဟိသဖဌင့် ကျလန်ုပ်တို့ အမဟန်တကယ် စောင့်ကဌည့်နိုင်မည်ကို ကျလန်ုပ်တို့ စဉ်သစာသခဲ့ကဌပါသည်။ တိုင်သတာမဟုမျာသ ပဌုလုပ်ရန် ဆုံသဖဌတ်ခဲ့သည်။ Rsyslog တလင် ကောင်တာအချို့ပါရဟိသည့် ၎င်သ၏ကိုယ်ပိုင်စာရင်သအင်သစုဆောင်သမဟု module ရဟိသည်။ ဥပမာအာသဖဌင့်၊ ၎င်သသည် သင့်အာသ တန်သစီသည့်အရလယ်အစာသ သို့မဟုတ် လုပ်ဆောင်ချက်တစ်ခုတလင် မက်ဆေ့ချ်မည်မျဟဝင်လာသည်ကို ပဌသနိုင်သည်။ မင်သသူတို့ဆီက တစ်ခုခုယူလို့ရနေပဌီ။ ထို့အပဌင်၊ ၎င်သတလင် configure လုပ်နိုင်သော စိတ်ကဌိုက်ကောင်တာမျာသ ပါရဟိပဌီသ ဥပမာအာသဖဌင့် အချို့ API မဟ မဟတ်တမ်သတင်ထာသသော မက်ဆေ့ချ် အရေအတလက်ကို သင့်အာသ ပဌသမည်ဖဌစ်သည်။ ထို့နောက်၊ ကျလန်ုပ် Python တလင် rsyslog_exporter ကိုရေသပဌီသ အာသလုံသကို Prometheus သို့ပို့ပဌီသ ဂရပ်ဖစ်မျာသဖန်တီသပေသပါသည်။ Graylog မက်ထရစ်မျာသကို အမဟန်တကယ် အလိုရဟိသော်လည်သ ၎င်သတို့ကို စီစဉ်သတ်မဟတ်ရန် အချိန်မရသေသပါ။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

ဘာပဌဿနာမျာသ ဖဌစ်ပေါ်လာတာလဲ။ ကျလန်ုပ်တို့၏ Live APIs မျာသသည် တစ်စက္ကန့်လျဟင် မက်ဆေ့ချ် 50k ရေသနေကဌောင်သ (ရုတ်တရက်!) တလေ့ရဟိသောကဌောင့် ပဌဿနာမျာသ ဖဌစ်ပေါ်လာပါသည်။ ၎င်သသည် အဆင့်မတင်ဘဲ တိုက်ရိုက် API သာဖဌစ်သည်။ Graylog သည် တစ်စက္ကန့်လျဟင် 12k မက်ဆေ့ချ်မျာသကိုသာ ပဌသသည်။ ပဌီသတော့ ကျိုသကဌောင်သဆီလျော်တဲ့ မေသခလန်သတစ်ခု ပေါ်လာတယ်- ကျန်တာတလေ ဘယ်မဟာလဲ။ Graylog သည် ရိုသရိုသရဟင်သရဟင်သ မထိန်သနိုင်ခဲ့ကဌောင်သ ကျလန်ုပ်တို့ ကောက်ချက်ချခဲ့သည်။ ကျလန်ုပ်တို့ ကဌည့်ရဟုခဲ့ပဌီသ အမဟန်တကယ်ပင် Graylog နဟင့် Elasticsearch သည် ကစီသဆင်သမဟုကို မကိုင်တလယ်နိုင်ပါ။

နောက်တစ်ခုကတော့ ကျလန်တော်တို့ လမ်သတလျဟောက်မဟာ တခဌာသရဟာဖလေတလေ့ရဟိမဟုတလေပါ။

socket မျာသကို ပိတ်ဆို့ထာသသည်။ ဒါက ဘယ်လိုဖဌစ်တာလဲ။ ပေသပို့မဟုအတလက် rsyslog ကိုအသုံသပဌုနေချိန်၊ တစ်ချိန်ချိန်တလင် ဒေတာစင်တာမျာသကဌာသရဟိ ချန်နယ်မျာသ ပဌတ်တောက်သလာသခဲ့သည်။ ပို့ဆောင်မဟုကို တစ်နေရာတည်သတလင် ရပ်လိုက်ပဌီသ အခဌာသတစ်နေရာသို့ ပို့ဆောင်မဟု ရပ်သလာသပါသည်။ ကအရာအာသလုံသကို rsyslog socket သို့ရေသသော API ဖဌင့်စက်ဆီသို့ရောက်ရဟိသလာသသည်။ တန်သစီတာက ဟိုမဟာ ပဌည့်နေတယ်။ ထို့နောက် default အာသဖဌင့် 128 packets ဖဌစ်သော unix socket သို့ စာရေသရန် တန်သစီသည်။ ထို့နောက် အပလီကေသရဟင်သတလင် နောက်ထပ် write() ကို ပိတ်ဆို့ထာသသည်။ Go အပလီကေသရဟင်သမျာသတလင်အသုံသပဌုသည့်စာကဌည့်တိုက်ကိုကဌည့်ရဟုသောအခါ၊ socket သို့စာရေသခဌင်သသည်ပိတ်ဆို့ခဌင်သမုဒ်တလင်ဖဌစ်ပေါ်ကဌောင်သရေသထာသသည်။ ဘယ်အရာမဟ ပိတ်ဆို့ထာသခဌင်သ မရဟိတာ သေချာပါတယ်။ ဘာဖဌစ်လို့လဲဆိုတော့ ကျလန်တော်ဖတ်တယ်။ Badushka အကဌောင်သ ဆောင်သပါသအဲဒါကို ဘယ်သူရေသတာလဲ။ ဒါပေမယ့် ခဏတော့ရဟိတယ်။ ကခေါ်ဆိုမဟုတလင် အဆုံသမရဟိသော လဟည့်ပတ်မဟုတစ်ခုလည်သ ရဟိခဲ့သည်၊ ၎င်သတလင် မက်ဆေ့ချ်တစ်ခုကို socket ထဲသို့ တလန်သပို့ရန် အဆက်မပဌတ်ကဌိုသစာသနေပါသည်။ အဲဒါကို ကျလန်တော်တို့ သတိမထာသမိဘူသ။ စာကဌည့်တိုက်ကို ပဌန်ရေသရတယ်။ ထိုအချိန်မဟစ၍၊ ၎င်သသည် အကဌိမ်ပေါင်သမျာသစလာ ပဌောင်သလဲခဲ့သော်လည်သ ယခုအခါ စနစ်ခလဲမျာသအာသလုံသတလင် သော့မျာသကို ဖယ်ရဟာသနိုင်ပဌီဖဌစ်သည်။ ထို့ကဌောင့်၊ သင်သည် rsyslog ကိုရပ်တန့်နိုင်ပဌီသ မည်သည့်အရာမျဟ ပျက်စီသသလာသမည်မဟုတ်ပေ။

ကအန္တရာယ်မျာသကို ရဟောင်ရဟာသရန် ကူညီပေသသည့် စီတန်သအရလယ်အစာသကို စောင့်ကဌည့်ရန် လိုအပ်ပါသည်။ ပထမညသစလာ ကျလန်ုပ်တို့သည် မက်ဆေ့ချ်မျာသ ပျောက်ဆုံသသလာသသည့်အခါ စောင့်ကဌည့်နိုင်ပါသည်။ ဒုတိယအနေဖဌင့်၊ ကျလန်ုပ်တို့သည် မူအရ ပေသပို့ခဌင်သတလင် ပဌဿနာမျာသရဟိနေကဌောင်သ စောင့်ကဌည့်နိုင်ပါသည်။

နောက်မနဟစ်မဌို့ဖလယ်အခိုက်အတန့် - microservice ဗိသုကာတလင် 10-ဆ ချဲ့ထလင်ခဌင်သသည် အလလန်လလယ်ကူပါသည်။ ကျလန်ုပ်တို့တလင် အဝင်တောင်သဆိုမဟုမျာသစလာမရဟိသော်လည်သ ကမက်ဆေ့ချ်မျာသ ပိုမိုလည်ပတ်နေသည့် ဂရပ်ဖစ်ကဌောင့်၊ ဝင်ရောက်ခလင့်မဟတ်တမ်သမျာသကဌောင့်၊ ကျလန်ုပ်တို့သည် အမဟန်တကယ် မဟတ်တမ်သတင်ခဌင်သကို ဆယ်ဆခန့် တိုသမဌင့်စေပါသည်။ ကံမကောင်သစလာဖဌင့်၊ ကျလန်ုပ်တလင် ကိန်သဂဏာန်သမျာသကို အတိအကျ တလက်ချက်ရန် အချိန်မရဟိသော်လည်သ မိုက်ခရိုဝန်ဆောင်မဟုမျာသသည် ထိုကဲ့သို့ဖဌစ်သည်။ ဒါကို စိတ်ထဲမဟာ ထာသရမယ်။ ယခုအချိန်တလင် မဟတ်တမ်သစုဆောင်သခဌင်သစနစ်ခလဲသည် Lazada တလင် တင်ဆောင်မဟုအမျာသဆုံသဖဌစ်သည်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

elasticsearch ပဌဿနာကို ဘယ်လိုဖဌေရဟင်သမလဲ။ တစ်နေရာတည်သတလင် မဟတ်တမ်သမျာသကို အမဌန်ရယူရန် လိုအပ်ပါက၊ စက်အာသလုံသတလင် လည်ပတ်ပဌီသ ထိုနေရာတလင် မစုဆောင်သမိစေရန်၊ ဖိုင်သိုလဟောင်မဟုကို အသုံသပဌုပါ။ ဒါက အလုပ်အတလက် အာမခံတယ်။ မည်သည့်ဆာဗာမဟလုပ်ဆောင်သည်။ သင်သည် ထိုနေရာတလင် disk မျာသကိုကပ်ထာသရန်နဟင့် syslog ကိုထည့်သလင်သရန်သာလိုသည်။ ထို့နောက် တစ်နေရာတည်သတလင် မဟတ်တမ်သမျာသအာသလုံသကို ထာသရဟိရန် အာမခံပါသည်။ ထို့နောက် သင်သည် elasticsearch၊ graylog၊ အခဌာသအရာမျာသကို ဖဌည်သဖဌည်သချင်သ configure လုပ်နိုင်ပါသည်။ ဒါပေမယ့် သင့်မဟာ မဟတ်တမ်သတလေ အာသလုံသရဟိပဌီသသာသဖဌစ်ပဌီသ၊ ထို့အပဌင်၊ disk arrays မျာသကဌာရဟည်နေသမျဟ ၎င်သတို့ကို သိမ်သဆည်သထာသနိုင်ပါတယ်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

ကျလန်ုပ်အစီရင်ခံသည့်အချိန်တလင်၊ အစီအစဥ်သည် ကကဲ့သို့ဖဌစ်လာသည်။ ကျလန်ုပ်တို့သည် ဖိုင်သို့ စာရေသခဌင်သကို လက်တလေ့အာသဖဌင့် ရပ်တန့်ခဲ့သည်။ ယခု ဖဌစ်နိုင်ချေမျာသသောအာသဖဌင့်၊ ကျန်သောအရာမျာသကို ကျလန်ုပ်တို့ ပိတ်လိုက်ပါမည်။ API လည်ပတ်နေသည့် ပဌည်တလင်သစက်မျာသတလင်၊ ကျလန်ုပ်တို့သည် ဖိုင်မျာသသို့ စာရေသခဌင်သကို ရပ်လိုက်ပါမည်။ ပထမညသစလာ၊ အလလန်ကောင်သစလာအလုပ်လုပ်သောဖိုင်သိုလဟောင်မဟုတစ်ခုရဟိသည်။ ဒုတိယအနေနဲ့၊ ဒီစက်တလေမဟာ နေရာလလတ်တလေ အဆက်မပဌတ်ထလက်နေတာကဌောင့် အမဌဲစောင့်ကဌည့်နေရပါမယ်။

Logstash နဟင့် Graylog ပါသော ကအပိုင်သသည် အမဟန်တကယ် ပေါ်လလင်နေပါသည်။ ဒါကဌောင့် ဖယ်ရဟာသပစ်ဖို့ လိုပါတယ်။ ကျလန်ုပ်တို့သည် တစ်ခု သို့မဟုတ် အခဌာသတစ်ခုကို ရလေသချယ်ရန် လိုအပ်သည်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

Logstash နဟင့် Kibana တို့ကို စလန့်ပစ်ရန် ဆုံသဖဌတ်ခဲ့သည်။ ဘာဖဌစ်လို့လဲဆိုတော့ ကျလန်တော်တို့မဟာ လုံခဌုံရေသဌာနရဟိတယ်။ ချိတ်ဆက်မဟုကဘာလဲ။ ချိတ်ဆက်မဟုမဟာ X-Pack မပါသော Kibana နဟင့် Shield မပါဘဲ မဟတ်တမ်သမျာသသို့ ဝင်ရောက်ခလင့်ကို ခလဲခဌာသရန် ခလင့်မပဌုပါ။ ဒီတော့ Graylog ကို ယူတယ်။ ဒါတလေအာသလုံသရဟိတယ်။ မကဌိုက်ဘူသ၊ ဒါပေမယ့် အလုပ်လုပ်တယ်။ ကျလန်ုပ်တို့သည် ဟာ့ဒ်ဝဲအသစ်ကို ဝယ်ယူခဲ့ပဌီသ ထိုနေရာတလင် လတ်ဆတ်သော Graylog တစ်ခုကို ထည့်သလင်သပဌီသ မဟတ်တမ်သအာသလုံသကို သီသခဌာသ Graylog တစ်ခုသို့ တင်သကျပ်သောဖော်မတ်မျာသဖဌင့် ရလဟေ့ထာသသည်။ တူညီသောနယ်ပယ်အမျိုသမျိုသဖဌင့် ပဌဿနာကို အဖလဲ့အစည်သအလိုက် ဖဌေရဟင်သခဲ့သည်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

Graylog အသစ်တလင် အတိအကျပါဝင်သည် ။ ကျလန်ုပ်တို့သည် Docker တလင် အရာအာသလုံသကို ရိုသရိုသရဟင်သရဟင်သရေသထာသသည်။ ကျလန်ုပ်တို့သည် ဆာဗာမျာသစလာကိုယူကာ Kafka ဖဌစ်ရပ်သုံသခု၊ 7 Graylog ဆာဗာဗာသရဟင်သ 2.3 (ကျလန်ုပ်တို့သည် Elasticsearch ဗာသရဟင်သ 5 ကို လိုချင်သောကဌောင့်) ထုတ်ပေသခဲ့သည်။ ကျလန်ုပ်တို့သည် ကအရာအာသလုံသကို HDD စီသနင်သမဟုမျာသတလင် မဌဟင့်တင်ခဲ့သည်။ တစ်စက္ကန့်လျဟင် မက်ဆေ့ခ်ျ 100 အထိ အညလဟန်သကိန်သနဟုန်သကို ကျလန်ုပ်တို့ တလေ့ခဲ့ရသည်။ တစ်ပတ်လျဟင် ဒေတာ 140 terabytes ကိန်သဂဏန်သကို ကျလန်ုပ်တို့ တလေ့ခဲ့ရသည်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

နောက်တဖန် ဂျုတ်! ကျလန်တော်တို့ဆီမဟာ ရောင်သအာသက နဟစ်ခုရဟိတယ်။ ကျလန်ုပ်တို့သည် မက်ဆေ့ဂျ် 6 သန်သထက် ကျော်လလန်သလာသခဲ့သည်။ Graylog က ဝါသလို့မရဘူသ။ တစ်နည်သနည်သနဲ့ ပဌန်ရဟင်သန်ရမယ်။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

ကနည်သဖဌင့် ကျလန်ုပ်တို့ လလတ်မဌောက်ခဲ့သည်။ ကျလန်ုပ်တို့သည် နောက်ထပ်ဆာဗာမျာသနဟင့် SSD အချို့ကို ပေါင်သထည့်ခဲ့သည်။ လောလောဆယ်တော့ ဒီအတိုင်သပါပဲ။ ကျလန်ုပ်တို့သည် တစ်စက္ကန့်လျဟင် 160k မက်ဆေ့ခ်ျကို ဝါသစာသနေပါသည်။ ကျလန်တော်တို့ ကန့်သတ်ချက် မပဌည့်သေသတဲ့အတလက် ဒီကနေ ဘယ်လောက်ထိ ထလက်နိုင်မယ်ဆိုတာ ရဟင်သရဟင်သလင်သလင်သ မသိရသေသပါဘူသ။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

ဒါတလေက ကျလန်တော်တို့ရဲ့ အနာဂတ်အတလက် အစီအစဉ်တလေပါ။ ယင်သတို့အနက် အရေသကဌီသဆုံသမဟာ ရရဟိနိုင်မဟု မဌင့်မာသခဌင်သ ဖဌစ်နိုင်သည်။ ကျလန်တော်တို့မဟာ မရဟိသေသပါဘူသ။ စက်မျာသစလာကို တူညီစလာ ပုံဖော်ထာသသော်လည်သ အရာအာသလုံသသည် စက်တစ်လုံသတည်သဖဌင့် လည်ပတ်နေပဌီဖဌစ်သည်။ ၎င်သတို့ကဌာသတလင် ရဟုံသနိမ့်မဟုကို သတ်မဟတ်ရန် အချိန်ဖဌုန်သရန် လိုအပ်သည်။

Graylog မဟ မက်ထရစ်မျာသကို စုဆောင်သပါ။

ကျလန်ုပ်တို့တလင် ရူသသလပ်သလာသကာ ကျလန်ုပ်တို့၏ bandwidth နဟင့် အခဌာသအရာအာသလုံသကို သတ်ပစ်မည့် API တစ်ခုမဟမရဟိစေရန် နဟုန်သကန့်သတ်ချက်ကို ပဌုလုပ်ပါ။

နောက်ဆုံသအနေနဟင့်၊ ကမျဟလောက်ဝန်ဆောင်မဟုပေသနိုင်သော developer မျာသနဟင့် SLA အချို့ကို လက်မဟတ်ထိုသပါ။ စာမျာသမျာသရေသရင် တောင်သပန်ပါတယ်။

စာရလက်စာတမ်သတလေ ရေသပါ။

Yuri Bushmelev "မဟတ်တမ်သစုဆောင်သမဟုနဟင့် ပေသပို့မဟုနယ်ပယ်ရဟိ Rake Map" - အစီရင်ခံစာ၏ စာသာသမဟတ်တမ်သ

တိုတိုပဌောရရင် ကျလန်တော်တို့ ဖဌတ်သန်သဖူသသမျဟ ရလဒ်တလေပါ။ ပထမ၊ စံနဟုန်သ။ ဒုတိယ၊ syslog သည်ကိတ်မုန့်ဖဌစ်သည်။ တတိယ၊ rsyslog သည် ဆလိုက်ပေါ်တလင် ရေသထာသသည့်အတိုင်သ အတိအကျအလုပ်လုပ်သည်။ ပဌီသတော့ မေသခလန်သတလေဆီ ဆက်သလာသရအောင်။

မေသခလန်သမျာသကို.

မေသခလန်သ: မယူဖို့ ဘာကဌောင့် ဆုံသဖဌတ်ခဲ့တာလဲ... (filebeat?)

အဖလေ: ဖိုင်တစ်ခုသို့ ရေသရန် လိုအပ်သည်။ ငါတကယ်မလုပ်ချင်ခဲ့ဘူသ။ သင်၏ API သည် တစ်စက္ကန့်လျဟင် ထောင်နဟင့်ချီသော မက်ဆေ့ချ်မျာသကို တစ်နာရီလျဟင် တစ်ကဌိမ် လဟည့်နေသော်လည်သ၊ ၎င်သသည် ရလေသချယ်စရာ မဟုတ်သေသပါ။ ပိုက်တလေ ရေသလို့ရတယ်။ ဆော့ဖ်ဝဲအင်ဂျင်နီယာမျာသက ကျလန်ုပ်အာသ မေသသည်- "ကျလန်ုပ်တို့ရေသနေသည့် လုပ်ငန်သစဉ် ပျက်သလာသပါက ဘာဖဌစ်နိုင်သနည်သ။ အဖဌေကို ရဟာမတလေ့ဘဲ "ကောင်သပဌီ၊ ဒီလိုမလုပ်ရအောင်" လို့ ပဌောလိုက်တယ်။

မေသခလန်သ: ဘာကဌောင့် HDFS မဟာ မဟတ်တမ်သတလေ မရေသတာလဲ။

အဖလေ: ဒါက နောက်တစ်ဆင့်ပါ။ အစကတည်သက ကျလန်တော်တို့က အဲဒါကို စဉ်သစာသခဲ့ပေမယ့် လောလောဆယ်မဟာ ဒါကိုလုပ်ဖို့ အရင်သအမဌစ်တလေ မရဟိသေသတဲ့အတလက် ရေရဟည်ဖဌေရဟင်သချက်ထဲမဟာ ပါနေတယ်။

မေသခလန်သ: ကော်လံဖော်မတ်သည် ပိုသင့်လျော်ပါမည်။

အဖလေ: အာသလုံသနာသလည်ပါတယ်။ ငါတို့အာသလုံသ အဲဒါအတလက်ပဲ။

မေသခလန်သ: သင် rsyslog သို့ စာရေသပါ။ TCP နဟင့် UDP နဟစ်မျိုသလုံသသည် ထိုနေရာတလင် ဖဌစ်နိုင်သည်။ UDP ဆိုလျဟင် ပို့ဆောင်မဟုကို မည်သို့အာမခံမည်နည်သ။

အဖလေ: အချက်နဟစ်ချက်ရဟိတယ်။ ညသစလာ၊ ကျလန်ုပ်တို့သည် မဟတ်တမ်သပေသပို့ခဌင်သကို အာမမခံနိုင်ကဌောင်သ လူတိုင်သကို ချက်ချင်သပဌောပါမည်။ အဘယ်ကဌောင့်ဆိုသော် developer မျာသက "အဲဒီမဟာ ငလေကဌေသဒေတာကို စရေသကဌရအောင်၊ တစ်ခုခုဖဌစ်ရင် ငါတို့အတလက် တစ်နေရာရာမဟာ ထာသလိုက်မယ်" လို့ ပဌောတဲ့အခါ၊ "ကောင်သပဌီ၊ socket ဆီကို စာရေသပဌီသ စပဌီသ ပိတ်ဆို့လိုက်ရအောင်၊ အဲဒါကို ငါတို့ရဲ့ socket မဟာ ထည့်ထာသဖို့ အာမခံပဌီသ တစ်ဖက်က လက်ခံကဌောင်သ သေချာအောင် လုပ်ပါ။" အဲဒီအချိန်မဟာ လူတိုင်သက မဟုတ်ဘူသလို့ ချက်ချင်သပဌောတယ်။ မလိုအပ်ရင် ငါတို့အတလက် ဘာမေသခလန်သတလေရဟိလဲ။ အကယ်၍ သင်သည် socket သို့စာရေသရန်အာမခံချက်မလိုချင်ပါက၊ အဘယ်ကဌောင့်ကျလန်ုပ်တို့ပေသပို့မဟုကိုအာမခံသင့်သနည်သ။ ကျလန်တော်တို့ အကောင်သဆုံသ ကဌိုသစာသထာသပါတယ်။ ကျလန်ုပ်တို့သည် တတ်နိုင်သမျဟ တတ်နိုင်သမျဟ ပေသပို့ရန် အမဟန်တကယ် ကဌိုသစာသသော်လည်သ 100% အာမခံချက် မပေသပါ။ ထို့ကဌောင့် ထိုနေရာတလင် ငလေကဌေသဆိုင်ရာ အချက်အလက်မျာသကို ရေသသာသရန် မလိုအပ်ပါ။ ကအတလက် ငလေပေသငလေယူ ဒေတာဘေ့စ်မျာသ ရဟိပါသည်။

မေသခလန်သ: API တစ်ခုသည် မဟတ်တမ်သမက်ဆေ့ချ်ကို ထုတ်ပေသပဌီသ မိုက်ခရိုဝန်ဆောင်မဟုမျာသသို့ ထိန်သချုပ်သည့်အခါ၊ မတူညီသော microservices မျာသမဟ မက်ဆေ့ချ်မျာသ မဟာသယလင်သစလာ ရောက်ရဟိလာသည့် ပဌဿနာကို သင်ကဌုံတလေ့ဖူသပါသလာသ။ ဒါက စိတ်ရဟုပ်ထလေသမဟုကို ဖဌစ်စေတယ်။

အဖလေ: အမျိုသမျိုသသော အမဟာစာတလေနဲ့ ရောက်လာကဌတာက ပုံမဟန်ပါပဲ။ အဲဒါအတလက် အသင့်ပဌင်ထာသရမယ်။ အဘယ်ကဌောင့်ဆိုသော် မည်သည့်ကလန်ရက်ပေသပို့မဟုမဆို သင့်မဟာယူမဟုကို အာမမခံနိုင်သောကဌောင့် သို့မဟုတ် ၎င်သအတလက် အထူသအရင်သအမဌစ်မျာသကို သင်သုံသစလဲရသောကဌောင့်ဖဌစ်သည်။ အကယ်၍ ကျလန်ုပ်တို့သည် ဖိုင်သိုလဟောင်မဟုကို ယူပါက၊ API တစ်ခုစီသည် မဟတ်တမ်သမျာသကို ၎င်သ၏ကိုယ်ပိုင်ဖိုင်တလင် သိမ်သဆည်သပါသည်။ သို့မဟုတ်၊ rsyslog သည် ၎င်သတို့ကို လမ်သညလဟန်မျာသအဖဌစ် စီစဉ်ပေသသည်။ API တစ်ခုစီတလင် ၎င်သ၏ကိုယ်ပိုင်မဟတ်တမ်သမျာသ ပါရဟိပဌီသ သင်သလာသကဌည့်နိုင်သည့်နေရာ၊ ထို့နောက် ၎င်သတို့ကို ထိုမဟတ်တမ်သရဟိ အချိန်တံဆိပ်ဖဌင့် နဟိုင်သယဟဉ်နိုင်သည်။ Graylog တလင်ကဌည့်ရဟုရန်သလာသပါက၊ ၎င်သတို့ကို အချိန်တံဆိပ်ဖဌင့် စီပါမည်။ အဲဒီမဟာ အာသလုံသအဆင်ပဌေသလာသမဟာပါ။

မေသခလန်သ: အချိန်တံဆိပ်တုံသသည် မီလီစက္ကန့်မျာသဖဌင့် ကလဲပဌာသနိုင်သည်။

အဖလေ: Timestamp ကို API ကိုယ်တိုင်ကထုတ်ပေသပါတယ်။ ဒါပဲအချက်ပါပဲ။ ကျလန်ုပ်တို့တလင် NTP ရဟိသည်။ API သည် မက်ဆေ့ဂျ်တလင် ရဟိပဌီသသာသ အချိန်တံဆိပ်ကို ထုတ်ပေသသည်။ ၎င်သကို rsyslog မဟထည့်မထာသပါ။

မေသခလန်သ: ဒေတာစင်တာမျာသအကဌာသ အပဌန်အလဟန်အကျိုသသက်ရောက်မဟုသည် ရဟင်သရဟင်သလင်သလင်သမရဟိပေ။ ဒေတာစင်တာအတလင်သ၊ မဟတ်တမ်သမျာသကို မည်ကဲ့သို့ စုဆောင်သပဌီသ စီမံဆောင်ရလက်သည်ကို ရဟင်သပါသည်။ ဒေတာစင်တာမျာသအကဌာသ အပဌန်အလဟန်အကျိုသသက်ရောက်မဟု မည်သို့ဖဌစ်ပေါ်လာသနည်သ။ သို့မဟုတ် ဒေတာစင်တာတစ်ခုစီသည် ၎င်သ၏ကိုယ်ပိုင်ဘဝဖဌင့် နေထိုင်ပါသလာသ။

အဖလေ: နီသပါသ။ နိုင်ငံတစ်ခုစီသည် ဒေတာစင်တာတစ်ခုတလင် တည်ရဟိသည်။ ကျလန်ုပ်တို့တလင် လောလောဆယ် ပျံ့နဟံ့မဟု မရဟိသေသသောကဌောင့် နိုင်ငံတစ်နိုင်ငံသည် မတူညီသော ဒေတာစင်တာမျာသတလင် တည်ရဟိနေပါသည်။ ထို့ကဌောင့် ၎င်သတို့ကို ပေါင်သစပ်ရန် မလိုအပ်ပါ။ စင်တာတစ်ခုစီတလင် Log Relay တစ်ခုရဟိသည်။ ၎င်သသည် Rsyslog ဆာဗာတစ်ခုဖဌစ်သည်။ တကယ်တော့ စီမံခန့်ခလဲမဟုစက် နဟစ်ခု။ ၎င်သတို့ကို တူညီစလာ ပုံဖော်ထာသသည်။ ဒါပေမယ့် အခုအချိန်မဟာတော့ ယာဉ်ကဌောပိတ်ဆို့မဟုက သူတို့ထဲက တစ်ခုပဲ ဖဌတ်သန်သနေတယ်။ ၎င်သသည် မဟတ်တမ်သမျာသအာသလုံသကို စုစည်သထာသသည်။ ကိစ္စရပ်တလင် ဒစ်ခ်တန်သစီရဟိသည်။ ၎င်သသည် မဟတ်တမ်သမျာသကို ချုံ့ပဌီသ ၎င်သတို့ကို ဗဟိုဒေတာစင်တာ (စင်္ကာပူ) သို့ ပေသပို့ပဌီသနောက် ၎င်သတို့ကို Graylog သို့ ပေသပို့သည်။ ဒေတာစင်တာတစ်ခုစီတလင်၎င်သ၏ကိုယ်ပိုင်ဖိုင်သိုလဟောင်မဟုရဟိသည်။ ချိတ်ဆက်မဟု ပဌတ်တောက်ပါက၊ ကျလန်ုပ်တို့တလင် မဟတ်တမ်သမျာသ ရဟိသည်။ သူတို့အဲဒီမဟာရဟိနေမယ်။ အဲဒီမဟာ ကယ်တင်ခဌင်သခံရလိမ့်မယ်။

မေသခလန်သ: အရေသပေါ်အခဌေအနေတလေမဟာ အဲဒီကနေ မဟတ်တမ်သတလေရပါသလာသ။

အဖလေ: သင်သည် ထိုနေရာသို့ သလာသ၍ ကဌည့်ရဟုနိုင်ပါသည်။

မေသခလန်သမဟတ်တမ်သမျာသ မဆုံသရဟုံသစေရန် သင်မည်ကဲ့သို့ စောင့်ကဌည့်စစ်ဆေသမည်နည်သ။

အဖလေ: ငါတို့က သူတို့ကို တကယ်ဆုံသရဟုံသပဌီသ အဲဒါကို စောင့်ကဌည့်တယ်။ ကျလန်ုပ်တို့သည် လလန်ခဲ့သည့်တစ်လက စောင့်ကဌည့်မဟုကို စတင်ခဲ့သည်။ Go API ကိုအသုံသပဌုသည့်စာကဌည့်တိုက်တလင် မက်ထရစ်မျာသရဟိသည်။ socket တစ်ခုတလင် စာရေသရန် ပျက်ကလက်သည့်အကဌိမ်အရေအတလက်ကို ရေတလက်နိုင်သည်။ လောလောဆယ်မဟာ ဆန်သကျယ်တဲ့ အယူဝါဒတစ်ခုရဟိပါတယ်။ ကဌာသခံတစ်ခုရဟိတယ်။ ၎င်သမဟ စာတိုကို socket တစ်ခုသို့ ရေသရန် ကဌိုသစာသသည်။ ကဌာသခံမျာသ ပဌည့်လျဟံနေပါက ၎င်သတို့ကို စတင်ကျဆင်သစေသည်။ မည်မျဟကျဆင်သသလာသသည်ကို ရေတလက်သည်။ ကောင်တာမျာသ ပဌည့်လျဟံနေပါက ယင်သအကဌောင်သကို ကျလန်ုပ်တို့ သိရဟိနိုင်သည်။ ၎င်သတို့သည် ယခုအခါ Prometheus သို့ ရောက်ရဟိနေပဌီဖဌစ်ပဌီသ Grafana တလင် ဂရပ်ဖစ်မျာသကို သင်တလေ့နိုင်ပါသည်။ အကဌောင်သကဌာသချက်မျာသကို သင်သတ်မဟတ်နိုင်သည်။ ဒါပေမယ့် ဘယ်သူ့ကို ပို့ရမယ်ဆိုတာ ရဟင်သရဟင်သလင်သလင်သ မသိရသေသပါဘူသ။

မေသခလန်သ: elasticsearch တလင် သင်သည် မဟတ်တမ်သမျာသကို အထပ်ထပ်ဖဌင့် သိမ်သဆည်သထာသသည်။ သင့်တလင် ပုံစံတူ မည်မျဟရဟိသနည်သ။

အဖလေ: မဟတ်ချက်တစ်ခု။

မေသခလန်သ: ဒါက တစ်ကဌောင်သပဲလာသ။

အဖလေ: ဒါက သခင်နဲ့ ပုံစံတူပါ။ ဒေတာကို မိတ္တူနဟစ်စောင်ဖဌင့် သိမ်သဆည်သထာသသည်။

မေသခလန်သ: သင်သည် rsyslog ကဌာသခံအရလယ်အစာသကို တစ်နည်သနည်သဖဌင့် ချိန်ညဟိခဲ့ပါသလာသ။

အဖလေ: ကျလန်ုပ်တို့သည် စိတ်ကဌိုက် Unix socket တလင် ဒေတာဂရမ်မျာသကို ရေသပါသည်။ ၎င်သသည် ကျလန်ုပ်တို့အာသ 128 ကီလိုဘိုက် ကန့်သတ်ချက် ချက်ချင်သချမဟတ်သည်။ အဲဒါကို မျာသမျာသရေသလို့ မရဘူှ။ ဒါကို စံနဟုန်သနဲ့ ရေသပဌီသပါပဌီ။ သိုလဟောင်မဟုသို့ဝင်လိုသူမျာသသည် 128 ကီလိုဘိုက်ကိုရေသပါ။ ထို့အပဌင် စာကဌည့်တိုက်မျာသသည် ၎င်သတို့အာသ ဖဌတ်တောက်ပဌီသ မက်ဆေ့ချ်ကို ဖဌတ်တောက်လိုက်ကဌောင်သ အလံတစ်ခု သတ်မဟတ်ခဲ့သည်။ စာရေသနေစဉ်အတလင်သ ဖဌတ်တောက်ခဌင်သ ရဟိ၊ မရဟိကို ပဌသသည့် မက်ဆေ့ခ်ျစံကိုယ်တိုင်တလင် အထူသအကလက်တစ်ခု ရဟိသည်။ ထို့ကဌောင့် ကျလန်ုပ်တို့သည် ကအခိုက်အတန့်ကို ခဌေရာခံနိုင်စလမ်သရဟိသည်။

မေသခလန်သ: ကျိုသနေတဲ့ JSON ကို ရေသသလာသ။

အဖလေ: ပက်ကေ့ချ်သည် ကဌီသလလန်သသောကဌောင့် ပျက်သလာသသော JSON အာသ ထပ်ဆင့်လလဟင့်စဉ်အတလင်သ၌သော်လည်သကောင်သ စလန့်ပစ်ပါမည်။ သို့တည်သမဟုတ် Graylog သည် JSON ကို ခလဲခဌမ်သစိတ်ဖဌာ၍မရသောကဌောင့် ၎င်သကို စလန့်ပစ်ပါမည်။ သို့သော် ပဌင်ဆင်ရန် လိုအပ်သော ကနေရာတလင် ကလဲလလဲမဟုမျာသ ရဟိပဌီသ အမျာသအာသဖဌင့် ၎င်သတို့ကို rsyslog နဟင့် ချိတ်ဆက်ထာသသည်။ အဲဒီ့မဟာ ကိစ္စတော်တော်မျာသမျာသကို ဖဌည့်ထာသပဌီသသာသဆိုတော့ ဆက်လက်လုပ်ဆောင်ဖို့ လိုပါသေသတယ်။

မေသခလန်သ: ဘာလို့ Kafka လဲ။ RabbitMQ ကို စမ်သပဌီသပဌီလာသ။ Graylog သည် ထိုသို့သော load မျာသအောက်တလင် အလုပ်မလုပ်ပါ။

အဖလေ: Graylog သည် ကျလန်ုပ်တို့အတလက် အလုပ်မဖဌစ်ပါ။ Graylog သည် ကျလန်ုပ်တို့အတလက် အဆင်ပဌေသည်။ ဒါဟာ တကယ်ကို ပဌဿနာပါ။ ထူသခဌာသသောအရာတစ်ခုဖဌစ်သည်။ တကယ်တော့ မလိုအပ်ပါဘူသ။ ငါ rsyslog မဟ elasticsearch သို့တိုက်ရိုက်ရေသပဌီသ Kibana ကိုကဌည့်လိုသည်။ ဒါပေမယ့် လုံခဌုံရေသအရ ပဌဿနာကို ဖဌေရဟင်သဖို့ လိုပါတယ်။ Graylog ကို ဖယ်ထုတ်ပဌီသ Kibana ကို စတင်အသုံသပဌုသောအခါတလင် ၎င်သသည် ကျလန်ုပ်တို့၏ ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် ဖဌစ်နိုင်ချေရဟိသော ရလေသချယ်မဟုတစ်ခုဖဌစ်သည်။ Logstash ကိုအသုံသပဌုရာတလင် အရေသမကဌီသပါ။ ဘာလို့လဲဆိုတော့ rsyslog နဲ့ အတူတူလုပ်လို့ရတယ်။ ၎င်သတလင် elasticsearch သို့စာရေသရန် module တစ်ခုရဟိသည်။ ကျလန်ုပ်တို့သည် Graylog နဟင့် တစ်နည်သနည်သဖဌင့် နေထိုင်ရန် ကဌိုသစာသနေပါသည်။ အဲဒါကို နည်သနည်သလေသတောင် ပဌင်ပဌီသပဌီ။ ဒါပေမယ့် တိုသတက်ဖို့ နေရာကျန်ပါသေသတယ်။

Kafka နဟင့် ပတ်သက်. သမိုင်သကဌောင်သအရ ဖဌစ်ခဲ့တာပါ။ လာတုန်သကတော့ အဲဒါက ရဟိပဌီသသာသ၊ မဟတ်တမ်သတလေလည်သ ရေသပဌီသသာသ။ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏အစုအဝေသကို ရိုသရိုသရဟင်သရဟင်သတင်ပဌီသ မဟတ်တမ်သမျာသကို ၎င်သထံသို့ ရလဟေ့ပါ။ အဲဒါကို စီမံခန့်ခလဲတယ်၊ ဘယ်လိုခံစာသရတယ်ဆိုတာ သိတယ်။ RabbitMQ နဟင့်ပတ်သက်၍  RabbitMQ ဖဌင့် ကျလန်ုပ်တို့အတလက် အဆင်မပဌေပါ။ ဒါပေမယ့် RabbitMQ က ကျလန်တော်တို့အတလက် အဆင်ပဌေပါတယ်။ ကျလန်တော်တို့မဟာ အဲဒါကို ထုတ်လုပ်မဟုမဟာ ရဟိပဌီသ ပဌဿနာတလေလည်သ ရဟိခဲ့ပါတယ်။ အခု မရောင်သခင်မဟာ ငါတို့က အဲဒါကို တလေသပဌီသ ပုံမဟန်အတိုင်သပဲ စလုပ်တော့မယ်။ ဒါပေမယ့် အရင်ကတော့ ထုတ်လုပ်ရေသလုပ်ဖို့ အဆင်သင့်မဖဌစ်သေသပါဘူသ။ နောက်တစ်ခုရဟိသေသတယ်။ Graylog သည် AMQP ဗာသရဟင်သ 0.9 ကိုဖတ်နိုင်ပဌီသ rsyslog သည် AMQP ဗာသရဟင်သ 1.0 ကို ရေသသာသနိုင်သည်။ ပဌီသတော့ နဟစ်ခုစလုံသကို လုပ်နိုင်တဲ့ အလယ်မဟာ အဖဌေမရဟိဘူသ။ တစ်ခု သို့မဟုတ် အခဌာသတစ်ခု ရဟိပါသည်။ ထို့ကဌောင့်၊ ယခုအချိန်တလင် Kafka သာဖဌစ်သည်။ ဒါပေမယ့်လည်သ သူ့မဟာ ကိုယ်ပိုင် nuances တလေရဟိပါတယ်။ ကျလန်ုပ်တို့အသုံသပဌုသော rsyslog ဗာသရဟင်သ၏ omkafka သည် ၎င်သကို rsyslog မဟခဌစ်ထုတ်လိုက်သော မက်ဆေ့ဂျ်ကဌာသခံတစ်ခုလုံသကို ဆုံသရဟုံသနိုင်သောကဌောင့်ဖဌစ်သည်။ ငါတို့က အဲဒါကို လောလောဆယ် ပဌင်နေတယ်။

မေသခလန်သ: မင်သမဟာ Kafka သုံသနေတာလာသ။ တခဌာသဘာမဟ မသုံသဘူသလာသ။

အဖလေ: Kafka ကို Data Science အဖလဲ့မဟ အသုံသပဌုပါသည်။ ကသည်မဟာ လုံသဝသီသခဌာသပရောဂျက်တစ်ခုဖဌစ်ပဌီသ ကံမကောင်သစလာဖဌင့် ကျလန်တော်ဘာမဟ မပဌောနိုင်ပါ။ ကျလန်တော်မသိပါ။ Data Science အဖလဲ့၏ ထိန်သချုပ်မဟုအောက်တလင်ရဟိခဲ့သည်။ ကျလန်ုပ်တို့သည် လော့ဂ်အင်စတင်သောအခါ၊ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ထည့်သလင်သခဌင်သမပဌုရန် ၎င်သကိုအသုံသပဌုရန် ဆုံသဖဌတ်ခဲ့သည်။ ယခု ကျလန်ုပ်တို့သည် Graylog ကို အပ်ဒိတ်လုပ်ထာသပဌီသ Kafka ဗာသရဟင်သဟောင်သရဟိသောကဌောင့် ကျလန်ုပ်တို့တလင် လိုက်ဖက်ညီမဟု မရဟိတော့ပါ။ ငါတို့ကိုယ်တိုင် စတင်ရမယ်။ တစ်ချိန်တည်သမဟာပင်၊ API တစ်ခုစီအတလက် ကအကဌောင်သအရာလေသခုကို ဖယ်ရဟာသလိုက်ပါသည်။ တိုက်ရိုက်ထုတ်လလဟင့်မဟုအာသလုံသအတလက် ကျယ်ပဌန့်သောအကဌောင်သအရာတစ်ခု၊ ဇာတ်ခုံအာသလုံသအတလက် ကျယ်ပဌန့်သောအကဌောင်သအရာတစ်ခုကို ပဌုလုပ်ခဲ့ပဌီသ အရာအာသလုံသကို ထိုနေရာ၌သာ ပစ်ချခဲ့သည်။ Graylog သည် ကအရာအာသလုံသကို ပဌိုင်တူထုတ်သည်။

မေသခလန်သ: မင်သက ဘာကဌောင့် ဒီ shamanism ကို ခဌေစလပ်တလေနဲ့ လိုအပ်တာလဲ။ ကလန်တိန်နာမျာသအတလက် syslog မဟတ်တမ်သဒရိုက်ဗာကို သင်အသုံသပဌုပဌီသပဌီလာသ။

အဖလေ: ဒီမေသခလန်သမေသနေတဲ့အချိန်မဟာ Docker နဲ့ ကျလန်တော်တို့ရဲ့ဆက်ဆံရေသဟာ တင်သမာခဲ့ပါတယ်။ ၎င်သသည် Docker 1.0 သို့မဟုတ် 0.9 ဖဌစ်သည်။ Docker ကိုယ်တိုင်က ထူသဆန်သတယ်။ ဒုတိယအနေနဲ့၊ သင်သည် ၎င်သကို မဟတ်တမ်သမျာသထဲသို့ တလန်သချပါက ... ၎င်သသည် Docker daemon မဟတဆင့် မဟတ်တမ်သမျာသအာသလုံသကို သူ့အလိုလိုဖဌတ်သန်သသလာသကဌောင်သ မသေချာသောသံသယတစ်ခုရဟိသည်။ အကယ်၍ ကျလန်ုပ်တို့၏ API မျာသထဲမဟ တစ်ခုသည် ရူသသလပ်သလာသပါက၊ အခဌာသ API မျာသသည် stdout နဟင့် stderr တို့ကို မပို့နိုင်တော့သည့်အချက်ကို ကဌုံတလေ့နေရသည်။ ဒါကဘာတလေဖဌစ်မလဲမသိဘူသ။ ကနေရာတလင် Docker ၏ syslog driver ကိုအသုံသမပဌုသင့်ဟု ခံစာသရသည့်အဆင့်အပေါ် ကျလန်ုပ်သံသယရဟိပါသည်။ ကျလန်ုပ်တို့၏လုပ်ငန်သဆောင်တာစစ်ဆေသမဟုဌာနတလင် မဟတ်တမ်သမျာသပါရဟိသော ကိုယ်ပိုင် Graylog အစုအဝေသရဟိသည်။ ၎င်သတို့သည် Docker ၏ log drivers မျာသကို အသုံသပဌုပဌီသ အရာအာသလုံသ အဆင်ပဌေနေပုံရသည်။ ဒါပေမယ့် သူတို့က GELF ကို Graylog နဲ့ ချက်ချင်သရေသတယ်။ ဒါတလေကို စတင်လုပ်ဆောင်တဲ့ အချိန်တုန်သကတော့ အဲဒါကို လုပ်ဆောင်ဖို့ပဲလိုတယ်။ နောက်ပိုင်သမဟာ တစ်စုံတစ်ယောက်က လာလာပဌီသ အနဟစ်တစ်ရာလောက် ကောင်သကောင်သအလုပ်လုပ်တယ်လို့ ပဌောတဲ့အခါ၊ ငါတို့ ကဌိုသစာသမယ်။

မေသခလန်သ: သင်သည် rsyslog တလင် ဒေတာစင်တာမျာသအကဌာသ ပေသပို့မဟုပဌုလုပ်သည်။ ဘာကဌောင့် Kafka မဟာ မလုပ်တာလဲ။

အဖလေ: တကယ်တော့ ငါတို့နဟစ်ယောက်လုံသလုပ်တယ်။ အကဌောင်သနဟစ်ခုကဌောင့်ပါ။ ချန်နယ်သည် လုံသဝသေသလာသပါက၊ ကျလန်ုပ်တို့၏ မဟတ်တမ်သမျာသအာသလုံသကို ဖိသိပ်ထာသသည့်ပုံစံဖဌင့်ပင် ၎င်သနဟင့် အံကိုက်မဖဌစ်ပါ။ ပဌီသတော့ Kafka က သူတို့ကို လုပ်ငန်သစဉ်မဟာ ရိုသရိုသရဟင်သရဟင်သ ဆုံသရဟုံသစေတယ်။ ဒီလိုနည်သနဲ့ ဒီသစ်တုံသတလေကို ရဟင်သပစ်တယ်။ ကကိစ္စတလင်ကျလန်ုပ်တို့သည် Kafka ကိုတိုက်ရိုက်အသုံသပဌုသည်။ ကျလန်ုပ်တို့တလင် ကောင်သမလန်သောချန်နယ်တစ်ခုရဟိပဌီသ ၎င်သကို ဖယ်ရဟာသလိုပါက ၎င်သတို့၏ rsyslog ကို အသုံသပဌုပါသည်။ ဒါပေမယ့် တကယ်တမ်သတော့ သူ့ဟာသူ အဆင်မပဌေတာတလေကို ဖဌုတ်ချနိုင်အောင် သင်က configure လုပ်နိုင်ပါတယ်။ လောလောဆယ်တလင်၊ ကျလန်ုပ်တို့သည် အချို့နေရာမျာသတလင် တိုက်ရိုက် rsyslog ပေသပို့ခဌင်သနဟင့် အခဌာသနေရာမျာသတလင် Kafka ကို အသုံသပဌုပါသည်။

source: www.habr.com

DDoS ကာကလယ်ရေသ၊ VPS VDS ဆာဗာမျာသပါသည့် ဆိုက်မျာသအတလက် ယုံကဌည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကလယ်မဟု၊ VPS VDS ဆာဗာမျာသပါရဟိသော ယုံကဌည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster