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 Odigos demo application that consists of 5 microservices written in Java, Go, Python, Node.js and .NET

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

The service should show up in active (running) state.

Deploying Jaeger

This Jaeger setup is intended for demonstration purposes only. In a production environment, you should deploy Jaeger or any other backend solution in a more reliable and scalable manner.

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.59.0/jaeger-1.59.0-linux-amd64.tar.gz
tar -xvf jaeger-1.59.0-linux-amd64.tar.gz
cd jaeger-1.59.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.