์ฐ๋ฆฌ๋ ํ๋ก์ ํธ์์ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ๋ฉด ๋ก๊ทธ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๋ฐ ๋ง์ ์๊ฐ์ด ์์๋ฉ๋๋ค. ๊ฐ๋ณ ์์
์ ํ์ด๋ฐ์ ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋กํ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ์์
์ด ํธ์ถ๋ ์์ธ์ ์ดํดํ๊ณ ์์
์์๋ฅผ ์ถ์ ํ๊ฑฐ๋ ๋ค๋ฅธ ์๋น์ค์์ ๋ค๋ฅธ ์์
์ ๋ํ ํ ์์
์ ์๊ฐ ์ด๋์ ์ถ์ ํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
์์์
์ ์ต์ํํ๊ธฐ ์ํด ์ถ์ ๋๊ตฌ ์ค ํ๋๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ถ์ ์ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ๊ณผ ์ด์ ๋ฐ ์ถ์ ๋ฐฉ๋ฒ์ ๋ํด ์ด ๋ฌธ์์์ ์ค๋ช
ํฉ๋๋ค.
์ถ์ ์ผ๋ก ํด๊ฒฐํ ์ ์๋ ๋ฌธ์
- ๋จ์ผ ์๋น์ค ๋ด์์ ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์ฐธ์ฌ ์๋น์ค ์ฌ์ด์ ์ ์ฒด ์คํ ํธ๋ฆฌ์์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์ฐพ์ผ์ญ์์ค. ์๋ฅผ ๋ค์ด:
- ์๋ฅผ ๋ค์ด ์ง์ค์ฝ๋ฉ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์๋น์ค ๊ฐ ์งง์ ์ฐ์ ํธ์ถ์ด ๋ง์ต๋๋ค.
- ๋คํธ์ํฌ ์ ์ก ๋๋ ๋์คํฌ ์ฝ๊ธฐ์ ๊ฐ์ ๊ธด I/O ๋๊ธฐ.
- ๊ธด ๋ฐ์ดํฐ ๊ตฌ๋ฌธ ๋ถ์.
- CPU๊ฐ ํ์ํ ๊ธด ์์ .
- ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๋ฐ ํ์ํ์ง ์์ผ๋ฉฐ ์ ๊ฑฐํ๊ฑฐ๋ ์ง์ฐํ ์ ์๋ ์ฝ๋ ์น์ ์ ๋๋ค.
- ์ด๋ค ์์๋ก ๋ฌด์์ด ํธ์ถ๋๊ณ ์์
์ด ์ํ๋ ๋ ์ด๋ค ์ผ์ด ๋ฐ์ํ๋์ง ๋ช
ํํ๊ฒ ์ดํดํฉ๋๋ค.
์๋ฅผ ๋ค์ด Request๊ฐ WS ์๋น์ค์ ์๋ค -> WS ์๋น์ค๊ฐ R ์๋น์ค๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ค -> ๊ทธ ํ V ์๋น์ค์ ์์ฒญ์ ๋ณด๋๋ค -> V ์๋น์ค๊ฐ R ์๋น์ค์์ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ค -> P ์๋น์ค๋ก ๊ฐ๋ค -> P ์๋น์ค๊ฐ ๋ค์ R ์๋น์ค๋ก ๊ฐ๋ค -> V ์๋น์ค๊ฐ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฌด์ํ๊ณ J ์๋น์ค๋ก ๊ฐ๋ค -> ๊ทธ ๋ค์์๋ง WS ์๋น์ค์ ์๋ต์ ๋ฐํํ๋ฉด์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ค๋ฅธ ๊ฒ์ ๊ณ์ ๊ณ์ฐํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ ์ฒด ํ๋ก์ธ์ค์ ๋ํ ์ด๋ฌํ ์ถ์ ์ด๋ ์์ธํ ๋ฌธ์๊ฐ ์์ผ๋ฉด ์ฝ๋๋ฅผ ์ฒ์ ๋ณผ ๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ดํดํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต๊ณ ์ฝ๋๊ฐ ์ฌ๋ฌ ์๋น์ค์ ํฉ์ด์ ธ ์๊ณ ๋ง์ ๋น๊ณผ ์ธํฐํ์ด์ค ๋ค์ ์จ๊ฒจ์ ธ ์์ต๋๋ค. - ํ์ ์ง์ฐ ๋ถ์์ ์ํ ์คํ ํธ๋ฆฌ์ ๋ํ ์ ๋ณด ์์ง. ์คํ์ ๊ฐ ๋จ๊ณ์์ ์ด ๋จ๊ณ์์ ์ฌ์ฉํ ์ ์๋ ์ถ์ ์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ ๋ค์ ์ ์ฌํ ์๋๋ฆฌ์ค๋ก ์ด์ด์ง ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ ํ์
ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด:
- ์ฌ์ฉ์ ์์ด๋
- ๊ถ๋ฆฌ
- ์ ํํ ๋ฐฉ๋ฒ์ ์ ํ
- ๋ก๊ทธ ๋๋ ์คํ ์ค๋ฅ
- ์ถ์ ์ ์งํ์ ํ์ ์งํฉ์ผ๋ก ์ ํํ๊ณ ์ด๋ฏธ ์งํ ํํ๋ก ์ถ๊ฐ ๋ถ์ํฉ๋๋ค.
์ด๋ค ์ถ์ ์ ๊ธฐ๋กํ ์ ์์ต๋๋ค. ๊ธฐ๊ฐ
์ถ์ ์๋ ๋ฒ์์ ๊ฐ๋ ์ด ์์ผ๋ฉฐ ์ด๋ ์ฝ์์ ๋ํ ํ๋์ ๋ก๊ทธ์ ์ ์ฌํฉ๋๋ค. ์คํ์๋ ๋ค์์ด ์์ต๋๋ค.
- ์ด๋ฆ, ์ผ๋ฐ์ ์ผ๋ก ์คํ๋ ๋ฉ์๋์ ์ด๋ฆ
- ์คํฌ์ด ์์ฑ๋ ์๋น์ค์ ์ด๋ฆ
- ์์ ์ ๊ณ ์ ID
- ๋ก๊ทธ์ธ๋ ํค/๊ฐ ํ์์ ์ผ์ข ์ ๋ฉํ ์ ๋ณด์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฉ์๋ ๋งค๊ฐ๋ณ์ ๋๋ ๋ฉ์๋๊ฐ ์ค๋ฅ๋ก ์ข ๋ฃ๋์๋์ง ์ฌ๋ถ
- ์ด ๊ธฐ๊ฐ์ ์์ ๋ฐ ์ข ๋ฃ ์๊ฐ
- ์์ ์คํฌ ID
๊ฐ ๋ฒ์๋ ์คํ์ด ์๋ฃ๋๋ ์ฆ์ ๋์ค์ ๊ฒํ ํ ์ ์๋๋ก ๋ฒ์ ์์ง๊ธฐ๋ก ์ ์ก๋์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ฉ๋๋ค. ์์ผ๋ก๋ ์์ ID๋ก ์ฐ๊ฒฐํ์ฌ ๋ชจ๋ ์คํฌ์ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ถ์ํ ๋ ์ผ์ ์๊ฐ ์ด์ ์์๋ ์ผ๋ถ ์๋น์ค์ ๋ชจ๋ ๋ฒ์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ๋ํ ํน์ ๋ฒ์๋ก ์ด๋ํ๋ฉด ์ด ๋ฒ์ ์์ ์๋์ ์ ์ฒด ํธ๋ฆฌ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
Opentrace, Jagger ๋ฐ ์ด๋ฅผ ํ๋ก์ ํธ์ ๊ตฌํํ ๋ฐฉ๋ฒ
๊ณตํต๋ ๊ธฐ์ค์ด ์์ต๋๋ค
์ฐ๋ฆฌ๋ ์ฌ์ฉํ๊ณ ์์ต๋๋ค
- Jaeger-agent๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ ์์คํ ์ ์ค์น๋๋ ๋ก์ปฌ ์์ด์ ํธ์ด๋ฉฐ ์๋น์ค๋ ๋ก์ปฌ ๊ธฐ๋ณธ ํฌํธ์ ๋ก๊ทธ์ธ๋ฉ๋๋ค. ์์ด์ ํธ๊ฐ ์์ผ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์ด ์์คํ ์ ๋ชจ๋ ์๋น์ค ์ถ์ ์ด ๋นํ์ฑํ๋ฉ๋๋ค.
- Jaeger-collector - ๋ชจ๋ ์์ด์ ํธ๊ฐ ์์ง๋ ์ถ์ ์ ๋ณด๋ด๊ณ ์ ํํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ทธ๋ค์ด ์ ํธํ๋ cassandra์ด์ง๋ง ์ฐ๋ฆฌ๋ elasticsearch๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ช ๊ฐ์ง ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๊ตฌํ๊ณผ ๋์คํฌ์ ์๋ฌด๊ฒ๋ ์ ์ฅํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ๋ด ๊ตฌํ์ด ์์ต๋๋ค.
- Jaeger-query๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ด๋ํ์ฌ ๋ถ์์ ์ํด ์ด๋ฏธ ์์ง๋ ํธ๋ ์ด์ค๋ฅผ ๋ฐํํ๋ ์๋น์ค์ ๋๋ค.
- Jaeger-ui๋ ์ถ์ ์ ๊ฒ์ํ๊ณ ๋ณด๊ธฐ ์ํ ์น ์ธํฐํ์ด์ค์ด๋ฉฐ jaeger-query๋ก ์ด๋ํฉ๋๋ค.
๋ณ๋์ ๊ตฌ์ฑ ์์๋ ํน์ ์ธ์ด์ ๋ํ opentrace jaeger ๊ตฌํ์ด๋ผ๊ณ ํ ์ ์์ผ๋ฉฐ ์ด๋ฅผ ํตํด ์คํฌ์ด jaeger-agent๋ก ์ ์ก๋ฉ๋๋ค.
๋ํ ์คํ๋ง ๊ตฌ์ฑ ์์์ ๊ฒฝ์ฐ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
Java์์ ์ถ์ ๋ก๊ทธ์ธ
์ต์์ ๋ ๋ฒจ ์ด๋๊ฐ์ ์ฒซ ๋ฒ์งธ Span์ด ์์ฑ๋์ด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ์๋ฅผ ๋ค์ด ์์ฒญ์ด ์์ ๋ ๋ ์คํ๋ง ์ปจํธ๋กค๋ฌ์ ์ํด ์๋์ผ๋ก ์ํ๋๊ฑฐ๋ ์์ฒญ์ด ์๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ํ๋ ์ ์์ต๋๋ค. ์ดํ ์๋ Scope๋ฅผ ํตํด ์ ์ก๋ฉ๋๋ค. ์๋ ๋ฐฉ๋ฒ ์ค ํ๋๊ฐ Span์ ์ถ๊ฐํ๋ ค๋ ๊ฒฝ์ฐ Scope์์ ํ์ฌ activeSpan์ ๊ฐ์ ธ์์ ์ Span์ ์์ฑํ๊ณ ๋ถ๋ชจ๊ฐ ๊ฒฐ๊ณผ activeSpan์ด๋ผ๊ณ ๋งํ๊ณ ์ Span์ ํ์ฑํํฉ๋๋ค. ์ธ๋ถ ์๋น์ค๋ฅผ ํธ์ถํ๋ฉด ํ์ฌ ํ์ฑ ์คํฌ์ด ์ ๋ฌ๋๊ณ ํด๋น ์๋น์ค๋ ์ด ์คํฌ์ ์ฐธ์กฐํ์ฌ ์ ์คํฌ์ ์์ฑํฉ๋๋ค.
๋ชจ๋ ์์
์ Tracer ์ธ์คํด์ค๋ฅผ ๊ฑฐ์น๋ฉฐ DI ๋ฉ์ปค๋์ฆ์ ํตํด ๊ฐ์ ธ์ค๊ฑฐ๋ DI ๋ฉ์ปค๋์ฆ์ด ์๋ํ์ง ์๋ ๊ฒฝ์ฐ GlobalTracer.get()์ ์ ์ญ ๋ณ์๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํธ๋ ์ด์๊ฐ ์ด๊ธฐํ๋์ง ์์ ๊ฒฝ์ฐ NoopTracer๋ ์๋ฌด ์์
๋ ์ํํ์ง ์๋ ๊ฒ์ ๋ฐํํฉ๋๋ค.
๋ํ ScopeManager๋ฅผ ํตํด ํธ๋ ์ด์๋ก๋ถํฐ ํ์ฌ ์ค์ฝํ๋ฅผ ํ๋ํ๊ณ , ํ์ฌ ์ค์ฝํ์์ ์ ์คํฌ์ ๋ฐ์ธ๋ฉํ์ฌ ์ ์ค์ฝํ๋ฅผ ์์ฑํ ํ ์์ฑ๋ ์ค์ฝํ๋ฅผ ๋ซ๊ณ ์์ฑ๋ ์คํฌ์ ๋ซ๊ณ ์ด์ ์ค์ฝํ๋ฅผ ํ์ฑ ์ํ๋ก ๋๋๋ฆฝ๋๋ค. ์ค์ฝํ๋ ์ค๋ ๋์ ๋ฌถ์ฌ ์์ผ๋ฏ๋ก ๋ฉํฐ ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ ์ ํ์ฑ ์คํฌ์ ๋ค๋ฅธ ์ค๋ ๋๋ก ์ ์กํ์ฌ ์ด ์คํฌ์ ์ฐธ์กฐํ์ฌ ๋ค๋ฅธ ์ค๋ ๋์ ์ค์ฝํ๋ฅผ ์ถ๊ฐ๋ก ํ์ฑํํ๋ ๊ฒ์ ์์ง ๋ง์์ผ ํฉ๋๋ค.
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)) {
...
}
});
}
}
๋ค์ค ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ๊ฒฝ์ฐ ๋น๋๊ธฐ ์์ ์ด ์์๋ ๋ ์๋์ผ๋ก ํ์ฌ ๋ฒ์๋ฅผ ์ค๋ ๋๋ก ์ ๋ฌํ๋ TracedExecutorService ๋ฐ ์ ์ฌํ ๋ํผ๋ ์์ต๋๋ค.
private ExecutorService executor = new TracedExecutorService(
Executors.newFixedThreadPool(10), GlobalTracer.get()
);
์ธ๋ถ http ์์ฒญ์ ๊ฒฝ์ฐ
HttpClient httpClient = new TracingHttpClientBuilder().build();
์ฐ๋ฆฌ๊ฐ ์ง๋ฉดํ ๋ฌธ์
- ์๋น์ค ๋๋ ๊ตฌ์ฑ ์์์์ ์ถ์ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด Bean ๋ฐ DI๊ฐ ํญ์ ์๋ํ์ง ์๋ ๊ฒฝ์ฐ
์๋ ์ ์ Tracer๊ฐ ์๋ํ์ง ์์ ์ ์์ผ๋ฉฐ GlobalTracer.get()์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. - ์ฃผ์์ ๊ตฌ์ฑ ์์ ๋๋ ์๋น์ค๊ฐ ์๋๊ฑฐ๋ ๋์ผํ ํด๋์ค์ ์ธ์ ๋ฉ์๋์์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ ์๋ํ์ง ์์ต๋๋ค. @Traced๊ฐ ์๋ํ์ง ์์ผ๋ฉด ๋ฌด์์ด ์๋ํ๋์ง ํ์ธํ๊ณ ์๋ ์ถ์ ์์ฑ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. Java ์ฃผ์์ ์ํ ์ถ๊ฐ ์ปดํ์ผ๋ฌ๋ฅผ ์ฐ๊ฒฐํ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ชจ๋ ๊ณณ์์ ์๋ํฉ๋๋ค.
- ์ด์ ์คํ๋ง ๋ฐ ์คํ๋ง ๋ถํธ์์ DI์ ๋ฒ๊ทธ๋ก ์ธํด opentraing ์คํ๋ง ํด๋ผ์ฐ๋ ์๋ ๊ตฌ์ฑ์ด ์๋ํ์ง ์๋ ๊ฒฝ์ฐ ์คํ๋ง ๊ตฌ์ฑ ์์์ ์ถ์ ์ด ์๋์ผ๋ก ์๋ํ๋๋ก ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ ์ถํ์ฌ ์ํํ ์ ์์ต๋๋ค.
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์์ ์๋ํ์ง ์์ผ๋ฏ๋ก try finally๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- ๊ฐ ์๋น์ค์๋ ์ถ์ ์ด ๊ธฐ๋ก๋ ์์ฒด spring.application.name์ด ์์ด์ผ ํฉ๋๋ค. ํจ๊ป ๋ฐฉํดํ์ง ์๋๋ก ํ๋งค ๋ฐ ํ ์คํธ์ ๋ํ ๋ณ๋์ ์ด๋ฆ์ ๋ฌด์์ ๋๊น?
- GlobalTracer์ tomcat์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด tomcat์์ ์คํ๋๋ ๋ชจ๋ ์๋น์ค์๋ ํ๋์ GlobalTracer๊ฐ ์์ผ๋ฏ๋ก ๋ชจ๋ ๋์ผํ ์๋น์ค ์ด๋ฆ์ ๊ฐ๊ฒ ๋ฉ๋๋ค.
- ๋ฉ์๋์ ์ถ์ ์ ์ถ๊ฐํ ๋ ๋ฃจํ์์ ์ฌ๋ฌ ๋ฒ ํธ์ถ๋์ง ์๋๋ก ํด์ผ ํฉ๋๋ค. ์ด ์์ ์๊ฐ์ ๋ณด์ฅํ๋ ๋ชจ๋ ํตํ์ ๋ํด ํ๋์ ๊ณตํต ์ถ์ ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๊ณผ ๋ถํ๊ฐ ์์ฑ๋ฉ๋๋ค.
- ์๊ฑฐ์ ํ ๋ฒ์ ๋๋ฌด ๋ง์ ์ถ์ ์ ๋๋ฌด ๋ง์ด ์์ฒญํ๊ณ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์์๊ธฐ ๋๋ฌธ์ ๋ค์ ์ํํ์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก jaeger-query๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ก์๋จน๊ณ ํ์ฑ์ ๋ฆ์ถ๊ธฐ ์์ํ์ต๋๋ค. jaeger-query๋ฅผ ๋ค์ ์์ํ์ฌ ๋์์ ๋ฐ์
ํธ๋ ์ด์ค ์ํ๋ง, ์ ์ฅ ๋ฐ ๋ณด๊ธฐ
์ธ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค
- ๋ชจ๋ ์ถ์ ์ ๋ณด๋ด๊ณ ์ ์ฅํ๋ Const.
- ์ฃผ์ด์ง ํ๋ฅ ๋ก ํธ๋ ์ด์ค๋ฅผ ํํฐ๋งํ๋ ํ๋ฅ ์ ์ ๋๋ค.
- ์ด๋น ์ถ์ ์๋ฅผ ์ ํํ๋ ์๋ ์ ํ. jaeger-agent ๋๋ ์์ง๊ธฐ์ ํด๋ผ์ด์ธํธ์์ ์ด๋ฌํ ์ค์ ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด์ ์์ฒญ์ด ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ํ๊ฐ์ ์คํ์์ const 1์ ์ฌ์ฉํ์ง๋ง ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ์์ผ๋ก ์ด๊ฒ์ด ์์คํ ์ ๊ณผ๋ํ ๋ถํ๋ฅผ ์ค ๊ฒฝ์ฐ ์ด๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
cassandra๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก XNUMX์ผ ๋์๋ง ์ถ์ ์ ์ ์ฅํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ฉํ๊ณ ์์ต๋๋ค
์ถ์ ์ ๋ณด๋ ค๋ฉด ๋ค์์ด ํ์ํฉ๋๋ค.
- ์ถ์ ์ ํํฐ๋งํ ์๋น์ค๋ฅผ ์ ํํฉ๋๋ค(์: tomcat์์ ์คํ ์ค์ด๊ณ ์์ฒด ์ด๋ฆ์ ๊ฐ์ง ์ ์๋ ์๋น์ค์ ๊ฒฝ์ฐ tomcat7-default).
- ๊ทธ๋ฐ ๋ค์ ๊ธด ์คํ๋ง ์ํํ๋ ค๋ฉด ์์
, ์๊ฐ ๊ฐ๊ฒฉ ๋ฐ ์ต์ ์์
์๊ฐ(์: 10์ด)์ ์ ํํฉ๋๋ค.
- ํ์ ์ค ํ๋๋ก ์ด๋ํ์ฌ ์๋๊ฐ ๋๋ ค์ง๋ ๊ฒ์ ํ์ธํ์ญ์์ค.
๋ํ ์ด๋ค request id๋ฅผ ์๊ณ ์๋ค๋ฉด ์ด id๊ฐ trace span์ ๊ธฐ๋ก๋์ด ์๋ค๋ฉด ํ๊ทธ ๊ฒ์์ ํตํด ์ด id๋ก trace๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
ะะพะบัะผะตะฝัะฐัะธั
- ์คํ ํธ๋ ์ด์ฑ ๋ฌธ์
opentracing.io/docs/overview/what-is-tracing - ์๊ฑฐ ๋ฌธ์
www.jaegertracing.io/docs/1.10 - ์๊ฑฐ ์๋ฐ ์ฐ๊ฒฐ
github.com/jaegertracing/jaeger-client-java - ์คํ๋ง ์คํ ์ถ์ ์ฐ๊ฒฐ
github.com/jaegertracing/jaeger-client-java
github.com/opentracing-contrib/java-spring-cloud
์กฐํญ
habr.com/ru/company/carprice/blog/340946 ์ค์ PHP ๋ฐ Golang ํ๋ก์ ํธ์ Jaeger Opentracing ๋ฐ ๋ง์ดํฌ๋ก์๋น์คwww.uber.com/distributed-tracing Uber Engineering์ ์งํํ๋ ๋ถ์ฐ ์ถ์ 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 Serghei Iakovlev, "ํฐ ์น๋ฆฌ์ ์์ ์ด์ผ๊ธฐ: OpenTracing, AWS ๋ฐ Jaeger"
์ถ์ฒ : habr.com