Module 2: Zero to Tracing

Mission: Go from “zero” to a full distributed trace in 15 minutes.

In Module 1, we learned the theory. Now, we build.

This module is purely hands-on. You will run a local observability stack (Jaeger) and instrument two applications: one in Java (using Auto-Instrumentation) and one in Go (using Manual Instrumentation).

1. The Architecture

We will build a simple microservices system:

  1. Client: Sends an HTTP request.
  2. Java Service: Receives the request, does some work, and calls the Go Service.
  3. Go Service: Receives the request, queries a “database” (mocked), and returns a response.
  4. Jaeger: Collects and visualizes the traces from both services.

2. Interactive: The Goal

This is what we are aiming for. A single trace that spans across both services.

Client Request (200ms)
Java Service (160ms)
Go Service (100ms)

3. What You Will Learn

  1. Getting Started
    • Running Jaeger with Docker.
    • The “Magic” of the Java Agent.
    • Manual instrumentation in Go.
  2. Module Review
    • Test your knowledge and review the key commands.

4. Prerequisites

  • Docker: You need Docker installed to run Jaeger.
  • Java 11+: To run the Java service.
  • Go 1.16+: To run the Go service.

Let’s get started!