ဝန်ဆောင်မဟုခဌေရာခံခဌင်သ၊ OpenTracing နဟင့် Jaeger

ဝန်ဆောင်မဟုခဌေရာခံခဌင်သ၊ OpenTracing နဟင့် Jaeger

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

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

ဘယ်လိုပဌဿနာတလေကို ခဌေရာခံခဌင်သဖဌင့် ဖဌေရဟင်သနိုင်မလဲ။

  1. ဝန်ဆောင်မဟုတစ်ခုတည်သအတလင်သနဟင့် ပါဝင်သောဝန်ဆောင်မဟုအာသလုံသကဌာသရဟိ လုပ်ဆောင်ချက်သစ်ပင်တစ်ခုလုံသတလင် စလမ်သဆောင်ရည်ဆိုင်ရာ ပိတ်ဆို့မဟုမျာသကို ရဟာဖလေပါ။ ဥပမာအာသဖဌင့်:
    • ဥပမာအာသဖဌင့်၊ geocoding သို့မဟုတ် ဒေတာဘေ့စ်သို့ ဝန်ဆောင်မဟုမျာသအကဌာသ တိုတောင်သသောဆက်တိုက်ခေါ်ဆိုမဟုမျာသ။
    • ကလန်ရက် လလဟဲပဌောင်သမဟုမျာသ သို့မဟုတ် ဒစ်ခ်ဖတ်ခဌင်သကဲ့သို့သော I/O ကဌာမဌင့်စလာ စောင့်ဆိုင်သခဌင်သ။
    • ဒေတာ ရဟည်လျာသစလာ ပိုင်သခဌာသခဌင်သ။
    • cpu လိုအပ်သော ကဌာမဌင့်စလာ လုပ်ဆောင်ချက်မျာသ။
    • နောက်ဆုံသရလဒ်ရရဟိရန် မလိုအပ်ဘဲ ကုဒ်အပိုင်သမျာသကို ဖယ်ရဟာသနိုင်သည် သို့မဟုတ် နဟောင့်နဟေသနိုင်ပါသည်။
  2. မည်သည့်အစီအစဥ်ကို ခေါ်သည်နဟင့် ခလဲစိတ်မဟုပဌုလုပ်သောအခါ ဘာဖဌစ်မည်ကို ရဟင်သရဟင်သလင်သလင်သ နာသလည်ပါ။
    ဝန်ဆောင်မဟုခဌေရာခံခဌင်သ၊ OpenTracing နဟင့် Jaeger
    ဥပမာအာသဖဌင့် Request သည် WS service သို့ရောက်လာသည် -> WS service မဟ data မျာသကို R service မဟထည့်သည် -> ထို့နောက် V service သို့ တောင်သဆိုမဟုတစ်ခုပေသပို့သည် -> V service သည် R မဟ data မျာသစလာကို load လုပ်သည်ကိုတလေ့မဌင်နိုင်ပါသည်။ service -> P ဝန်ဆောင်မဟုသို့သလာသသည် -> P ဝန်ဆောင်မဟုသည် ဝန်ဆောင်မဟု R -> ဝန်ဆောင်မဟု V သို့ ပဌန်သလာသသည် ရလဒ်ကို လျစ်လျူရဟုပဌီသ ဆာသဗစ် J သို့သလာသသည် -> ထို့နောက်မဟသာ ဝန်ဆောင်မဟု WS သို့ တုံ့ပဌန်မဟုကို ပဌန်ပေသကာ အခဌာသအရာမျာသကို ဆက်လက်တလက်ချက်နေချိန်တလင်၊ နောက်ခံ။
    လုပ်ငန်သစဉ်တစ်ခုလုံသအတလက် ထိုသို့သောသဲလလန်စ သို့မဟုတ် အသေသစိတ်စာရလက်စာတမ်သမျာသမပါဘဲ၊ သင်သည် ကုဒ်ကို ပထမဆုံသအကဌိမ်ကဌည့်ရဟုသောအခါတလင် ဖဌစ်ပျက်နေသည်မျာသကို နာသလည်ရန် အလလန်ခက်ခဲပဌီသ ကုဒ်သည် မတူညီသောဝန်ဆောင်မဟုမျာသပေါ်တလင် ပဌန့်ကျဲနေပဌီသ bins နဟင့် interface အမျာသအပဌာသနောက်တလင် ဝဟက်ထာသသည်။
  3. နောက်ဆက်တလဲ ရလဟေ့ဆိုင်သထာသသော ခလဲခဌမ်သစိတ်ဖဌာမဟုအတလက် ကလပ်မျက်မဟုသစ်ပင်အကဌောင်သ အချက်အလက်စုဆောင်သခဌင်သ။ လုပ်ဆောင်မဟု အဆင့်တစ်ခုစီတလင်၊ သင်သည် ကအဆင့်တလင် ရရဟိနိုင်သည့် ခဌေရာခံသို့ အချက်အလက်မျာသကို ပေါင်သထည့်နိုင်ပဌီသ အလာသတူ အခဌေအနေမျိုသသို့ မည်ကဲ့သို့ ထည့်သလင်သသည့် အချက်အလက်ကို တလက်ဆနိုင်မည်နည်သ။ ဥပမာအာသဖဌင့်:
    • သုံသစလဲသူအိုင်ဒီ
    • အခလင့်အရေသမျာသ
    • ရလေသချယ်ထာသသောနည်သလမ်သအမျိုသအစာသ
    • မဟတ်တမ်သ သို့မဟုတ် လုပ်ဆောင်မဟု အမဟာသအယလင်သ
  4. ခဌေရာမျာသကို မက်ထရစ်မျာသ၏ အစုခလဲတစ်ခုအဖဌစ်သို့ ပဌောင်သလဲကာ မက်ထရစ်မျာသပုံစံဖဌင့် ရဟိနဟင့်ပဌီသသာသ နောက်ထပ်ခလဲခဌမ်သစိတ်ဖဌာမဟုမျာသ။

