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 is stateless and thus many instances of jaeger can be run in parallel. jaeger instances require almost no configuration, except for storage location, such as:

Cassandra:

  jaeger_storage:
    backends:
      some_storage:
        cassandra:
          schema: 
            keyspace: "jaeger_v1_dc1"
          connection:
            auth: 
              basic:
                username: "cassandra"
                password: "cassandra"
            tls:
              insecure: true

OpenSearch:

  jaeger_storage:
    backends:
      some_storage:
        opensearch:
          index_prefix: "jaeger-main"

ElasticSearch:

  jaeger_storage:
    backends:
      some_storage:
        elasticsearch:
          index_prefix: "jaeger-main"
      another_storage:
        elasticsearch:
          index_prefix: "jaeger-archive"

Query Configuration

The jaeger_query extension has a few deployment-related configuration options.

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).

jaeger query extension supports configuration in the config file

query:
  max-clock-skew-adjustment: 30s

that controls how much clock skew adjustment should be allowed. 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.

query:
  base-path: /
  static-files: /go/bin/jaeger-ui-build/build
  ui-config: /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).

TLS support

Jaeger supports TLS connections to Prometheus server as long as you’ve configured your Prometheus serverexternal link correctly.

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.