= Tracing Trait

// Start of autogenerated code - DO NOT EDIT! (description)
The Tracing trait can be used to automatically publish tracing information to an
OpenTracing compatible collector.

The trait is able to automatically discover the tracing endpoint available in the namespace (supports **Jaeger**).

The Tracing trait is disabled by default.


This trait is available in the following profiles: **Kubernetes, Knative, OpenShift**.

// End of autogenerated code - DO NOT EDIT! (description)
// Start of autogenerated code - DO NOT EDIT! (configuration)
== Configuration

Trait properties can be specified when running any integration with the CLI:
```
kamel run --trait tracing.[key]=[value] --trait tracing.[key2]=[value2] integration.groovy
```
The following configuration options are available:

[cols="2,1,5a"]
|===
|Property | Type | Description

| tracing.enabled
| bool
| Can be used to enable or disable a trait. All traits share this common property.

| tracing.auto
| bool
| Enables automatic configuration of the trait, including automatic discovery of the tracing endpoint.

| tracing.service-name
| string
| The name of the service that publishes tracing data (defaults to the integration name)

| tracing.endpoint
| string
| The target endpoint of the OpenTracing service (automatically discovered by default)

| tracing.sampler-type
| string
| The sampler type (default "const")

| tracing.sampler-param
| string
| The sampler specific param (default "1")

|===

// End of autogenerated code - DO NOT EDIT! (configuration)