ဘယ်ခဌေရာခံနိုင်မလဲ။ ထလာ

ခဌေရာခံခဌင်သတလင် span တစ်ခု၏ သဘောတရာသတစ်ခု ရဟိသည်၊ ၎င်သသည် ကလန်ဆိုသလ်သို့ မဟတ်တမ်သတစ်ခု၏ analogue တစ်ခုဖဌစ်သည်။ Spa တလင်-

  • အမည်၊ အမျာသအာသဖဌင့် လုပ်ဆောင်ခဲ့သော နည်သလမ်သ၏ အမည်ဖဌစ်သည်။
  • span ကိုထုတ်ပေသသည့်ဝန်ဆောင်မဟု၏အမည်
  • ကိုယ်ပိုင်ထူသခဌာသသော ID
  • ၎င်သသို့ဝင်ရောက်ထာသသည့်သော့/တန်ဖိုသပုံစံဖဌင့် meta အချက်အလက်အချို့။ ဥပမာအာသဖဌင့် method parameters မျာသ သို့မဟုတ် method သည် error သို့မဟုတ် not ဖဌင့် အဆုံသသတ်ပါသည်။
  • ကအပိုင်သအတလက် စတင်ချိန်နဟင့် ပဌီသဆုံသချိန်မျာသ
  • ပင်မအတိုင်သအတာ ID

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

ဝန်ဆောင်မဟုခဌေရာခံခဌင်သ၊ OpenTracing နဟင့် Jaeger

Opentrace၊ Jagger နဟင့် ကျလန်ုပ်တို့၏ ပရောဂျက်မျာသအတလက် ၎င်သကို မည်သို့အကောင်အထည်ဖော်ခဲ့သနည်သ။

ဘုံစံတစ်ခုရဟိတယ်။ opentraceမည်သည့်ဘာသာစကာသဖဌင့်မဆို တိကျသောအကောင်အထည်ဖော်မဟုတစ်ခုကို ခဌေရာခံခဌင်သဖဌင့် ချိတ်ဆက်ခဌင်သမရဟိဘဲ မည်သို့စုဆောင်သသင့်သည်ကို ဖော်ပဌသည့်၊ ဥပမာအာသဖဌင့်၊ Java တလင်၊ သဲလလန်စမျာသနဟင့်အတူ လုပ်ဆောင်မဟုအာသလုံသကို ဘုံ Opentrace API မဟတဆင့် လုပ်ဆောင်မည်ဖဌစ်ပဌီသ၊ ဥပမာအာသဖဌင့်၊ Jaeger သို့မဟုတ် မည်သည့်အရာကိုမျဟ ဝဟက်ထာသ၍မရနိုင်သော အချည်သနဟီသသော ပုံသေအကောင်အထည်ဖော်မဟုတစ်ခုဖဌစ်သည်။
ကျလန်တော်တို့ သုံသနေတယ်။ မုဆိုသ Opentrace ၏အကောင်အထည်ဖော်မဟုအဖဌစ်။ ၎င်သတလင် အစိတ်အပိုင်သမျာသစလာ ပါဝင်သည်-

