Skip to content

cb372/mu-tracing-example

Repository files navigation

Mu-Scala distributed tracing example

This is an example of distributed tracing across 3 applications:

  • Client
  • Service A (running on port 12345)
  • Service B (running on port 12346)
Client --RPC--> Service A --RPC--> Service B

The client makes an RPC request to service A, which in turn makes an RPC request to service B, then responds to the client.

The tracing implementation used in this example is Jaeger. Mu-Scala integrates with Natchez to abstract over this, so the only mention of Jaeger is in the entrypoint of each application.

How to run the example

First start a Jaeger server in a Docker container:

docker run -d --name jaeger \
  -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
  -p 5775:5775/udp \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 14268:14268 \
  -p 9411:9411 \
  jaegertracing/all-in-one:1.8

Next start Service B:

sbt serverB/run

Then in another terminal window, start Service A:

sbt serverA/run

Finally start the client application:

sbt client/run

Enter your name when prompted. The client will send a request (actually a few identical requests) to Service A.

Open the Jaeger UI (http://localhost:16686/search) and search for traces for the my-client-application service. Open the most recent trace. You should see a trace that spans across all 3 services.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages