255장. OpenTracing Component
Camel 2.19에서 사용 가능
Camel 2.21부터 OpenTracing Java API 버전 0.31 이상과 호환되는 OpenTracing 불만 추적기를 사용해야 합니다.
camel-opentracing 구성 요소는 OpenTracing을 사용하여 들어오고 나가는 Camel 메시지를 추적하고 타이밍하는 데 사용됩니다.
Camel로/에서 전송되는 수신 및 발신 메시지의 경우 이벤트(spans)가 캡처됩니다.
지원되는 추적기 목록은 OpenTracing 웹 사이트를 참조하십시오.
255.1. 설정
OpenTracing 추적기의 구성 속성은 다음과 같습니다.
옵션 | 기본값 | 설명 |
---|---|---|
excludePatterns | 패턴과 일치하는 Camel 메시지의 추적을 비활성화하는 exclude 패턴을 설정합니다. 내용은 키가 패턴인 Set<String>입니다. 이 패턴은 인터셉터의 규칙을 사용합니다. |
Camel 애플리케이션에 대해 분산 추적을 제공하도록 OpenTracing tracer를 구성하는 방법에는 세 가지가 있습니다.
255.1.1. 명시적인
선택한 OpenTracing Tracer와 관련된 특정 종속성과 함께 POM에 camel-opentracing
구성 요소를 포함합니다.
OpenTracing 지원을 명시적으로 구성하려면 OpenTracingTracer
를 인스턴스화하고 camel 컨텍스트를 초기화합니다. 선택적으로 추적기를 지정
하거나 레지스트리
또는 ServiceLoader
를 사용하여 암시적으로 검색할 수 있습니다.
OpenTracingTracer ottracer = new OpenTracingTracer(); // By default it uses a Noop Tracer, but you can override it with a specific OpenTracing implementation. ottracer.setTracer(...); // And then initialize the context ottracer.init(camelContext);
XML에서 OpenTracingTracer를 사용하려면 OpenTracing tracer 빈을 정의하는 것입니다. Camel은 자동으로 검색 및 사용할 것입니다.
<bean id="tracer" class="..."/> <bean id="ottracer" class="org.apache.camel.opentracing.OpenTracingTracer"> <property name="tracer" ref="tracer"/> </bean>
255.1.2. Spring Boot
Spring Boot를 사용하는 경우 camel-opentracing-starter
종속성을 추가하고 @CamelOpenTracing
으로 기본 클래스에 주석을 달아 OpenTracing을 설정할 수 있습니다.
추적기 빈이 애플리케이션에 의해 정의되지 않은 경우 camel 컨텍스트의 레지스트리
또는 ServiceLoader
에서
를 암시적으로 가져옵니다.
Tracer
255.1.3. Java Agent
세 번째 방법은 Java 에이전트를 사용하여 OpenTracing 지원을 자동으로 구성하는 것입니다.
선택한 OpenTracing Tracer와 관련된 특정 종속성과 함께 POM에 camel-opentracing
구성 요소를 포함합니다.
OpenTracing Java Agent는 다음 종속 항목과 연결됩니다.
<dependency> <groupId>io.opentracing.contrib</groupId> <artifactId>opentracing-agent</artifactId> </dependency>
사용된 추적기
는 camel 컨텍스트 레지스트리에서 또는 ServiceLoader
를 사용하여 암시적으로 로드됩니다.
이 에이전트를 사용하는 방법은 애플리케이션을 실행하는 방법에 따라 다릅니다. camel-example-opentracing 의 Service2 는 에이전트를 로컬 폴더로 다운로드한 다음 exec-maven-plugin
을 사용하여 -javaagent
명령줄 옵션으로 서비스를 시작합니다.