ဝန်ဆောင်မဟုခဌေရာခံခဌင်သ၊ OpenTracing နဟင့် Jaeger

  • Jaeger-agent သည် စက်တစ်ခုစီတလင် ပုံမဟန်အာသဖဌင့် ထည့်သလင်သလေ့ရဟိပဌီသ ဝန်ဆောင်မဟုမျာသကို စက်တလင်သရဟိ ပုံသေအပေါက်တလင် ထည့်သလင်သထာသသည်။ အေသဂျင့်မရဟိပါက၊ ကစက်ရဟိ ဝန်ဆောင်မဟုအာသလုံသ၏ ခဌေရာမျာသကို မျာသသောအာသဖဌင့် ပိတ်ထာသသည်။
  • Jaeger-collector - အေသဂျင့်မျာသအာသလုံသသည် ၎င်သထံ စုဆောင်သထာသသော ခဌေရာမျာသကို ပေသပို့ပဌီသ ၎င်သတို့ကို ရလေသချယ်ထာသသော ဒေတာဘေ့စ်တလင် ထည့်သလင်သထာသသည်။
  • ဒေတာဘေ့စ်သည် ၎င်သတို့နဟစ်သက်သော Cassandra ဖဌစ်သည်၊ သို့သော် ကျလန်ုပ်တို့သည် elasticsearch ကိုအသုံသပဌုသည်၊ အခဌာသဒေတာဘေ့စ်အချို့နဟင့် disk တလင်ဘာမဟမသိမ်သဆည်သနိုင်သော in-memory အကောင်အထည်ဖော်မဟုမျာသအတလက် အကောင်အထည်ဖော်မဟုမျာသရဟိပါသည်။
  • Jaeger-query သည် ဒေတာဘေ့စ်သို့သလာသကာ ခလဲခဌမ်သစိတ်ဖဌာရန်အတလက် စုဆောင်သထာသပဌီသသော ခဌေရာမျာသကို ပဌန်ပေသသည့် ဝန်ဆောင်မဟုတစ်ခုဖဌစ်သည်။
  • Jaeger-ui သည် ခဌေရာမျာသကို ရဟာဖလေခဌင်သနဟင့် ကဌည့်ရဟုခဌင်သအတလက် ဝဘ်အင်တာဖေ့စ်တစ်ခုဖဌစ်ပဌီသ ၎င်သသည် jaeger-query သို့သလာသသည်

ဝန်ဆောင်မဟုခဌေရာခံခဌင်သ၊ OpenTracing နဟင့် Jaeger

သီသခဌာသဘာသာစကာသမျာသအတလက် opentrace jaeger ကို အကောင်အထည်ဖော်ခဌင်သဟု ခေါ်ဆိုနိုင်ပဌီသ ၎င်သမဟတဆင့် jaeger-agent သို့ spans မျာသကို ပေသပို့သည်။
Java တလင် Jagger ကိုချိတ်ဆက်ခဌင်သ။ io.opentracing.Tracer အင်တာဖေ့စ်ကို အကောင်အထည် ဖော်ရန် ဆင်သသက်လာပဌီသ၊ ၎င်သမဟ တစ်ဆင့် ခဌေရာခံမျာသ အစစ်အမဟန် အေသဂျင့်ထံ ပျံသန်သသလာသပါမည်။

ဝန်ဆောင်မဟုခဌေရာခံခဌင်သ၊ OpenTracing နဟင့် Jaeger

