In this tutorial, we are going to use Odigos for instrumenting and collecting distributed traces from an application written in Go.

We are going to deploy the application on a virtual machine and use Jaeger as the backend for storing and visualizing the traces.

Deploying the target application

We are going to install a subset of Odigos demo application that consists of 1 microservices written in Go.

Architecture of demo application
  1. Install the application using the following commands:
sudo apt update
sudo apt install membership
  1. Check that the application is running:
sudo systemctl status membership

Deploying Jaeger

This Jaeger setup is just for demonstration purposes. In a production environment, you would deploy Jaeger or any other backend in a more robust way.

Install Jaeger using the following commands:

  1. Download a version of Jaeger which is compatible to your OS and arch from GitHub releases page and extract the archive.

Examples for jaeger v1.0.57:

wget https://github.com/jaegertracing/jaeger/releases/download/v1.57.0/jaeger-1.57.0-linux-amd64.tar.gz
tar -xvf jaeger-1.57.0-linux-amd64.tar.gz
cd jaeger-1.57.0-linux-amd64
  1. Run the Jaeger All-in-One binary:
./jaeger-all-in-one --collector.otlp.grpc.host-port 0.0.0.0:44317 --collector.otlp.http.host-port 0.0.0.0:44318

We map the OTLP endpoints for Jaeger to different ports (44317\44318 instead of 4317\4318) to avoid conflicts with Odigos collector.

  1. Browse to Jaeger UI at http://localhost:16686. Replace localhost with the IP address of the machine where Jaeger is running if you are accessing it from a different machine.

At this point, jaeger is running and ready to receive traces from the demo application.