Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

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

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

Yuri Bushmelev ၏ "သစ်လုံသမျာသ စုဆောင်သခဌင်သနဟင့် ပို့ဆောင်ခဌင်သနယ်ပယ်ရဟိ ထလန်တုံသတစ်တုံသ၏မဌေပုံ"

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

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

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

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

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

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

ထိုနေရာတလင် (ဆလိုက်ပေါ်တလင်) “မဟတ်တမ်သပေသပို့ခဌင်သအတလက် SLA” သည် စတင်ပေါ်လာရုံသာဖဌစ်သည်။ မရောက်သေသပေမယ့် အဲဒါကို ကျလန်တော်တို့ လုပ်ဆောင်နေပါတယ်။ Infra က ဒီလိုပုံစံနဲ့ ဒီလိုပုံစံနဲ့ ရေသပဌီသ အဲဒီနေရာကို စက္ကန့်မဟာ N ထက်မပိုစေရဘူသလို့ ပဌောတဲ့အခါ အရမ်သအဆင်ပဌေတဲ့အတလက် အဲဒါကို အဲဒီနေရာမဟာ ပို့ပေသဖို့ ဖဌစ်နိုင်တယ်။ ခေါင်သကိုက်ခဌင်သကို မျာသစလာ သက်သာစေပါသည်။ SLA ရဟိရင် အရမ်သကောင်သတယ်။

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

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

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

sysadmin အတလက် သိသာထင်ရဟာသသော ဖဌေရဟင်သချက်မဟာ ကပမာဏရဟိ syslog အမျိုသအစာသအာသလုံသ (syslog-ng/rsyslog/nxlog) ဖဌစ်သည်။

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

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

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

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

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

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

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

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

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

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

Yury Bushmelev "သစ်လုံသစုဆောင်သခဌင်သနဟင့်ပေသပို့ခဌင်သနယ်ပယ်ရဟိလူယုတ်မာမျာသ၏မဌေပုံ" - အစီရင်ခံစာ၏စာသာသမဟတ်တမ်သ

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

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

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

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

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

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

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

အဖလေ: ကျလန်တော်နာသလည်ပါတယ်။ ကျလန်ုပ်တို့သည် လက်နဟစ်ဘက်စလုံသဖဌင့် "အတလက်" ဖဌစ်သည်။

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

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

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

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

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

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

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

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

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

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

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

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

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

အဖလေ: ပုံတူတစ်ခု။

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

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

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

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

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

အဖလေပက်ကက်သည် ကဌီသလလန်သသောကဌောင့် ပျက်သလာသသော JSON ကို ထပ်ဆင့်လလဟင့်စဉ်တလင်သော်လည်သကောင်သ စလန့်ပစ်ပါမည်။ သို့မဟုတ်ပါက JSON ကို ခလဲခဌမ်သစိတ်ဖဌာနိုင်မည်မဟုတ်သောကဌောင့် Graylog ကို ဖဌုတ်ချပါမည်။ သို့သော် ပဌင်ဆင်ရန် လိုအပ်သော ကနေရာတလင် ကလဲလလဲမဟုမျာသ ရဟိပဌီသ အမျာသအာသဖဌင့် ၎င်သတို့ကို 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 အဖလဲ့မဟ ညသစီသဆောင်ရလက်ခဲ့သည်။ သစ်လုံသမျာသစတင်သောအခါတလင် ၎င်သတို့သည် ၎င်သတို့ကိုယ်ပိုင်မထာသရဟိရန် ဆုံသဖဌတ်ခဲ့ကဌသည်။ ယခု ကျလန်ုပ်တို့သည် Graylog ကို အပ်ဒိတ်လုပ်ထာသပဌီသ Kafka ဗာသရဟင်သဟောင်သရဟိသောကဌောင့် ကျလန်ုပ်တို့တလင် လိုက်ဖက်ညီမဟု မရဟိတော့ပါ။ ငါတို့ကိုယ်တိုင်လုပ်ရမယ်။ တစ်ချိန်တည်သမဟာပင်၊ API တစ်ခုစီအတလက် ကအကဌောင်သအရာလေသခုကို ဖယ်ရဟာသလိုက်ပါသည်။ တိုက်ရိုက်ထုတ်လလဟင့်မဟုအာသလုံသအတလက် ကျယ်ပဌန့်သောထိပ်တစ်ခု၊ ဇာတ်ခုံအာသလုံသအတလက် ကျယ်ပဌန့်သောထိပ်တစ်ပိုင်သကို ပဌုလုပ်ခဲ့ပဌီသ ထိုနေရာ၌ အရာအာသလုံသကို ရိုက်ကူသခဲ့သည်။ Graylog သည် ကအရာအာသလုံသကို ပဌိုင်တူထုတ်သည်။

မေသခလန်သ: အဘယ်ကဌောင့် ငါတို့သည် က shamanism ကိုခဌေစလပ်မျာသနဟင့်အတူလိုအပ်သနည်သ။ ကလန်တိန်နာမျာသအတလက် syslog log driver ကို သင်အသုံသပဌုပဌီသပဌီလာသ။

အဖလေ: ဒီမေသခလန်သမေသတဲ့ အချိန်မဟာ၊ 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 ကို အသုံသပဌုပါသည်။ ဒါပေမယ့် တကယ်တမ်သကျတော့ အဲဒါကို မပဌီသပဌတ်အောင် ထိန်သထာသနိုင်တယ်။ လောလောဆယ်တလင် ကျလန်ုပ်တို့သည် rsyslog ပေသပို့မဟုကို တိုက်ရိုက်တစ်နေရာ၊ Kafka တစ်နေရာတလင်သာ အသုံသပဌုနေပါသည်။

source: www.habr.com

မဟတ်ချက် Add