Go Observability Demo
A distributed tracing demo built using Go, OpenTelemetry and Jaeger, demonstrating trace propagation across multiple services.
Overview
This project demonstrates distributed tracing across two Go services using OpenTelemetry and Jaeger. A request received by the API Service is traced through the order processing flow and into the Order Service using trace context propagation.
Architecture
Client | | POST /orders v API Service (:8080) | | HTTP + Trace Context v Order Service (:8082) | v OpenTelemetry | v Jaeger (:16686)
Key Features
- Distributed tracing across multiple Go services
- OpenTelemetry SDK integration
- Gin HTTP instrumentation
- HTTP client instrumentation
- W3C trace context propagation
- Custom business span for order processing
- OTLP trace export
- Jaeger trace visualization
Distributed Trace
A request to the API Service creates a distributed trace that continues into the Order Service.
api-service POST /orders
|
+-- process-order
|
+-- api-service HTTP POST
|
+-- order-service POST /processTech Stack
GoGinOpenTelemetryJaegerOTLPDocker
Result
The implementation successfully demonstrates how a single request can be traced across service boundaries. The API Service and Order Service appear under the same Trace ID in Jaeger, making it possible to follow the complete request flow.