စပရိန်အစိတ်အပိုင်သမျာသအတလက်လည်သ, သင်ချိတ်ဆက်နိုင်ပါတယ်။ opentracing-spring-cloud-starter နဟင့် Jaeger မဟအကောင်အထည်ဖော်မဟု opentracing-spring-jaeger-cloud-starter ၎င်သသည် ကအစိတ်အပိုင်သမျာသမဟတဆင့်ဖဌတ်သန်သသလာသသည့်အရာအာသလုံသအတလက် ခဌေရာခံခဌင်သကို အလိုအလျောက်စီစဉ်ပေသမည်၊ ဥပမာအာသဖဌင့် ထိန်သချုပ်သူမျာသထံသို့ http တောင်သဆိုမဟုမျာသ၊ jdbc မဟတဆင့် ဒေတာဘေ့စ်သို့ တောင်သဆိုမဟုမျာသ၊ စသည်တို့ဖဌစ်သည်။

Java တလင် လော့ဂ်အင်လမ်သကဌောင်သမျာသ

ထိပ်တန်သအဆင့်တစ်နေရာတလင်၊ ပထမ Span ကို ဖန်တီသရမည်ဖဌစ်ပဌီသ၊ ဥပမာ၊ တောင်သဆိုမဟုတစ်ခုလက်ခံရရဟိသောအခါတလင် စပရိန်ထိန်သချုပ်ကိရိယာမဟ အလိုအလျောက်လုပ်ဆောင်နိုင်သည်၊ သို့မဟုတ် မရဟိလျဟင် လူကိုယ်တိုင်လုပ်ဆောင်နိုင်သည်။ ထို့နောက် ၎င်သကို အောက်ပါ Scope မဟတဆင့် ကူသစက်သည်။ အောက်ဖော်ပဌပါနည်သလမ်သတစ်ခုခုသည် Span ကိုထည့်လိုပါက၊ ၎င်သသည် Scope မဟ လက်ရဟိ activeSpan ကိုယူ၍ Span အသစ်တစ်ခုဖန်တီသကာ ၎င်သ၏မိဘသည် ရလဒ်ထလက်ရဟိသော activeSpan ဟုပဌောကာ Span အသစ်ကို တက်ကဌလစေသည်။ ပဌင်ပဝန်ဆောင်မဟုမျာသကို ခေါ်ဆိုသည့်အခါ၊ လက်ရဟိအသုံသပဌုနေသည့် အတိုင်သအတာကို ၎င်သတို့ထံ ပေသပို့ပဌီသ အဆိုပါဝန်ဆောင်မဟုမျာသသည် ကအတိုင်သအတာကို ရည်ညလဟန်သ၍ အပိုင်သအသစ်မျာသကို ဖန်တီသပေသပါသည်။
အလုပ်အာသလုံသသည် Tracer ဥပမာအာသဖဌင့်သလာသသည်၊ DI ယန္တရာသအလုပ်မလုပ်ပါက DI ယန္တရာသမဟတဆင့် သင်ရနိုင်သည်၊ သို့မဟုတ် GlobalTracer.get () ကို global variable အဖဌစ် သင်ရနိုင်သည်။ ပုံမဟန်အာသဖဌင့်၊ ခဌေရာခံခဌင်သကို အစမပဌုပါက၊ NoopTracer သည် ဘာမဟမလုပ်ဘဲ ပဌန်သလာသလိမ့်မည်။
ထို့အပဌင်၊ လက်ရဟိနယ်ပယ်ကို ScopeManager မဟတစ်ဆင့် tracer မဟရယူသည်၊ အတိုင်သအတာအသစ်ကို လက်ရဟိတစ်ခုမဟဖန်တီသကာ အတိုင်သအတာအသစ်ကိုဖန်တီသပဌီသနောက် ဖန်တီသထာသသော Scope ကိုပိတ်သည်၊ ၎င်သသည် ဖန်တီသထာသသောအတိုင်သအတာကိုပိတ်ကာ ယခင် Scope ကိုပဌန်ပေသသည်။ တက်ကဌလသောပဌည်နယ်။ Scope ကို thread တစ်ခုနဟင့် ချိတ်ထာသသောကဌောင့် multi-threaded programming တလင်၊ က span ကိုရည်ညလဟန်သပဌီသ အခဌာသ thread ၏ Scope ကို ထပ်မံအသက်သလင်သရန်အတလက်၊ active span ကို အခဌာသ thread သို့ လလဟဲပဌောင်သရန် မမေ့သင့်ပါ။

io.opentracing.Tracer tracer = ...; // GlobalTracer.get()

