Ukraine flag We stand with our friends and colleagues in Ukraine. To support Ukraine in their time of need visit this page.

Deployment


See also:


Jaeger backend is released as a single binary or container image (see Downloads). Despite that, it can be configured to operate in different roles, such as all-in-one, collector, query, and ingester (see Architecture).

Management Ports

The following intra-oriented ports are exposed by default (can be changed via configuration):

PortProtocolFunction
8888HTTPmetrics port for exposing metrics which can be scraped with Prometheus compatible systems at /metrics
8889HTTPingester port for reading data from Kafka topics and writing to a supported backend
13133HTTPHealthcheck port via the healthcheckv2 extension
27777HTTPexpvar port for process level metrics per the Go standards

See APIs for the list of all API ports.

Configuration

Jaeger can be customized via configuration YAML file (see Configuration).

Jaeger collector is stateless and thus many instances of collector can be run in parallel. collector instances require almost no configuration, except for storage location, such as Cassandra or Elasticsearch.

Query Configuration

The jaeger_query extension has a few deployment-related configuration options. In the future the configuration documentation will be auto-generated from the schema. Meanwhile, please refer to config.goexternal link as the authoritative source.

Clock Skew Adjustment

Jaeger backend combines trace data from applications that are usually running on different hosts. The hardware clocks on the hosts often experience relative drift, known as the clock skew effectexternal link. Clock skew can make it difficult to reason about traces, for example, when a server span may appear to start earlier than the client span, which should not be possible. jaeger_query extension implements a clock skew adjustment algorithm (codeexternal link) to correct for clock drift, using the knowledge about causal relationships between spans. All adjusted spans have a warning displayed in the UI that provides the exact clock skew delta applied to their timestamps.

Sometimes these adjustments themselves make the trace hard to understand. For example, when repositioning the server span within the bounds of its parent span, Jaeger does not know the exact relationship between the request and response latencies, so it assumes they are equal and places the child span in the middle of the parent span (see issue #961external link).

The jaeger_query extension supports a configuration property that controls how much clock skew adjustment should be allowed.

extensions:
  jaeger_query:
    max-clock-skew-adjustment: 30s

Setting this parameter to zero (0s) disables clock skew adjustment completely. This setting applies to all traces retrieved from the given query service. There is an open ticket #197external link to support toggling the adjustment on and off directly in the UI.

UI Base Path

The base path for all jaeger_query extension HTTP routes can be set to a non-root value, e.g. /jaeger would cause all UI URLs to start with /jaeger. This can be useful when running Jaeger behind a reverse proxy. Here is example code to set the base path.

extensions:
  jaeger_query:
    base-path: /
    ui:
      config_file: /etc/jaeger/ui-config.json
    grpc:
    http:

UI Customization and Embedding

Please refer to the dedicated Frontend/UI page.

SPM

Service Performance Monitoring (SPM) requires a deployment of Prometheus-compatible metrics storage (see SPM page).

Service Maps

In order to display service dependency diagrams, production deployments need an external process that aggregates data and computes dependency links between services. Project spark-dependenciesexternal link is a Spark job which derives dependency links and writes them directly to the storage.