jaegertracing/example-hotrod

Sponsored OSS

By jaegertracing

•Updated about 1 month ago

Example application HotROD

Image
2

1M+

jaegertracing/example-hotrod repository overview

⁠Hot R.O.D. - Rides on Demand

This is a demo application that consists of several microservices and illustrates the use of the OpenTelemetry API & SDK. It can be run standalone, but requires Jaeger backend to view the traces. A tutorial / walkthrough is available:

As of Jaeger v1.42.0 this application was upgraded to use the OpenTelemetry SDK for traces.

⁠Features

  • Discover architecture of the whole system via data-driven dependency diagram
  • View request timeline & errors, understand how the app works
  • Find sources of latency, lack of concurrency
  • Highly contextualized logging
  • Use baggage propagation to
    • Diagnose inter-request contention (queueing)
    • Attribute time spent in a service
  • Use opentelemetry-go-contrib⁠ open source libraries to instrument HTTP and gRPC requests with minimal code changes

⁠Running

šŸ’„šŸ’„šŸ’„ Try it with Jaeger v2! See cmd/jaeger⁠.

⁠Run everything via docker compose

Alternatively, you can run each component separately as described below.

⁠Run everything in Kubernetes
kustomize build ./kubernetes | kubectl apply -f -
kubectl port-forward -n example-hotrod service/example-hotrod 8080:frontend
# In another terminal
kubectl port-forward -n example-hotrod service/jaeger 16686:frontend

# To cleanup
kustomize build ./kubernetes | kubectl delete -f -

Access Jaeger UI at http://localhost:16686⁠ and HotROD app at http://localhost:8080⁠

⁠Run Jaeger backend

Jaeger backend is packaged as a Docker container with in-memory storage.

docker run \
  --rm \
  --name jaeger \
  -p4318:4318 \
  -p16686:16686 \
  -p14268:14268 \
  jaegertracing/jaeger:latest

Jaeger UI can be accessed at http://localhost:16686⁠.

⁠Run HotROD from source
git clone [email protected]:jaegertracing/jaeger.git jaeger
cd jaeger
go run ./examples/hotrod/main.go all
⁠Run HotROD from docker
docker run \
  --rm \
  --link jaeger \
  --env OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger:4318 \
  -p8080-8083:8080-8083 \
  jaegertracing/example-hotrod:latest \
  all

Then open http://127.0.0.1:8080⁠

⁠Metrics

The app exposes metrics in either Go's expvar format (by default) or in Prometheus format (enabled via -m prometheus flag).

  • expvar: curl http://127.0.0.1:8080/debug/vars
  • Prometheus: curl http://127.0.0.1:8080/metrics

⁠Linking to traces

The HotROD UI can generate links to the Jaeger UI to find traces corresponding to each executed request. By default it uses the standard Jaeger UI address http://localhost:16686⁠, but if your Jaeger UI is running at a different address, it can be customized via -j <address> flag passed to HotROD, e.g.

go run ./examples/hotrod/main.go all -j http://jaeger-ui:16686

Tag summary

Content type

Image

Digest

sha256:69be0c580…

Size

12.3 MB

Last updated

about 1 month ago

docker pull jaegertracing/example-hotrod

This week's pulls

Pulls:

3,911

Jun 29 to Jul 5