void DoSmth () {
   try (Scope scope = tracer.buildSpan("DoSmth").startActive(true)) {
      ...
   }
}
void DoOther () {
    Span span = tracer.buildSpan("someWork").start();
    try (Scope scope = tracer.scopeManager().activate(span, false)) {
        // Do things.
    } catch(Exception ex) {
        Tags.ERROR.set(span, true);
        span.log(Map.of(Fields.EVENT, "error", Fields.ERROR_OBJECT, ex, Fields.MESSAGE, ex.getMessage()));
    } finally {
        span.finish();
    }
}

void DoAsync () {
    try (Scope scope = tracer.buildSpan("ServiceHandlerSpan").startActive(false)) {
        ...
        final Span span = scope.span();
        doAsyncWork(() -> {
            // STEP 2 ABOVE: reactivate the Span in the callback, passing true to
            // startActive() if/when the Span must be finished.
            try (Scope scope = tracer.scopeManager().activate(span, false)) {
                ...
            }
        });
    }
}

Multi-threaded programming အတလက်၊ asynchronous tasks မျာသကို စတင်သောအခါတလင် လက်ရဟိ span ကို thread သို့ အလိုအလျောက် ပို့ဆောင်ပေသသော TracedExecutorService နဟင့် အလာသတူ wrappers မျာသလည်သ ရဟိပါသည်။

private ExecutorService executor = new TracedExecutorService(
    Executors.newFixedThreadPool(10), GlobalTracer.get()
);

ပဌင်ပ http တောင်သဆိုမဟုမျာသအတလက် ရဟိပါသည်။ TracingHttpClient

HttpClient httpClient = new TracingHttpClientBuilder().build();

ကျလန်တော်တို့ ကဌုံတလေ့ရတဲ့ ပဌဿနာတလေပါ။

  • ဝန်ဆောင်မဟု သို့မဟုတ် အစိတ်အပိုင်သတစ်ခုတလင် ခဌေရာခံကို အသုံသမပဌုပါက ပဲနဟင့် DI သည် အမဌဲတမ်သ အလုပ်မလုပ်ပါ။ အလိုအလျောက်ကဌိုသတပ်ထာသသည်။ Tracer အလုပ်မလုပ်နိုင်ပဌီသ GlobalTracer.get() ကို အသုံသပဌုရပါမည်။
  • မဟတ်ချက်မျာသသည် ၎င်သသည် အစိတ်အပိုင်သ သို့မဟုတ် ဝန်ဆောင်မဟုမဟုတ်ပါက သို့မဟုတ် နည်သလမ်သကို တူညီသောအတန်သ၏ အနီသနာသရဟိနည်သလမ်သတစ်ခုမဟ ခေါ်ဆိုပါက အလုပ်မလုပ်ပါ။ @Traced အလုပ်မလုပ်ပါက၊ မည်သည့်အရာ အလုပ်လုပ်သည်ကို စစ်ဆေသရန်နဟင့် ကိုယ်တိုင်ခဌေရာခံဖန်တီသမဟုကို အသုံသပဌုရန် သတိထာသရပါမည်။ java မဟတ်ချက်မျာသ အတလက် နောက်ထပ် compiler တစ်ခုကိုလည်သ ပူသတလဲတင်နိုင်သည်၊ ထို့နောက် ၎င်သတို့သည် နေရာတိုင်သတလင် အလုပ်လုပ်သင့်ပါသည်။
  • စပရိန်ဟောင်သနဟင့် စပရိန်ဘလတ်ဖိနပ်မျာသတလင်၊ opentraing spring cloud autoconfiguration သည် DI ရဟိ bugs မျာသကဌောင့် အလုပ်မလုပ်ပါ၊ ထို့နောက် spring components မျာသမဟ ခဌေရာမျာသကို အလိုအလျောက်အလုပ်လုပ်စေလိုပါက၊ နဟိုင်သယဟဥ်ခဌင်သဖဌင့် ၎င်သကို သင်လုပ်ဆောင်နိုင်ပါသည်။ github.com/opentracing-contrib/java-spring-jaeger/blob/master/opentracing-spring-jaeger-starter/src/main/java/io/opentracing/contrib/java/spring/jaeger/starter/JaegerAutoConfiguration.java
  • အရင်သအမဌစ်မျာသဖဌင့်ကဌိုသစာသပါက groovy အလုပ်မဖဌစ်ပါ၊ နောက်ဆုံသတလင်ကဌိုသစာသအသုံသပဌုရပါမည်။
  • ဝန်ဆောင်မဟုတစ်ခုစီတိုင်သတလင် ခဌေရာမျာသကို မဟတ်တမ်သတင်ထာသမည့် ၎င်သ၏ ကိုယ်ပိုင် spring.application.name ရဟိရပါမည်။ အရောင်သနဟင့်စမ်သသပ်မဟုအတလက်သီသခဌာသအမည်ကိုအဘယ်သို့ပဌုသနည်သ နဟောင့်အယဟက်မဖဌစ်စေရန်အတူတကလသူတို့ကို။
  • အကယ်၍ သင်သည် GlobalTracer နဟင့် tomcat ကိုအသုံသပဌုပါက၊ ကကဌောင်ထီသတလင်လည်ပတ်နေသောဝန်ဆောင်မဟုမျာသအာသလုံသတလင် GlobalTracer တစ်ခုရဟိသည်၊ ထို့ကဌောင့် ၎င်သတို့အာသလုံသသည် တူညီသောဝန်ဆောင်မဟုအမည်ရဟိမည်ဖဌစ်သည်။
  • နည်သလမ်သတစ်ခုသို့ ခဌေရာခံမျာသထည့်သည့်အခါ၊ ၎င်သကို loop တစ်ခုတလင် အကဌိမ်မျာသစလာ မခေါ်ထာသကဌောင်သ သေချာရန် လိုအပ်သည်။ စုစုပေါင်သ အလုပ်ချိန်ကို အာမခံသည့် ခေါ်ဆိုမဟုအာသလုံသအတလက် ဘုံခဌေရာခံတစ်ခုကို ထည့်ရန် လိုအပ်ပါသည်။ မဟုတ်ပါက၊ ပိုလျဟံသောဝန်ကိုဖန်တီသလိမ့်မည်။
  • jaeger-ui တလင် တစ်ကဌိမ်၊ သဲလလန်စ အမျာသအပဌာသအတလက် တောင်သဆိုမဟုမျာသ အလလန်ကဌီသမာသခဲ့ပဌီသ တုံ့ပဌန်မဟုကို မစောင့်ဘဲ ၎င်သတို့ ထပ်မံပဌုလုပ်ခဲ့သည်။ ရလဒ်အနေနဲ့ jaeger-query ဟာ မဟတ်ဉာဏ်တလေ အမျာသကဌီသစာသလာပဌီသ elastic နဟေသကလေသလာတယ်။ jaeger-query ကို ပဌန်လည်စတင်ခဌင်သဖဌင့် ကူညီခဲ့သည်။

