Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refresh the docs with better language #648

Merged
merged 1 commit into from
Aug 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions config.toml
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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"
Expand Down
26 changes: 12 additions & 14 deletions content/docs/next-release/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand All @@ -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

Expand All @@ -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)
Expand All @@ -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
17 changes: 4 additions & 13 deletions content/docs/next-release/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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.

Expand All @@ -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

Expand All @@ -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

Expand Down
77 changes: 39 additions & 38 deletions content/docs/next-release/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).

Expand Down Expand Up @@ -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)
Expand All @@ -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:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In order to run it from source you need:

This sentence feels like we're almost conflating docker compose with running from source, and I think the second sentence should belong under From Source since it's not relevant in either With Docker Compose or With Docker.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good call

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


### 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
yurishkuro marked this conversation as resolved.
Show resolved Hide resolved
docker compose up
# Ctrl-C to stop
```
#### From docker

#### With Docker

```bash
docker run --rm -it \
Expand All @@ -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]:
Expand All @@ -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/
12 changes: 5 additions & 7 deletions data/indexpage.yaml
Original file line number Diff line number Diff line change
@@ -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.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was fun to write with the help of Bard, and using the writing styles of Alan Turing and Leslie Lamport.

2 changes: 1 addition & 1 deletion themes/jaeger-docs/layouts/partials/home/features.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<section class="section section--features">
<div class="container has-text-centered">
<h2 class="title is-size-2 is-size-3-mobile">
Problems that Jaeger addresses
With Jaeger you can
</h2>
<div class="columns">
{{ range site.Data.indexpage.features }}
Expand Down