Vertx OpenTracing

Vert.x 借助 Jaeger 的支持集成了 OpenTracing 。

您可以使用Jaeger客户端的下列配置项来配置 Vert.x 环境

Vertx vertx = Vertx.vertx(new VertxOptions()
  .setTracingOptions(
    new OpenTracingOptions()
  )
);

您也可以传递一个自定义的`Tracer`来更好地调控 配置项

Vertx vertx = Vertx.vertx(new VertxOptions()
  .setTracingOptions(
    new OpenTracingOptions(tracer)
  )
);

追踪策略

当追踪功能启用时, 一个组件的行为由追踪策略来定义:

  • PROPAGATE: 该组件上报活跃trace中的span

  • ALWAYS: 该组件上报活跃trace中的span或者创建一个新的活跃trace

  • IGNORE: 该组件不会参与任何的trace

tracing 策略通常可在组件选项里配置

HTTP tracing

Vert.x HTTP服务端和客户端根据HTTP请求上报跨度(span):

  • operationName: 当前HTTP方法

  • tags

  • http.method: HTTP请求方法

  • http.url: 请求URL

  • http.status_code: HTTP状态码

HTTP服务端默认的追踪策略是 ALWAYS, 您可以使用`setTracingPolicy` 来调配该策略。

HttpServer server = vertx.createHttpServer(new HttpServerOptions()
  .setTracingPolicy(TracingPolicy.IGNORE)
);

HTTP客户端默认的追踪策略是 PROPAGATE , 您可以使用`setTracingPolicy` 来调配该策略。

HttpClient client = vertx.createHttpClient(new HttpClientOptions()
  .setTracingPolicy(TracingPolicy.IGNORE)
);

要启动客户端调用的追踪, 您需要先创建它并使得 Vert.x 通过使用 OpenTracingUtil.setSpan 留意到这一点:

Span span = tracer.buildSpan("my-operation")
  .withTag("some-key", "some-value")
  .start();
OpenTracingUtil.setSpan(span);
// 做一些事,例如客户端发送请求
span.finish();

在包含有两个Vert.x服务的HTTP场景中,将会在客户端创建一个跨度, 而后追踪上下文将在服务器端传播,另一个跨度将添加到追踪中。

事件总线追踪

Vert.x 事件总线围绕消息交换报告跨度。

默认的追踪策略是 PROPAGATE , 您可以使用`setTracingPolicy` 来调配该策略.

DeliveryOptions options = new DeliveryOptions().setTracingPolicy(TracingPolicy.ALWAYS);
vertx.eventBus().send("the-address", "foo", options);