Vert.x Zipkin 追踪

Vert.x 通过 Zipkin Brave 客户端与 Zipkin 集成。

Vert.x 使用基于 Vert.x HTTP 客户端的 Zipkin HTTP 发送器,以 JSON 格式向 https://:9411/api/v2/spans 报告 Span。

Vertx vertx = Vertx.vertx(new VertxOptions()
  .setTracingOptions(
    new ZipkinTracingOptions().setServiceName("A cute service")
  )
);

服务名称是强制性的 Zipkin 服务名称。如果您不设置它,将使用 a-service 作为替代。

您可以配置发送器以使用特定 URL

Vertx vertx = Vertx.vertx(new VertxOptions()
  .setTracingOptions(
    new ZipkinTracingOptions()
      .setSenderOptions(new HttpSenderOptions().setSenderEndpoint(senderEndpoint))
  )
);

默认发送器使用单个 HTTP 连接,采用纯文本和压缩主体。

您可以使用自定义的 HttpClientOptions 覆盖 HTTP 发送器的配置。

Vertx vertx = Vertx.vertx(new VertxOptions()
  .setTracingOptions(
    new ZipkinTracingOptions()
      .setSenderOptions(new HttpSenderOptions()
        .setSenderEndpoint(senderEndpoint)
        .setSsl(true)
        .setKeyCertOptions(sslOptions))
  )
);

最后,您可以设置自定义的 Zipkin Tracing,以对配置进行更精细的控制。

Vertx vertx = Vertx.vertx(new VertxOptions()
  .setTracingOptions(
    new ZipkinTracingOptions(tracing)
  )
);

追踪策略

追踪策略定义了当追踪启用时组件的行为。

  • PROPAGATE:组件在当前活跃的追踪中报告一个 span。

  • ALWAYS:组件在当前活跃的追踪中报告一个 span,或者创建一个新的活跃追踪。

  • IGNORE:组件将不参与任何追踪。

追踪策略通常在组件选项中配置。

HTTP 追踪

Vert.x HTTP 服务器和客户端围绕 HTTP 请求报告 span。

  • operationName:HTTP 方法

  • 标签

  • 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)
);

EventBus 追踪

Vert.x EventBus 围绕消息交换报告 span。

默认的发送策略是 PROPAGATE,你可以通过 setTracingPolicy 来配置该策略。

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