///////////////////////////////////////////////////////////////////////////////

    Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

///////////////////////////////////////////////////////////////////////////////

= Tracing Support
:description: Helidon Reactive WebServer Tracing Support
:keywords: helidon, reactive, reactive streams, reactive java, reactive webserver

== Tracing Support
The WebServer includes Zipkin support for OpenTracing. When enabled, the WebServer
 sends its tracing events to Zipkin.

=== Maven Coordinates

Declare the following dependency in your project:

[source,xml,subs="verbatim,attributes"]
.WebServer Zipkin Support Dependency
----
<dependency>
    <groupId>io.helidon.webserver</groupId>
    <artifactId>helidon-webserver-zipkin</artifactId>
</dependency>
----

=== Configuring Tracing Support
To enable Zipkin integration, configure `Tracer` on the
 `ServerConfiguration.Builder`.

[source,java]
.Configuring OpenTracing `Tracer`
----
ServerConfiguration.builder()
                   .tracer(new ZipkinTracerBuilder.forService("my-application") //<1>
                                 .zipkin("http://10.0.0.18:9411")  // <2>
                                 .build())
                   .build()
----
<1> The name of the application to associate with the tracing events
<2> Zipkin endpoint for the tracing events

image::webserver/zipkin.png[Zipkin example, align="center"]

