áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·áááá±á¬áá»ááºáá»á¬ážááœáẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áááá¯áá¬ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá á
áœááºážáá±á¬ááºááẠááááºááá¯á·ááŸá¯áá»á¬áž ááŒá
áºáá±á«áºáá¬áá±á¬á¡áá«á á
á±á¬áá·áºááŒáá·áºááŒááºážááŸáá·áº ááŸááºáááºážáá»á¬ážááᯠááœá²ááŒááºážá
áááºááŒá¬ááẠá¡áá»áááºáá»á¬ážá
áœá¬ áá¯á¶ážá
áœá²ááááºá áá
áºáŠážáá»ááºážá
á® áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá á¡áá»áááºáá»á¬ážááᯠááŸááºáááºážááá¯ááºáá
áºáá¯ááá¯á· ááŸááºáááºážáááºááá·áºá¡áá«á áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá á
á®á
á¥áºááŸá¯ááᯠááŒá±áá¬áá¶ááẠááá¯á·ááá¯áẠááá°áá®áá±á¬ áááºáá±á¬ááºááŸá¯áá
áºáá¯á០áá
áºáá¯ááŸáá·áºáá
áºáᯠáááºá
ááºáá±áá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá
áºáá¯á á¡áá»áááºááŒá±á¬ááºážááœá±á·ááŸá¯ááᯠááááŸááááºááŸá¬ á¡áá»á¬ážá¡á¬ážááŒáá·áº áá¬ážáááºááááºáá«áááºá
á¡áá¯ááºááŒááºážááᯠáá»áŸá±á¬á·áá»áááºá¡ááœáẠááŒá±áá¬áá¶áááááá¬áá»á¬ážáá²á០áá
áºáá¯ááᯠá¡áá¯á¶ážááŒá¯ááẠáá¯á¶ážááŒááºáá²á·áááºá ááŒá±áá¬áá¶ááŒááºážááᯠáááºá¡áá¯á¶ážááŒá¯áá¯á¶ááŸáá·áº á¡ááŒá±á¬ááºážáááºážááŸáá·áº áááºážááᯠáá»áœááºá¯ááºááá¯á·ááŒá¯áá¯ááºáá¯á¶á¡ááŒá±á¬ááºážááŸáá·áº á€áá±á¬ááºážáá«ážááœáẠááœá±ážááœá±ážáá«áááºá
áááºááá¯ááŒá¿áá¬ááœá±ááᯠááŒá±áá¬áá¶ááŒááºážááŒáá·áº ááŒá±ááŸááºážááá¯ááºááá²á
- áááºáá±á¬ááºááŸá¯áá
áºáá¯áááºážá¡ááœááºážááŸáá·áº áá«áááºáá±á¬áááºáá±á¬ááºááŸá¯á¡á¬ážáá¯á¶ážááŒá¬ážááŸá áá¯ááºáá±á¬ááºáá»ááºáá
áºáááºáá
áºáá¯áá¯á¶ážááœáẠá
áœááºážáá±á¬ááºáááºááá¯ááºáᬠááááºááá¯á·ááŸá¯áá»á¬ážááᯠááŸá¬ááœá±áá«á á¥ááá¬á¡á¬ážááŒááºá·:
- á¥ááá¬á¡á¬ážááŒáá·áºá geocoding ááá¯á·ááá¯áẠáá±áá¬áá±á·á áºááá¯á· áááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááŒá¬áž ááá¯áá±á¬ááºážáá±á¬áááºááá¯ááºáá±á«áºááá¯ááŸá¯áá»á¬ážá
- ááœááºááẠááœáŸá²ááŒá±á¬ááºážááŸá¯áá»á¬áž ááá¯á·ááá¯áẠáá áºááºáááºááŒááºážáá²á·ááá¯á·áá±á¬ I/O ááŒá¬ááŒáá·áºá áœá¬ á á±á¬áá·áºááá¯ááºážááŒááºážá
- áá±áᬠááŸááºáá»á¬ážá áœá¬ ááá¯ááºážááŒá¬ážááŒááºážá
- cpu ááá¯á¡ááºáá±á¬ ááŒá¬ááŒáá·áºá áœá¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá
- áá±á¬ááºáá¯á¶ážááááºáááŸáááẠáááá¯á¡ááºáá² áá¯ááºá¡ááá¯ááºážáá»á¬ážááᯠáááºááŸá¬ážááá¯ááºááẠááá¯á·ááá¯áẠááŸá±á¬áá·áºááŸá±ážááá¯ááºáá«áááºá
- áááºááá·áºá¡á
á®á¡á
á¥áºááᯠáá±á«áºáááºááŸáá·áº ááœá²á
áááºááŸá¯ááŒá¯áá¯ááºáá±á¬á¡áá« áá¬ááŒá
áºáááºááᯠááŸááºážááŸááºážáááºážáááºáž áá¬ážáááºáá«á
á¥ááá¬á¡á¬ážááŒáá·áº Request ááẠWS service ááá¯á·áá±á¬ááºáá¬ááẠ-> WS service á០data áá»á¬ážááᯠR service ááŸááá·áºááẠ-> ááá¯á·áá±á¬áẠV service ááá¯á· áá±á¬ááºážááá¯ááŸá¯áá áºáá¯áá±ážááá¯á·ááẠ-> V service ááẠR á០data áá»á¬ážá áœá¬ááᯠload áá¯ááºáááºááá¯ááœá±á·ááŒááºááá¯ááºáá«áááºá service -> P áááºáá±á¬ááºááŸá¯ááá¯á·ááœá¬ážááẠ-> P áááºáá±á¬ááºááŸá¯ááẠáááºáá±á¬ááºááŸá¯ R -> áááºáá±á¬ááºááŸá¯ V ááá¯á· ááŒááºááœá¬ážááẠááááºááᯠáá»á áºáá»á°ááŸá¯ááŒá®áž áá¬ážáá ẠJ ááá¯á·ááœá¬ážááẠ-> ááá¯á·áá±á¬ááºááŸáᬠáááºáá±á¬ááºááŸá¯ WS ááá¯á· áá¯á¶á·ááŒááºááŸá¯ááᯠááŒááºáá±ážáᬠá¡ááŒá¬ážá¡áá¬áá»á¬ážááᯠáááºáááºááœááºáá»ááºáá±áá»áááºááœááºá áá±á¬ááºáá¶á
áá¯ááºáááºážá ááºáá áºáá¯áá¯á¶ážá¡ááœáẠááá¯ááá¯á·áá±á¬áá²ááœááºá ááá¯á·ááá¯áẠá¡áá±ážá áááºá á¬ááœááºá á¬áááºážáá»á¬ážááá«áá²á áááºááẠáá¯ááºááᯠááááá¯á¶ážá¡ááŒáááºááŒáá·áºááŸá¯áá±á¬á¡áá«ááœáẠááŒá áºáá»ááºáá±áááºáá»á¬ážááᯠáá¬ážáááºááẠá¡ááœááºáááºáá²ááŒá®áž áá¯ááºááẠááá°áá®áá±á¬áááºáá±á¬ááºááŸá¯áá»á¬ážáá±á«áºááœáẠááŒáá·áºáá»á²áá±ááŒá®áž bins ááŸáá·áº interface á¡áá»á¬ážá¡ááŒá¬ážáá±á¬ááºááœáẠááŸááºáá¬ážáááºá - áá±á¬ááºáááºááœá² ááœáŸá±á·ááá¯ááºážáá¬ážáá±á¬ ááœá²ááŒááºážá
áááºááŒá¬ááŸá¯á¡ááœáẠááœááºáá»ááºááŸá¯áá
áºáááºá¡ááŒá±á¬ááºáž á¡áá»ááºá¡áááºá
á¯áá±á¬ááºážááŒááºážá áá¯ááºáá±á¬ááºááŸá¯ á¡ááá·áºáá
áºáá¯á
á®ááœááºá áááºááẠá€á¡ááá·áºááœáẠáááŸáááá¯ááºááá·áº ááŒá±áá¬áá¶ááá¯á· á¡áá»ááºá¡áááºáá»á¬ážááᯠáá±á«ááºážááá·áºááá¯ááºááŒá®áž á¡áá¬ážáá° á¡ááŒá±á¡áá±áá»áá¯ážááá¯á· áááºáá²á·ááá¯á· ááá·áºááœááºážááá·áº á¡áá»ááºá¡áááºááᯠááœááºáááá¯ááºáááºáááºážá á¥ááá¬á¡á¬ážááŒááºá·:
- áá¯á¶ážá áœá²áá°á¡áá¯ááºáá®
- á¡ááœááºá·á¡áá±ážáá»á¬áž
- ááœá±ážáá»ááºáá¬ážáá±á¬áááºážáááºážá¡áá»áá¯ážá¡á á¬áž
- ááŸááºáááºáž ááá¯á·ááá¯áẠáá¯ááºáá±á¬ááºááŸá¯ á¡ááŸá¬ážá¡ááœááºáž
- ááŒá±áá¬áá»á¬ážááᯠáááºááá áºáá»á¬ážá á¡á á¯ááœá²áá áºáá¯á¡ááŒá áºááá¯á· ááŒá±á¬ááºážáá²áᬠáááºááá áºáá»á¬ážáá¯á¶á á¶ááŒáá·áº ááŸáááŸáá·áºááŒá®ážáá¬áž áá±á¬ááºáááºááœá²ááŒááºážá áááºááŒá¬ááŸá¯áá»á¬ážá
áááºááŒá±áá¬áá¶ááá¯ááºááá²á ááœá¬
ááŒá±áá¬áá¶ááŒááºážááœáẠspan áá áºáá¯á ááá±á¬ááá¬ážáá áºáᯠááŸááááºá áááºážááẠááœááºááá¯ážááºááá¯á· ááŸááºáááºážáá áºáá¯á analogue áá áºáá¯ááŒá áºáááºá Spa ááœááº-
- á¡áááºá á¡áá»á¬ážá¡á¬ážááŒáá·áº áá¯ááºáá±á¬ááºáá²á·áá±á¬ áááºážáááºážá á¡áááºááŒá áºáááºá
- span ááá¯áá¯ááºáá±ážááá·áºáááºáá±á¬ááºááŸá¯áá¡áááº
- ááá¯ááºááá¯ááºáá°ážááŒá¬ážáá±á¬ ID
- áááºážááá¯á·áááºáá±á¬ááºáá¬ážááá·áºáá±á¬á·/áááºááá¯ážáá¯á¶á á¶ááŒáá·áº meta á¡áá»ááºá¡áááºá¡áá»áá¯á·á á¥ááá¬á¡á¬ážááŒáá·áº method parameters áá»á¬áž ááá¯á·ááá¯áẠmethod ááẠerror ááá¯á·ááá¯áẠnot ááŒáá·áº á¡áá¯á¶ážáááºáá«áááºá
- á€á¡ááá¯ááºážá¡ááœáẠá áááºáá»áááºááŸáá·áº ááŒá®ážáá¯á¶ážáá»áááºáá»á¬áž
- áááºáá¡ááá¯ááºážá¡áᬠID
á¡ááá¯ááºážáá áºáá¯á á®ááᯠáááºážááá¯ááºáá±á¬ááºááŸá¯ááŒá®ážáááºááŸáá·áºáááŒáá¯ááºááẠáá±á¬ááºááá¯ááºážááŒááºáááºáá¯á¶ážáááºáááºá¡ááœáẠáá±áá¬áá±á·á áºááœáẠááááºážáááºážáá¬ážááẠspan á á¯áá±á¬ááºážáá°áᶠáá±ážááá¯á·áááºá á¡áá¬áááºááœááºá ááá ID ááŒáá·áº áá»áááºáááºááŒááºážááŒáá·áº áááºáááºá¡á¬ážáá¯á¶ážá áá áºáááºáá áºáááºááᯠáááºáááºáá±á¬ááºááá¯ááºáááºá ááœá²ááŒááºážá áááºááŒá¬ááá·áºá¡áá«á á¥ááá¬á¡á¬ážááŒáá·áºá á¡áá»áá¯á·áá±á¬áááºáá±á¬ááºááŸá¯áá»á¬ážááœáẠá¡áá»áááºááá¯áá°áááá·áº á¡ááá¯ááºážá¡áá¬á¡á¬ážáá¯á¶ážááᯠáááºááœá±á·ááá¯ááºáááºá ááá¯á·á¡ááŒááºá áááºááŸááºáá¬ážáá±á¬á¡ááá¯ááºážá¡áá¬áá áºáá¯ááá¯á·ááœá¬ážááŒááºážááŒáá·áºá á€á¡ááá¯ááºážá¡áá¬á¡áá±á«áºááŸáá·áºá¡á±á¬ááºááŸááá áºáááºáá áºáá¯áá¯á¶ážááá¯ááŒáá·áºáá«á
Opentraceá Jagger ááŸáá·áº áá»áœááºá¯ááºááá¯á·á ááá±á¬áá»ááºáá»á¬ážá¡ááœáẠáááºážááᯠáááºááá¯á·á¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·ááááºážá
áá¯á¶á
á¶áá
áºáá¯ááŸááááºá
áá»áœááºáá±á¬áºááá¯á· áá¯á¶ážáá±áááºá
- Jaeger-agent ááẠá ááºáá áºáá¯á á®ááœáẠáá¯á¶ááŸááºá¡á¬ážááŒáá·áº ááá·áºááœááºážáá±á·ááŸáááŒá®áž áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá ááºááœááºážááŸá áá¯á¶áá±á¡áá±á«ááºááœáẠááá·áºááœááºážáá¬ážáááºá á¡á±ážáá»áá·áºáááŸááá«áá á€á ááºááŸá áááºáá±á¬ááºááŸá¯á¡á¬ážáá¯á¶ážá ááŒá±áá¬áá»á¬ážááᯠáá»á¬ážáá±á¬á¡á¬ážááŒáá·áº ááááºáá¬ážáááºá
- Jaeger-collector - á¡á±ážáá»áá·áºáá»á¬ážá¡á¬ážáá¯á¶ážááẠáááºážáᶠá á¯áá±á¬ááºážáá¬ážáá±á¬ ááŒá±áá¬áá»á¬ážááᯠáá±ážááá¯á·ááŒá®áž áááºážááá¯á·ááᯠááœá±ážáá»ááºáá¬ážáá±á¬ áá±áá¬áá±á·á áºááœáẠááá·áºááœááºážáá¬ážáááºá
- áá±áá¬áá±á·á áºááẠáááºážááá¯á·ááŸá áºáááºáá±á¬ Cassandra ááŒá áºáááºá ááá¯á·áá±á¬áº áá»áœááºá¯ááºááá¯á·ááẠelasticsearch ááá¯á¡áá¯á¶ážááŒá¯áááºá á¡ááŒá¬ážáá±áá¬áá±á·á áºá¡áá»áá¯á·ááŸáá·áº disk ááœááºáá¬ááŸáááááºážáááºážááá¯ááºáá±á¬ in-memory á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážá¡ááœáẠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážááŸááá«áááºá
- Jaeger-query ááẠáá±áá¬áá±á·á áºááá¯á·ááœá¬ážáᬠááœá²ááŒááºážá áááºááŒá¬áááºá¡ááœáẠá á¯áá±á¬ááºážáá¬ážááŒá®ážáá±á¬ ááŒá±áá¬áá»á¬ážááᯠááŒááºáá±ážááá·áº áááºáá±á¬ááºááŸá¯áá áºáá¯ááŒá áºáááºá
- Jaeger-ui ááẠááŒá±áá¬áá»á¬ážááᯠááŸá¬ááœá±ááŒááºážááŸáá·áº ááŒáá·áºááŸá¯ááŒááºážá¡ááœáẠáááºá¡ááºáá¬áá±á·á áºáá áºáá¯ááŒá áºááŒá®áž áááºážááẠjaeger-query ááá¯á·ááœá¬ážáááº
áá®ážááŒá¬ážáá¬áá¬á
áá¬ážáá»á¬ážá¡ááœáẠopentrace jaeger ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážáᯠáá±á«áºááá¯ááá¯ááºááŒá®áž áááºážááŸáááá·áº jaeger-agent ááá¯á· spans áá»á¬ážááᯠáá±ážááá¯á·áááºá
á
áááááºá¡á
áááºá¡ááá¯ááºážáá»á¬ážá¡ááœááºáááºáž, áááºáá»áááºáááºááá¯ááºáá«áááºá
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 áá±á¬ááºážááá¯ááŸá¯áá»á¬ážá¡ááœáẠááŸááá«áááºá
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 ááᯠááŒááºáááºá áááºááŒááºážááŒáá·áº áá°áá®áá²á·áááºá
ááá°áá¬áá°ááŒááºážá ááááºážáááºážááŒááºážááŸáá·áº ááŒá±áá¬áá»á¬ážááá¯ááŒáá·áºááŸá¯ááŒááºážá
áá¯á¶ážáá»áá¯ážááŸááááºá
- ááŒá±áá¬áá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá±ážááá¯á·ááŒá®áž ááááºážáááºážáá±ážááá·áº Const
- ááŒá áºááá¯ááºááŒá±á¡áá»áá¯á·ááŸáá·áº ááŒá±áá¬áá¶áá»á¬ážááᯠá á áºáá¯ááºááá·áº Probabilistic
- áá áºá áá¹ááá·áºáá»áŸáẠááŒá±áá¬áá¶á¡áá±á¡ááœááºááᯠááá·áºáááºááá·áº á¡ááá·áºáááºááŸááºááŒááºážá jaeger-agent ááœááºááŒá áºá á± á á¯áá±á¬ááºážáá°ááœááºááŒá áºá á± á€áááºáááºáá»á¬ážááᯠclient ááœáẠconfigure áá¯ááºááá¯ááºáá«áááºá áá±á¬ááºážááá¯ááŸá¯áá»á¬ážá áœá¬áááŸááá±á¬áºáááºáž áááºážááá¯á·ááẠá¡áá»áááºááŒá¬ááŒáá·áºáá±á¬ááŒá±á¬áá·áº ááá¯áá»áœááºá¯ááºááá¯á·ááẠvaluator stack ááœáẠconst 1 ááá¯á¡áá¯á¶ážááŒá¯áá«áááºá áá±á¬ááºááœááºá áááºážááẠá áá áºááœáẠá¡ááœááºá¡áá»áœá¶ áááºááá¯áá¬áá«áá áááºááẠáááºážááᯠááá·áºáááºááá¯ááºáááºá
á¡áááºá áááºááẠCassandra ááá¯á¡áá¯á¶ážááŒá¯áá«áá áá¯á¶ááŸááºá¡á¬ážááŒáá·áº áááºážááẠáá²ááœááºá
áá»á¬ážááᯠááŸá
áºáááºáᬠááááºážáááºážáá¬ážáááºá áá»áœááºáá±á¬áºááá¯á· áá¯á¶ážáá±áááºá
áá²ááœááºá áá»á¬ážááá¯ááŒáá·áºááŸá¯áááºá¡ááœáẠáááºááá¯á¡ááºáááº-
- á¥ááá¬á tomcat ááœááºáááºáááºáá±ááŒá®áž áááºážáááá¯ááºááá¯ááºá¡áááºááááá¯ááºáá±á¬áááºáá±á¬ááºááŸá¯á¡ááœáẠtomcat7-áá°á-ááŒá±áá¬áá»á¬ážááá¯áááºá á áºáá¯ááºááá¯ááá·áºáááºáá±á¬ááºááŸá¯ááá¯ááœá±ážáá»ááºáá«á
- ááá¯á·áá±á¬áẠááŒá¬ááŒáá·áºá
áœá¬ ááœááºáá»ááºááŒááºážáá»á¬ážááá¯áᬠááŒá¯áá¯ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áº 10 á
áá¹ááá·áºá០áá¯ááºáá±á¬ááºáá»ááºá á¡áá»áááºááŒá¬ážáá¬áááŸáá·áº á¡áááºážáá¯á¶áž áááºáááºáá»áááºááᯠááœá±ážáá»ááºáá«á
- áá²ááœááºá
áá»á¬ážáá²á០áá
áºáá¯ááá¯á·ááœá¬ážá ááá¯áá±áá¬ááœáẠá¡ááŸáááºáá»áŸá±á¬á·ááœá¬ážáááºááᯠááŒáá·áºáá«á
ááá¯á·á¡ááŒááºá á¡áá»áá¯á·áá±á¬áá±á¬ááºážááá¯ááŸá¯ id ááá¯áááá«áá ဠid ááẠtrace span ááœááºáááºáá±á¬ááºáá±áá«áá á€id ááᯠtrace span ááœááºáááºáá±á¬ááºáá¬ážáá«áá ဠid ááŸááŒá±áá¬áá¶ááá¯ááŸá¬ááœá±ááá¯ááºáááºá
á á¬ááœááºá á¬áááºážáá»á¬áž
- opentracing á
á¬ááœááºá
á¬áááºáž
opentracing.io/docs/overview/what-is-tracing - jaeger á
á¬áááºáž
www.jaegertracing.io/docs/1.10 - Jaeger java áá»áááºáááºááŸá¯
github.com/jaegertracing/jaeger-client-java - spring open tracing áá»áááºáááºááŸá¯
github.com/jaegertracing/jaeger-client-java
github.com/opentracing-contrib/java-spring-cloud
áá±á¬ááºážáá«ážáá»á¬áž
habr.com/ru/company/carprice/blog/340946 áááá·áº PHP ááŸáá·áº Golang ááá±á¬áá»ááºááœáẠJaeger Opentracing ááŸáá·áº Microserviceswww.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 Borehamwww.youtube.com/watch?v=WRntQsUajow ááááºáááº- Jaeger - Yuri Shkuroá Uber ááŸáá·áº Pavol Loffayá Red Hatwww.youtube.com/watch?v=fsHb0qK37bc Sergei Iakovlevá "ááŒá®ážáá¬ážáá²á·á¡á±á¬ááºááœá²áá²á·á¡áá±ážá á¬ážáá¬ááºáááºáž- OpenTracingá AWS áá²á· Jaeger"
source: www.habr.com