对环境进行配置,以便在 JAX-RS 应用程序中启用自动分布式跟踪。您可以同时启用 opentracing-1.0 功能部件和用户提供的
opentracing.io.Tracer 实现,以允许 JAX-RS 应用程序自动创建、传播和交付分布式跟踪信息。
关于此任务
- 分布式跟踪
- 使用分布式跟踪可跟踪穿过服务边界的请求流,这在请求通常流经多个服务的微服务环境中至关重要。分布式跟踪处于活动状态时,每个服务都会创建带有相关标识的跟踪记录。所使用的相关标识可能传播自上游服务。分布式跟踪日志记录通常伴随一个用于分布式跟踪记录的存储服务。如这些示例所示。使用该存储服务可查看与服务之间的特定请求流相关联的跟踪记录。
- Opentracing.io
- opentracing.io 项目提供了一个用于检测服务以进行分布式跟踪的标准 API。如果您使用
opentracing.io API 检测每个服务以进行分布式跟踪,那么可以在部署时配置服务。如果服务的语言的实现库存在,请使服务使用公共系统实现来设置日志记录格式并传播服务相关标识。公共实现传播相关标识是为了使这些标识可被所有服务理解。此实现还设置日志记录格式,以便服务器可理解日志记录以进行分布式跟踪记录存储。
过程
- 提供用户功能部件。在 ${wlp.user.dir}/extension 目录中创建并安装一个具有 io.opentracing.Tracer
实现的用户功能部件。
- 访问 Zipkin Opentracing tracer implementation for use with Liberty 中用于提供特定于 Zipkin 的
opentracing.io API 实现的功能部件的样本源代码。访问 Maven 存储库中用于提供特定于
Zipkin 的 opentracing.io API 实现的用户功能部件的已构建版本。
- 使该用户功能部件提供用于实现 com.ibm.ws.opentracing.tracer.OpentracingTracerFactory
接口的 OSGI 服务。
package com.ibm.ws.opentracing.tracer;
import io.opentracing.Tracer;
public interface OpentracingTracerFactory {
Tracer newInstance(String serviceName);
}
- 设置 OpentracingTracerFactory 实现的 newInstance 方法,以返回
io.opentracing.Tracer 对象的实例。请确保程序返回的 Tracer 对象是运行服务的环境的正确实现。 在 Zipkin Opentracing tracer implementation for use with Liberty 中的示例中,Tracer
是一个实例,它在 Zipkin 服务器是可用服务器的环境中通信。
- 如果环境未使用 Zipkin 服务器,请更改实现以提供与环境中的分布式跟踪服务器进行通信的
Tracer 对象。 您在创建用户功能部件时,会生成以下两个工件:
- 包含 OpentracingTracerFactory 实现和
Tracer 实现的 .jar 文件
- 包含用户功能部件描述的 mf 文件
在 Zipkin Opentracing tracer implementation for use with Liberty 中的示例中,在以下位置创建了这两个文件:
target/extension/lib/com.ibm.ws.opentracing.zipkintracer-0.30.jar
target/extension/lib/features/opentracingZipkin-0.30.mf
- 对于环境中的所有 Liberty 服务器,将包含实现的 .jar 文件复制到
${wlp.user.dir}/extension/lib 目录。
- 对于环境中的所有 Liberty 服务器,将包含功能部件描述的 .mf 文件复制到
${wlp.user.dir}/extension/lib/features 目录。
- 配置服务器。在服务器环境中的 server.xml 文件中启用该用户功能部件。
- 在环境中的每个 Liberty 服务器中启用该功能部件。 您创建的 .mf 文件包含一个名为
IBM-ShortName 的属性。IBM-ShortName 属性的值是在每个 Liberty 服务器的 server.xml 文件中启用的功能部件名称。在 Zipkin Opentracing tracer implementation for use with Liberty 中的示例中,IBM-ShortName 属性的值是
opentracingZipkin-0.30。请向每个 server.xml 文件中添加以下代码,以启用此功能部件:
<featureManager>
<feature>usr:opentracingZipkin-0.30</feature>
</featureManager>
Zipkin Opentracing tracer implementation for use with Liberty 中的样本接受来自
server.xml 文件的配置参数。如果通过缺省服务名称
zipkin 和缺省端口 9411 无法访问该环境中的
Zipkin 服务器,请通过向每个服务器添加 opentracingZipkin 配置元素来配置主机和端口:<opentracingZipkin host=”Zipkin Host Name” port=”Zipkin Port Number”/>