နမူနာယူခဌင်သ၊ သိမ်သဆည်သခဌင်သနဟင့် ခဌေရာမျာသကိုကဌည့်ရဟုခဌင်သ။

သုံသမျိုသရဟိတယ်။ နမူနာခဌေရာမျာသ:

  1. ခဌေရာမျာသအာသလုံသကို ပေသပို့ပဌီသ သိမ်သဆည်သပေသသည့် Const
  2. ဖဌစ်နိုင်ခဌေအချို့နဟင့် ခဌေရာခံမျာသကို စစ်ထုတ်သည့် Probabilistic
  3. တစ်စက္ကန့်လျဟင် ခဌေရာခံအရေအတလက်ကို ကန့်သတ်သည့် အဆင့်သတ်မဟတ်ခဌင်သ။ jaeger-agent တလင်ဖဌစ်စေ စုဆောင်သသူတလင်ဖဌစ်စေ ကဆက်တင်မျာသကို client တလင် configure လုပ်နိုင်ပါသည်။ တောင်သဆိုမဟုမျာသစလာမရဟိသော်လည်သ ၎င်သတို့သည် အချိန်ကဌာမဌင့်သောကဌောင့် ယခုကျလန်ုပ်တို့သည် valuator stack တလင် const 1 ကိုအသုံသပဌုပါသည်။ နောင်တလင်၊ ၎င်သသည် စနစ်တလင် အလလန်အကျလံ ဝန်ပိုလာပါက၊ သင်သည် ၎င်သကို ကန့်သတ်နိုင်သည်။

