384.10. 예
camel-zipkin을 활성화하려면 먼저 구성해야합니다.
ZipkinTracer zipkin = new ZipkinTracer(); // Configure a reporter, which controls how often spans are sent // (the dependency is io.zipkin.reporter2:zipkin-sender-okhttp3) sender = OkHttpSender.create("http://127.0.0.1:9411/api/v2/spans"); zipkin.setSpanReporter(AsyncReporter.create(sender)); // and then add zipkin to the CamelContext zipkin.init(camelContext);
위의 구성은 Camel 경로에서 들어오고 나가는 모든 메시지를 추적합니다.
XML에서 ZipkinTracer를 사용하려면 scribe 및 zipkin 추적기 빈을 정의하는 것입니다. Camel에서 자동으로 검색 및 사용합니다.
<!-- configure how to reporter spans to a Zipkin collector (the dependency is io.zipkin.reporter2:zipkin-reporter-spring-beans) --> <bean id="http" class="zipkin2.reporter.beans.AsyncReporterFactoryBean"> <property name="sender"> <bean id="sender" class="zipkin2.reporter.beans.OkHttpSenderFactoryBean"> <property name="endpoint" value="http://localhost:9411/api/v2/spans"/> </bean> </property> <!-- wait up to half a second for any in-flight spans on close --> <property name="closeTimeout" value="500"/> </bean> <!-- setup zipkin tracer --> <bean id="zipkinTracer" class="org.apache.camel.zipkin.ZipkinTracer"> <property name="serviceName" value="dude"/> <property name="spanReporter" ref="http"/> </bean>
384.10.1. ServiceName
그러나 Camel 끝점을 사용자에게 친숙한 논리 이름에 매핑하려면 매핑을 추가할 수 있습니다.
- ServiceName *
모든 이벤트가 대체되고 사용할 글로벌 서비스 이름을 구성할 수 있습니다. 예를 들면 다음과 같습니다.
zipkin.setServiceName("invoices");
이는 모든 수신 및 발신 zipkin 추적에 동일한 서비스 이름을 사용합니다. 애플리케이션이 다른 서비스를 사용하는 경우 이를 보다 세분화된 클라이언트/서버 서비스 매핑에 매핑해야 합니다.
384.10.2. 클라이언트 및 서버 서비스 매핑
- ClientServiceMappings
- ServerServiceMappings
애플리케이션에서 다른 사용자가 호출할 수 있는 서비스를 호스팅하는 경우 Camel 경로 끝점을 서버 서비스 매핑에 매핑할 수 있습니다. 예를 들어 Camel 애플리케이션에 다음 경로가 있다고 가정합니다.
from("activemq:queue:inbox") .to("http:someserver/somepath");
또한 서버 서비스로 다음 매핑을 추가할 수 있습니다.
zipkin.addServerServiceMapping("activemq:queue:inbox", "orders");
그런 다음 메시지를 받은 편지함 큐에서 사용하면 서비스 이름 'orders'와 함께 zipkin 서버 이벤트가 됩니다.
이제 http:someserver/somepath에 대한 호출은 다음과 같이 수행할 수 있는 클라이언트 서비스 이름에 매핑하려는 서비스이기도 합니다.
zipkin.addClientServiceMapping("http:someserver/somepath", "audit");
그런 다음 동일한 Camel 애플리케이션에서 들어오는 엔드포인트와 발신 엔드포인트를 다른 zipkin 서비스 이름에 매핑했습니다.
서비스 매핑에 와일드카드를 사용할 수 있습니다. 동일한 HTTP 서버에 대한 모든 발신 호출과 일치하려면 다음을 수행할 수 있습니다.
zipkin.addClientServiceMapping("http:someserver*", "audit");