![[18.0.0.1 and later]](../ng_v18001plus.gif)
명시적 분산 추적 코드 인스트루먼테이션 사용
@Traced 어노테이션을 사용하여 OpenTracing을 위한 클래스 및 메소드를 인스트루먼트화합니다.
이 태스크 정보
OpenTracing을 위해 추적할 클래스 또는 메소드를 지정하려면 @Traced 어노테이션을 적용하십시오.
프로시저
- @Traced 어노테이션을 클래스 또는 메소드에 적용하십시오.
- @Traced 어노테이션을 클래스에 적용하면 어노테이션이 해당 클래스의 모든 메소드에 적용됩니다.
- @Traced 어노테이션이 클래스 및 메소드에 적용되는 경우, 메소드에 적용되는 어노테이션이 더 우선합니다. 어노테이션은 메소드의 시작에서 스팬을 시작하고, 메소드의 끝에서 스팬을 완료합니다.
- 옵션: @Traced 어노테이션에 인수를 적용하십시오.
- value=[true|false]
value=[true] 인수는 기본값입니다.
특정 메소드에 어노테이션을 작성하고 이러한 메소드에 대해 스팬 작성을 사용 안함으로 설정하려면 @Traced(false)를 사용하십시오. 특정 JAX-RS 엔드포인트의 스팬 작성을 사용 안함으로 설정하기 위해 @Traced(false)를 사용할 수도 있습니다. JAX-RS 엔드포인트 메소드에 대해 @Traced(false)를 사용하는 경우, 업스트림 스팬 컨텍스트가 추출되지 않습니다. 아웃바운드 요청에 대해 자동으로 또는 삽입된 추적기로 명시적으로 작성된 모든 스팬은 스팬 계층 구조에서 업스트림 상위 스팬을 보유하지 않습니다. 기본적으로 프로그램은 모든 JAX-RS 엔드포인트 메소드를 추적합니다.
- operationName=<Name for the span>
기본값은 큰따옴표("")입니다.
operationName 값에 큰따옴표("")를 사용하면 @Traced 어노테이션이 기본 조작 이름을 사용합니다. 어노테이션이 있는 메소드가 JAX-RS 엔드포인트가 아닌 경우 메소드에 대한 새 스팬의 기본 조작 이름에 <package name>. <class name>. <method name> 값이 있습니다. 클래스에 operationName 값을 지정하는 경우 메소드가 이를 명시적으로 자체 operationName 값으로 대체하지 않으면 클래스의 모든 메소드에 대해 operationName 값이 사용됩니다.
다음 예제는 @Traced 어노테이션을 위한 선택적 인수를 보여줍니다.
@InterceptorBinding @Target({ TYPE, METHOD }) @Retention(RUNTIME) public @interface Traced { @Nonbinding boolean value() default true; @Nonbinding String operationName() default ""; }
- 구성된 추적기에 액세스하십시오.
- 기본적인 OpenTracing 추적기 오브젝트 구성 인스턴스를 사용하십시오. CDI(Contexts and Dependency Injection)와 함께 구성된 추적기를 사용하려면 MicroProfile 구현을 설정하십시오.
- 이 환경의 특정 애플리케이션을 위해 구성한 추적기 클래스를 삽입하여 구성된 추적기 오브젝트에 액세스하십시오. 각각의 애플리케이션은 다른 추적기 인스턴스를 수신합니다. 추적기 오브젝트는 비즈니스 메소드 안에서 스팬을 작성한 것과 같은 복합적 추적 요구사항에 대한 지원을 가능하게 합니다. 다음 예제는 삽입된 추적기 클래스를 보여줍니다.
@Inject io.opentracing.Tracer configuredTracer;
- 다음 예제와 같이 태그, 로그, 배기지를 스팬에 추가하십시오.
configuredTracer.activeSpan().setTag(...); configuredTracer.activeSpan().log(...); configuredTracer.activeSpan().setBaggage(...);
![[17.0.0.4 and later]](../ng_v17004plus.gif)

파일 이름: twlp_dist_tracing_code_inst.html