= Vertx Zipkin Tracing

Vert.x integrates with Zipkin thanks to the Zipkin Brave client.

Vert.x uses the ZipKin HTTP sender based using a Vert.x HTTP Client reporting
spans to `http://localhost:9411/api/v2/spans` in JSON format.

[source,java]
----
Vertx vertx = Vertx.vertx(new VertxOptions()
  .setTracingOptions(
    new ZipkinTracingOptions().setServiceName("A cute service")
  )
);
----

The service name is the mandatory Zipkin service name. If you don't set it, then `a-service` will be used instead.

You can configure the sender to use a specific URL

[source,java]
----
Vertx vertx = Vertx.vertx(new VertxOptions()
  .setTracingOptions(
    new ZipkinTracingOptions()
      .setSenderOptions(new HttpSenderOptions().setSenderEndpoint(senderEndpoint))
  )
);
----

The default sender uses a single HTTP connection in plain text with compressed bodies.

You can override the configuration of the HTTP sender with custom `HttpClientOptions`.

[source,java]
----
Vertx vertx = Vertx.vertx(new VertxOptions()
  .setTracingOptions(
    new ZipkinTracingOptions()
      .setSenderOptions(new HttpSenderOptions()
        .setSenderEndpoint(senderEndpoint)
        .setSsl(true)
        .setKeyCertOptions(sslOptions))
  )
);
----

Finally you can set a custom ZipKin `Tracing` allowing for greater control
over the configuration.

[source,java]
----
Vertx vertx = Vertx.vertx(new VertxOptions()
  .setTracingOptions(
    new ZipkinTracingOptions(tracing)
  )
);
----