diff --git a/config.toml b/config.toml index 01aa50eb..e8e34d6a 100644 --- a/config.toml +++ b/config.toml @@ -1,5 +1,5 @@ baseURL = "https://www.jaegertracing.io" -title = "Jaeger: open source, end-to-end distributed tracing" +title = "Jaeger: open source, distributed tracing platform" languageCode = "en" pygmentsCodeFences = true pygmentsUseClasses = true @@ -19,7 +19,7 @@ baseName = "_redirects" home = [ "HTML", "JSON", "REDIRECTS" ] [params] - tagline = "Monitor and troubleshoot transactions in complex distributed systems" + tagline = "Monitor and troubleshoot workflows in complex distributed systems" githubrepo = "jaegertracing/jaeger" twitterhandle = "JaegerTracing" mediumhandle = "jaegertracing" diff --git a/content/docs/next-release/_index.md b/content/docs/next-release/_index.md index cdf49cff..9ab03aa5 100644 --- a/content/docs/next-release/_index.md +++ b/content/docs/next-release/_index.md @@ -8,34 +8,32 @@ children: Welcome to Jaeger's documentation portal! Below, you'll find information for beginners and experienced Jaeger users. -If you can't find what you are looking for, or have an issue not covered here, we'd love to [hear from you](/get-in-touch). +If you cannot find what you are looking for, or have an issue not covered here, we'd love to [hear from you](/get-in-touch). If you are new to distributed tracing, please take a look at the [Related Links](#related-links) section below. ## About -Jaeger, inspired by [Dapper][dapper] and [OpenZipkin](http://zipkin.io), -is a distributed tracing system released as open source by [Uber Technologies][ubeross]. -It is used for monitoring and troubleshooting microservices-based distributed systems, including: +Jaeger is a distributed tracing platform released as open source by [Uber Technologies][ubeross]. +With Jaeger you can: -* Distributed context propagation -* Distributed transaction monitoring -* Root cause analysis -* Service dependency analysis -* Performance / latency optimization +* Monitor and troubleshoot distributed workflows +* Identify performance bottlenecks +* Track down root causes +* Analyze service dependencies Uber published a blog post, [Evolving Distributed Tracing at Uber](https://eng.uber.com/distributed-tracing/), where they explain the history and reasons for the architectural choices made in Jaeger. [Yuri Shkuro](https://shkuro.com), creator of Jaeger, also published a book [Mastering Distributed Tracing](https://shkuro.com/books/2019-mastering-distributed-tracing/) that covers in-depth many aspects of Jaeger design and operation, as well as distributed tracing in general. ## Features - * [OpenTracing](http://opentracing.io/)-inspired data model - * Uses consistent upfront sampling with individual per service/endpoint probabilities + * [OpenTracing](https://opentracing.io/)-inspired data model + * [OpenTelemetry](https://opentelemetry.io/) compatible * Multiple built-in storage backends: Cassandra, Elasticsearch, in-memory * Community supported external storage backends via gRPC plugin: [ClickHouse](https://github.com/jaegertracing/jaeger-clickhouse) * System topology graphs * Adaptive sampling - * Post-collection data processing pipeline (coming soon) * Service Performance Monitoring (SPM) + * Post-collection data processing See [Features](./features/) page for more details. @@ -52,7 +50,7 @@ See [Features](./features/) page for more details. * [ClickHouse](./deployment/#sidecar-model) ## Quick Start -See [running a docker all in one image](getting-started#all-in-one). +See [Getting Started](./getting-started). ## Screenshots @@ -66,6 +64,7 @@ See [running a docker all in one image](getting-started#all-in-one). ![Service Performance Monitoring](/img/frontend-ui/spm.png) ## Related links +- [Take Jaeger for a HotROD ride](https://medium.com/jaegertracing/take-jaeger-for-a-hotrod-ride-233cf43e46c2) (blog) - [Evolving Distributed tracing At Uber Engineering](https://eng.uber.com/distributed-tracing/) (blog) - [Mastering Distributed Tracing](https://shkuro.com/books/2019-mastering-distributed-tracing/) (book) - [OpenTracing Tutorial (Java, Go, Python, Node.js, C#)](https://github.com/yurishkuro/opentracing-tutorial/) (tutorials) @@ -75,5 +74,4 @@ See [running a docker all in one image](getting-started#all-in-one). - [Using Jaeger with Istio](https://istio.io/latest/docs/tasks/observability/distributed-tracing/jaeger/) (docs) - [Using Jaeger with Envoy](https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/jaeger_tracing.html) (docs) -[dapper]: https://research.google.com/pubs/pub36356.html [ubeross]: http://uber.github.io diff --git a/content/docs/next-release/features.md b/content/docs/next-release/features.md index 70cd17a9..8528088c 100644 --- a/content/docs/next-release/features.md +++ b/content/docs/next-release/features.md @@ -3,14 +3,6 @@ title: Features hasparent: true --- -Jaeger is used for monitoring and troubleshooting microservices-based distributed systems, including: - -* Distributed context propagation -* Distributed transaction monitoring -* Root cause analysis -* Service dependency analysis -* Performance / latency optimization - ## High Scalability Jaeger backend is designed to have no single points of failure and to scale with the business needs. @@ -22,7 +14,6 @@ Jaeger backend, Web UI, and instrumentation libraries have been designed from gr * Represent traces as directed acyclic graphs (not just trees) via [span references](https://github.com/opentracing/specification/blob/master/specification.md#references-between-spans) * Support strongly typed span _tags_ and _structured logs_ -* Support general distributed context propagation mechanism via _baggage_ Since v1.35, the Jaeger backend can receive trace data from the OpenTelemetry SDKs in their native [OpenTelemetry Protocol (OTLP)][otlp]. However, the internal data representation and the UI still follow the OpenTracing specification's model. @@ -32,7 +23,7 @@ Jaeger can be used with a growing a number of storage backends: * It natively supports popular open source NoSQL databases as trace storage backends: Cassandra 3.4+, Elasticsearch 5.x/6.x/7.x, and OpenSearch 1.0+. * It integrates via a gRPC API with other well known databases that have been certified to be Jaeger compliant: [ClickHouse](https://github.com/jaegertracing/jaeger-clickhouse). * There is embedded database support using [Badger](https://github.com/dgraph-io/badger) and simple in-memory storage for testing setups. -* There are ongoing community experiments using other databases you can find more by following [this issue](https://github.com/jaegertracing/jaeger/issues/638). +* There are ongoing community experiments using other databases; you can find more in [this issue](https://github.com/jaegertracing/jaeger/issues/638). ## Modern Web UI @@ -42,13 +33,13 @@ Jaeger Web UI is implemented in Javascript using popular open source frameworks Jaeger backend is distributed as a collection of Docker images. The binaries support various configuration methods, including command line options, environment variables, and configuration files in multiple formats (yaml, toml, etc.). -Deployment to Kubernetes clusters is assisted by a [Kubernetes operator](https://github.com/jaegertracing/jaeger-operator), [Kubernetes templates](https://github.com/jaegertracing/jaeger-kubernetes) +Deployment to Kubernetes clusters is assisted by a [Kubernetes operator](https://github.com/jaegertracing/jaeger-operator) and a [Helm chart](https://github.com/kubernetes/charts/tree/master/incubator/jaeger). ## Observability -All Jaeger backend components expose [Prometheus](https://prometheus.io/) metrics by default (other metrics backends are -also supported). Logs are written to stdout using the structured logging library [zap](https://github.com/uber-go/zap). +All Jaeger backend components expose [Prometheus](https://prometheus.io/) metrics by default. +Logs are written to stdout using the structured logging library [zap](https://github.com/uber-go/zap). ## Backwards compatibility with Zipkin diff --git a/content/docs/next-release/getting-started.md b/content/docs/next-release/getting-started.md index 2f00b091..7670a31e 100644 --- a/content/docs/next-release/getting-started.md +++ b/content/docs/next-release/getting-started.md @@ -8,13 +8,13 @@ If you are new to distributed tracing, please check the [Introduction](../) page ## Instrumentation -Your applications must be instrumented before they can send tracing data to Jaeger. We recommend using the [OpenTelemetry](https://opentelemetry.io) instrumentation and SDKs. +Your applications must be instrumented before they can send tracing data to Jaeger. We recommend using the [OpenTelemetry][otel] instrumentation and SDKs. -Historically, the Jaeger project supported its own SDKs (aka tracers, client libraries) that implemented the OpenTracing API. The [Client Libraries](../client-libraries) section provides information about how to use the OpenTracing API and how to initialize and configure Jaeger tracers. As of 2022, the Jaeger SDKs are no longer supported, and all users are advised to migrate to OpenTelemetry. +Historically, the Jaeger project supported its own SDKs (aka tracers, client libraries) that implemented the OpenTracing API. As of 2022, the Jaeger SDKs are no longer supported, and all users are advised to migrate to OpenTelemetry. ## All in One -All-in-one is an executable designed for quick local testing, launches the Jaeger UI, **jaeger-collector**, **jaeger-query**, and **jaeger-agent**, with an in memory storage component. +**all-in-one** is an executable designed for quick local testing. It includes the Jaeger UI, **jaeger-collector**, **jaeger-query**, and **jaeger-agent**, with an in memory storage component. The simplest way to start the all-in-one is to use the pre-built image published to DockerHub (a single command line). @@ -54,8 +54,8 @@ Port | Protocol | Component | Function | | | 16686 | HTTP | query | serve frontend | | | -4317 | HTTP | collector | accept OpenTelemetry Protocol (OTLP) over gRPC, if enabled -4318 | HTTP | collector | accept OpenTelemetry Protocol (OTLP) over HTTP, if enabled +4317 | HTTP | collector | accept OpenTelemetry Protocol (OTLP) over gRPC +4318 | HTTP | collector | accept OpenTelemetry Protocol (OTLP) over HTTP 14268 | HTTP | collector | accept `jaeger.thrift` directly from clients 14250 | HTTP | collector | accept `model.proto` 9411 | HTTP | collector | Zipkin compatible endpoint (optional) @@ -65,54 +65,46 @@ Port | Protocol | Component | Function Please refer to [Service Performance Monitoring (SPM)](../spm#getting-started). -## Kubernetes and OpenShift +## On Kubernetes -* Kubernetes templates: https://github.com/jaegertracing/jaeger-kubernetes -* Kubernetes Operator: https://github.com/jaegertracing/jaeger-operator -* OpenShift templates: https://github.com/jaegertracing/jaeger-openshift +Please see Kubernetes Operator: https://github.com/jaegertracing/jaeger-operator ## Sample App: HotROD -HotROD (Rides on Demand) is a demo application that consists of several microservices and -illustrates the use of the [OpenTracing API](http://opentracing.io). -A tutorial / walkthrough is available in the blog post: -[Take OpenTracing for a HotROD ride][hotrod-tutorial]. +HotROD (Rides on Demand) is a demo application that consists of several microservices and illustrates +the use of [OpenTelemetry][otel] and distirbuted tracing. A tutorial / walkthrough is available in the blog post: +[Take Jaeger for a HotROD ride][hotrod-tutorial]. -It can be run standalone, but requires Jaeger backend to view the traces. +The HotROD app can be run standalone, but requires Jaeger backend to view the traces. ### Features -- Discover architecture of the whole system via data-driven dependency - diagram. -- View request timeline and errors; understand how the app works. -- Find sources of latency and lack of concurrency. -- Highly contextualized logging. -- Use baggage propagation to: +- Discover architecture of the whole system via data-driven dependency + diagram. +- View request timeline and errors; understand how the app works. +- Find sources of latency and lack of concurrency. +- Highly contextualized logging. +- Use baggage propagation to diagnose inter-request contention (queueing) and time spent in a service. +- Use open source libraries from `opentelemetry-contrib` to get vendor-neutral instrumentation for free. - - Diagnose inter-request contention (queueing). - - Attribute time spent in a service. - -- Use open source libraries with OpenTracing integration to get - vendor-neutral instrumentation for free. - -### Prerequisites +### Running -- You need [Go toolchain](https://golang.org/doc/install) installed on your machine to run from source - (see [go.mod](https://github.com/jaegertracing/jaeger/blob/master/go.mod) file for required Go version). -- Requires a [running Jaeger backend](#all-in-one) to view the traces. +We recommend running Jaeger and HotROD via `docker compose`. In order to run it from source you need: -### Running +- [Go toolchain](https://golang.org/doc/install) installed on your machine + (see [go.mod](https://github.com/jaegertracing/jaeger/blob/master/go.mod) file for required Go version). +- A [running Jaeger backend](#all-in-one) to view the traces. -#### From Source +#### With Docker Compose ```bash -mkdir -p $GOPATH/src/github.com/jaegertracing -cd $GOPATH/src/github.com/jaegertracing git clone git@github.com:jaegertracing/jaeger.git jaeger -cd jaeger -go run ./examples/hotrod/main.go all +cd jaeger/examples/hotrod +docker compose up +# Ctrl-C to stop ``` -#### From docker + +#### With Docker ```bash docker run --rm -it \ @@ -123,6 +115,14 @@ docker run --rm -it \ all ``` +#### From Source + +```bash +git clone git@github.com:jaegertracing/jaeger.git jaeger +cd jaeger +go run ./examples/hotrod/main.go all +``` + #### From binary distribution Run `example-hotrod(.exe)` executable from the [binary distribution archives][download]: @@ -141,5 +141,6 @@ By default it's disabled. It can be enabled with `--collector.zipkin.host-port=: Zipkin [Thrift](https://github.com/jaegertracing/jaeger-idl/blob/master/thrift/zipkincore.thrift) IDL and Zipkin [Proto](https://github.com/jaegertracing/jaeger-idl/blob/master/proto/zipkin.proto) IDL files can be found in [jaegertracing/jaeger-idl](https://github.com/jaegertracing/jaeger-idl) repository. They're compatible with [openzipkin/zipkin-api](https://github.com/openzipkin/zipkin-api) [Thrift](https://github.com/openzipkin/zipkin-api/blob/master/thrift/zipkinCore.thrift) and [Proto](https://github.com/openzipkin/zipkin-api/blob/master/zipkin.proto). -[hotrod-tutorial]: https://medium.com/@YuriShkuro/take-opentracing-for-a-hotrod-ride-f6e3141f7941 +[hotrod-tutorial]: https://medium.com/jaegertracing/take-jaeger-for-a-hotrod-ride-233cf43e46c2 +[otel]: https://opentelemetry.io [download]: ../../../download/ diff --git a/data/indexpage.yaml b/data/indexpage.yaml index 4d95f3b3..1e8aa5ee 100644 --- a/data/indexpage.yaml +++ b/data/indexpage.yaml @@ -1,13 +1,11 @@ features: -- text: distributed transaction monitoring +- text: monitor and troubleshoot distributed workflows icon: tv -- text: performance and latency optimization +- text: identify performance bottlenecks icon: build -- text: root cause analysis +- text: track down root causes icon: call_split -- text: service dependency analysis +- text: analyze service dependencies icon: format_align_center -- text: distributed context propagation - icon: wifi why: | - As on-the-ground microservice practitioners are quickly realizing, the majority of operational problems that arise when moving to a distributed architecture are ultimately grounded in two areas: **networking** and **observability**. It is simply an orders of magnitude larger problem to network and debug a set of intertwined distributed services versus a single monolithic application. + Distributed tracing observability platforms, such as Jaeger, are essential for modern software applications that are architected as microservices. Jaeger maps the flow of requests and data as they traverse a distributed system. These requests may make calls to multiple services, which may introduce their own delays or errors. Jaeger connects the dots between these disparate components, helping to identify performance bottlenecks, troubleshoot errors, and improve overall application reliability. Jaeger is 100% open source, cloud native, and infinitely scalable. diff --git a/themes/jaeger-docs/layouts/partials/home/features.html b/themes/jaeger-docs/layouts/partials/home/features.html index 6fc58466..4d528653 100644 --- a/themes/jaeger-docs/layouts/partials/home/features.html +++ b/themes/jaeger-docs/layouts/partials/home/features.html @@ -1,7 +1,7 @@

- Problems that Jaeger addresses + With Jaeger you can

{{ range site.Data.indexpage.features }}