启用分布式跟踪

对环境进行配置,以便在 JAX-RS 应用程序中启用自动分布式跟踪。 您可以同时启用 mpOpenTracing-1.3 功能部件和用户提供的 opentracing.io.Tracer 实现,以允许 JAX-RS 应用程序自动创建、传播和交付分布式跟踪信息。

稳定功能: MicroProfile OpenTracing 1.3 功能已稳定。 战略备选方案是 mpTelemetry-1.0 ,这是 MicroProfile 遥测功能。 更多信息,请参阅 MicroProfile OpenTracing 到 MicroProfile 遥测 1.0 移植文件。

有关此任务

分布式跟踪
使用分布式跟踪可跟踪穿过服务边界的请求流,这在请求通常流经多个服务的微服务环境中至关重要。 分布式跟踪处于活动状态时,每个服务都会创建带有相关标识的跟踪记录。 所使用的相关标识可能传播自上游服务。 如以下示例所示,分布式跟踪记录的常见配套服务是分布式跟踪记录的存储服务。 使用该存储服务可查看与服务之间的特定请求流相关联的跟踪记录。
Opentracing.io
opentracing.io 项目为用于分布式跟踪的仪器服务提供了标准 API。 如果您使用 opentracing.io API 检测每个服务以进行分布式跟踪,那么可以在部署时配置服务。 如果服务的语言的实现库存在,请使服务使用公共系统实现来设置日志记录格式并传播服务相关标识。 公共实现传播相关标识是为了使这些标识可被所有服务理解。 此实现还设置日志记录格式,以便服务器可理解日志记录以进行分布式跟踪记录存储。

过程

  1. 提供用户功能部件。 在 ${wlp.user.dir}/extension 目录中创建并安装具有 io.opentracing.Tracer 实现的用户功能部件。
    1. 访问提供 Zipkin -specific opentracing.io API 实现功能的示例源代码,网址是 Zipkin 与 Liberty 一起使用的 Opentracing 跟踪器实现。 访问在 Maven 存储库中提供特定于 Zipkin的 opentracing.io API 实现的用户功能部件的构建版本。
    2. 使用户功能部件提供实现 com.ibm.ws.opentracing.tracer.OpentracingTracerFactory 接口的 OSGI 服务:
      package com.ibm.ws.opentracing.tracer;
      
      import io.opentracing.Tracer;
      
      public interface OpentracingTracerFactory {
      
          Tracer newInstance(String serviceName);
      
      }
      
    1. 设置 OpentracingTracerFactory 实现的 newInstance 方法以返回 io.opentracing.Tracer 对象的实例。 请确保程序返回的 Tracer 对象是运行服务的环境的正确实现。
      Zipkin 与 Liberty 一起使用的 Opentracing 跟踪器实现示例中,跟踪器是一个在 Zipkin 服务器可用的环境中进行通信的实例。
    2. 如果环境不使用 Zipkin 服务器,请更改实现以提供与环境中的分布式跟踪服务器进行通信的 Tracer 对象。
      您在创建用户功能部件时,会生成以下两个工件:
      • 具有 OpentracingTracerFactory 实现和 Tracer 实现的 .jar 文件
      • 包含用户功能部件描述的 mf 文件

      Zipkin 与 Liberty 一起使用的 Opentracing 跟踪器实现示例中,在以下位置创建了两个文件:

      对于 mpOpenTracing-1.0

      
      target/extension/lib/com.ibm.ws.opentracing.zipkintracer-0.30.jar
      target/extension/lib/features/opentracingZipkin-0.30.mf
      
      对于 mpOpenTracing-1.1mpOpenTracing-1.2mpOpenTracing-1.3
      
      target/extension/lib/com.ibm.ws.opentracing.zipkintracer-0.31.jar
      target/extension/lib/features/opentracingZipkin-0.31.mf
    3. 将具有实现的 .jar 文件复制到环境中所有 Liberty 服务器的 ${wlp.user.dir}/extension/lib 目录。
    4. 将具有功能部件描述的 .mf 文件复制到环境中所有 Liberty 服务器的 ${wlp.user.dir}/extension/lib/features 目录。
  2. 配置服务器。 在服务器环境中的 server.xml 文件中启用用户功能。
    1. 在环境中的每个 Liberty 服务器中启用该功能部件。
      您创建的 .mf 文件包含一个名为 IBM-ShortName 的属性。 IBM-ShortName 属性的值是在每个 Liberty 服务器的 server.xml 文件中启用的功能部件名称。 在 Zipkin 与 Liberty 一起使用的 Opentracing 跟踪器实现示例中, IBM-ShortName 属性的值为 opentracingZipkin-0.30opentracingZipkin-0.31mpOpenTracing-1.1, mpOpenTracing-1.2, 或 mpOpenTracing-1.3。 请向每个 server.xml 文件中添加以下代码,以启用此功能部件:
      对于 mpOpenTracing-1.0
      
      <featureManager>
      	<feature>usr:opentracingZipkin-0.30</feature>
      </featureManager>
      对于 mpOpenTracing-1.1mpOpenTracing-1.2mpOpenTracing-1.3
      
      <featureManager>
      	<feature>usr:opentracingZipkin-0.31</feature>
      </featureManager>
      Zipkin 与 Liberty 一起使用的 Opentracing 跟踪器实现示例接受 server.xml 文件中的配置参数。 如果通过缺省服务名称 zipkin 和缺省端口 9411 无法访问该环境中的 Zipkin 服务器,请通过向每个服务器添加 opentracingZipkin 配置元素来配置主机和端口:
      <opentracingZipkin host="Zipkin Host Name" port="Zipkin Port Number"/>