traefik/docs/configuration/tracing.md
2019-02-18 16:52:03 +01:00

5.3 KiB

Tracing

The tracing system allows developers to visualize call flows in their infrastructure.

We use OpenTracing. It is an open standard designed for distributed tracing.

Traefik supports four tracing backends: Jaeger, Zipkin, DataDog, and Instana.

Jaeger

# Tracing definition
[tracing]
  # Backend name used to send tracing data
  #
  # Default: "jaeger"
  #
  backend = "jaeger"

  # Service name used in Jaeger backend
  #
  # Default: "traefik"
  #
  serviceName = "traefik"
    
  # Span name limit allows for name truncation in case of very long Frontend/Backend names
  # This can prevent certain tracing providers to drop traces that exceed their length limits
  #
  # Default: 0 - no truncation will occur
  # 
  spanNameLimit = 0

  [tracing.jaeger]
    # Sampling Server URL is the address of jaeger-agent's HTTP sampling server
    #
    # Default: "http://localhost:5778/sampling"
    #
    samplingServerURL = "http://localhost:5778/sampling"

    # Sampling Type specifies the type of the sampler: const, probabilistic, rateLimiting
    #
    # Default: "const"
    #
    samplingType = "const"

    # Sampling Param is a value passed to the sampler.
    # Valid values for Param field are:
    #   - for "const" sampler, 0 or 1 for always false/true respectively
    #   - for "probabilistic" sampler, a probability between 0 and 1
    #   - for "rateLimiting" sampler, the number of spans per second
    #
    # Default: 1.0
    #
    samplingParam = 1.0

    # Local Agent Host Port instructs reporter to send spans to jaeger-agent at this address
    #
    # Default: "127.0.0.1:6831"
    #
    localAgentHostPort = "127.0.0.1:6831"
   
    # Generate 128-bit trace IDs, compatible with OpenCensus
    #
    # Default: false
    gen128Bit = true
   
    # Set the propagation header type. This can be either:
    #   - "jaeger", jaeger's default trace header.
    #   - "b3", compatible with OpenZipkin
    #
    # Default: "jaeger"
    propagation = "jaeger"
    
    # Trace Context Header Name is the http header name used to propagate tracing context.
    # This must be in lower-case to avoid mismatches when decoding incoming headers.
    #
    # Default: "uber-trace-id"
    #
    traceContextHeaderName = "uber-trace-id"

!!! warning Traefik is only able to send data over compact thrift protocol to the Jaeger agent.

Zipkin

# Tracing definition
[tracing]
  # Backend name used to send tracing data
  #
  # Default: "jaeger"
  #
  backend = "zipkin"

  # Service name used in Zipkin backend
  #
  # Default: "traefik"
  #
  serviceName = "traefik"
    
  # Span name limit allows for name truncation in case of very long Frontend/Backend names
  # This can prevent certain tracing providers to drop traces that exceed their length limits
  #
  # Default: 0 - no truncation will occur
  # 
  spanNameLimit = 150

  [tracing.zipkin]
    # Zipkin HTTP endpoint used to send data
    #
    # Default: "http://localhost:9411/api/v1/spans"
    #
    httpEndpoint = "http://localhost:9411/api/v1/spans"

    # Enable Zipkin debug
    #
    # Default: false
    #
    debug = false

    # Use Zipkin SameSpan RPC style traces
    #
    # Default: false
    #
    sameSpan = false

    # Use Zipkin 128 bit root span IDs
    #
    # Default: true
    #
    id128Bit = true

    # The rate between 0.0 and 1.0 of requests to trace.
    #
    # Default: 1.0
    #
    sampleRate = 0.2

DataDog

# Tracing definition
[tracing]
  # Backend name used to send tracing data
  #
  # Default: "jaeger"
  #
  backend = "datadog"

  # Service name used in DataDog backend
  #
  # Default: "traefik"
  #
  serviceName = "traefik"
  
  # Span name limit allows for name truncation in case of very long Frontend/Backend names
  # This can prevent certain tracing providers to drop traces that exceed their length limits
  #
  # Default: 0 - no truncation will occur
  # 
  spanNameLimit = 100

  [tracing.datadog]
    # Local Agent Host Port instructs reporter to send spans to datadog-tracing-agent at this address
    #
    # Default: "127.0.0.1:8126"
    #
    localAgentHostPort = "127.0.0.1:8126"

    # Enable DataDog debug
    #
    # Default: false
    #
    debug = false

    # Apply shared tag in a form of Key:Value to all the traces
    #
    # Default: ""
    #
    globalTag = ""

    # Enable priority sampling. When using distributed tracing, this option must be enabled in order
    # to get all the parts of a distributed trace sampled.
    #
    # Default: false
    #
    prioritySampling = false

Instana

# Tracing definition
[tracing]
  # Backend name used to send tracing data
  #
  # Default: "jaeger"
  #
  backend = "instana"
  # Service name used in Instana backend
  #
  # Default: "traefik"
  #
  serviceName = "traefik"
  [tracing.instana]
    # Local Agent Host instructs reporter to send spans to instana-agent at this address
    #
    # Default: "127.0.0.1"
    #
    localAgentHost = "127.0.0.1"
    # Local Agent port instructs reporter to send spans to the instana-agent at this port
    # 
    # Default: 42699
    #
    localAgentPort = 42699
    # Set Instana tracer log level
    #
    # Default: info
    # Valid values for logLevel field are:
    #   - error
    #   - warn
    #   - debug
    #   - info
    #
    logLevel = "info"