384.10. Example


要启用 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 tracer Bean。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");

然后,当从该 inbox 队列中使用消息时,它将成为带有服务名称"orders"的 zipkin 服务器事件。

现在假设调用 http:someserver/somepath 也是一个服务,您要映射到客户端服务名称,这可以作为以下内容完成:

zipkin.addClientServiceMapping("http:someserver/somepath", "audit");

然后,在同一 Camel 应用程序中将传入和传出端点映射到不同的 zipkin 服务名称。

您可以在服务映射中使用通配符。要将所有传出调用与同一 HTTP 服务器匹配,您可以执行以下操作:

zipkin.addClientServiceMapping("http:someserver*", "audit");
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.