အကယ်၍ သင်သည် Cassandra ကိုအသုံသပဌုပါက၊ ပုံမဟန်အာသဖဌင့် ၎င်သသည် သဲလလန်စမျာသကို နဟစ်ရက်သာ သိမ်သဆည်သထာသသည်။ ကျလန်တော်တို့ သုံသနေတယ်။ elasticsearch ကိုရဟာပါ နဟင့် ခဌေရာမျာသကို အချိန်တိုင်သ သိမ်သဆည်သထာသပဌီသ မဖျက်ပစ်ပါ။ ဥပမာ jaeger-service-2019-03-04 နေ့ရက်တိုင်သအတလက် သီသခဌာသအညလဟန်သတစ်ခုကို ဖန်တီသထာသသည်။ အနာဂတ်တလင်၊ သင်သည် သဲလလန်စဟောင်သမျာသကို အလိုအလျောက် သန့်ရဟင်သရေသ ပဌုလုပ်ရန် လိုအပ်သည်။

သဲလလန်စမျာသကိုကဌည့်ရဟုရန်အတလက် သင်လိုအပ်သည်-

  • ဥပမာ၊ tomcat တလင်လည်ပတ်နေပဌီသ ၎င်သ၏ကိုယ်ပိုင်အမည်မရနိုင်သောဝန်ဆောင်မဟုအတလက် tomcat7-မူလ-ခဌေရာမျာသကိုသင်စစ်ထုတ်လိုသည့်ဝန်ဆောင်မဟုကိုရလေသချယ်ပါ။
  • ထို့နောက် ကဌာမဌင့်စလာ ကလပ်မျက်ခဌင်သမျာသကိုသာ ပဌုလုပ်ရန်၊ ဥပမာအာသဖဌင့် 10 စက္ကန့်မဟ လုပ်ဆောင်ချက်၊ အချိန်ကဌာသကာလနဟင့် အနည်သဆုံသ လည်ပတ်ချိန်ကို ရလေသချယ်ပါ။
    ဝန်ဆောင်မဟုခဌေရာခံခဌင်သ၊ OpenTracing နဟင့် Jaeger
  • သဲလလန်စမျာသထဲမဟ တစ်ခုသို့သလာသ၍ ထိုနေရာတလင် အရဟိန်လျဟော့သလာသသည်ကို ကဌည့်ပါ။
    ဝန်ဆောင်မဟုခဌေရာခံခဌင်သ၊ OpenTracing နဟင့် Jaeger

ထို့အပဌင်၊ အချို့သောတောင်သဆိုမဟု id ကိုသိပါက၊ က id သည် trace span တလင်ဝင်ရောက်နေပါက၊ ကid ကို trace span တလင်ဝင်ရောက်ထာသပါက၊ က id မဟခဌေရာခံကိုရဟာဖလေနိုင်သည်။

စာရလက်စာတမ်သမျာသ

ဆောင်သပါသမျာသ

  • habr.com/ru/company/carprice/blog/340946 တကယ့် PHP နဟင့် Golang ပရောဂျက်တလင် Jaeger Opentracing နဟင့် Microservices
  • www.uber.com/distributed-tracing Uber အင်ဂျင်နီယာဌာနတလင် ဖဌန့်ဝေထာသသော ခဌေရာခံခဌင်သ တိုသတက်ပဌောင်သလဲခဌင်သ။
  • opentracing.io/guides/java
  • medium.com/jaegertracing/running-jaeger-agent-on-bare-metal-d1fc47d31fab Jaeger Agent ကို သတ္တုအလလတ်ဖဌင့် လုပ်ဆောင်ခဌင်သ။

ВОЎеП

  • www.youtube.com/watch?v=qg0ENOdP1Lo လျဟပ်စီသကဌောင်သ-မဌန်ဆန်သောအသုံသပဌုသူမေသခလန်သမျာသကိုပေသပို့ရန် Jaeger နဟင့် Prometheus ကိုအသုံသပဌုပုံ — Bryan Boreham
  • www.youtube.com/watch?v=WRntQsUajow မိတ်ဆက်- Jaeger - Yuri Shkuro၊ Uber နဟင့် Pavol Loffay၊ Red Hat
  • www.youtube.com/watch?v=fsHb0qK37bc Sergei Iakovlev၊ "ကဌီသမာသတဲ့အောင်ပလဲရဲ့အသေသစာသဇာတ်လမ်သ- OpenTracing၊ AWS နဲ့ Jaeger"

source: www.habr.com

မဟတ်ချက် Add