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):
Port | Protocol | Function |
---|---|---|
8888 | HTTP | metrics port for exposing metrics which can be scraped with Prometheus compatible systems at /metrics |
8889 | HTTP | ingester port for reading data from Kafka topics and writing to a supported backend |
13133 | HTTP | Healthcheck port via the healthcheckv2 extension |
27777 | HTTP | expvar 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.go 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 effect . 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 (code ) 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 #961 ).
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 #197 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-dependencies is a Spark job which derives dependency links and writes them directly to the storage.