Tracing - HTTP Service
Code Source: https://github.com/gogf/examples/tree/main/observability/trace/http
Description
This example demonstrates how to implement distributed tracing in HTTP services using GoFrame
. It shows how to:
- Configure tracing in HTTP services
- Trace HTTP requests and responses
- Propagate trace context
- Visualize distributed traces
Requirements
- Go 1.22 or higher
- Git
- GoFrame
- GoFrame OpenTelemetry Tracing
Structure
.
├── client/ # Client example
│ └── client.go # Client with tracing
├── server/ # Server example
│ └── server.go # Server with tracing
├── go.mod # Go module file
└── go.sum # Go module checksums
Features
The example showcases the following features:
-
Distributed Tracing
- Trace propagation
- Span management
- Trace visualization
-
HTTP Integration
- Request tracing
- Context propagation
- Error handling
Prerequisites
- Running
Jaeger
instance:docker run --rm --name jaeger \
-e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 4317:4317 \
-p 4318:4318 \
-p 14250:14250 \
-p 14268:14268 \
-p 14269:14269 \
-p 9411:9411 \
jaegertracing/all-in-one:1.55
Usage
-
Start the server:
cd server
go run server.go -
Run the client:
cd client
go run client.go -
View traces: Open http://localhost:16686 in your browser to view traces in
Jaeger
UI.
API Endpoints
The server provides the following HTTP endpoint:
- Hello World
GET /hello
Response: "Hello World"
Implementation Details
The example demonstrates:
- HTTP request tracing
- Trace context propagation
- Error handling and logging
Troubleshooting
-
Server Issues:
- Ensure server is running:
curl http://localhost:8199/hello
- Check server logs for detailed error messages
- Ensure server is running:
-
Tracing Issues:
- Verify
Jaeger
is running:docker ps | grep jaeger
- Check
Jaeger
UI accessibility: http://localhost:16686 - Ensure trace endpoint is correct in configuration
- Verify