How to integrate with Jaeger on Docker
Last updated: 2 minutes read.
This quick start guide offers a detailed, step-by-step walkthrough for configuring Tyk API Gateway (OSS, self-managed or hybrid gateway connected to Tyk Cloud) with OpenTelemetry and Jaeger to significantly improve API observability. We will cover the installation of essential components, their configuration, and the process of ensuring seamless integration.
For Kubernetes instructions, please refer to How to integrate with Jaeger on Kubernetes.
Prerequisites
Ensure the following prerequisites are met before proceeding:
- Docker installed on your machine
- Gateway v5.2.0 or higher
Step 1: Create the Docker-Compose File for Jaeger
Save the following YAML configuration in a file named docker-compose.yml:
version: "2"
services:
# Jaeger: Distributed Tracing System
jaeger-all-in-one:
image: jaegertracing/all-in-one:latest
ports:
- "16686:16686" # Jaeger UI
- "4317:4317" # OTLP receiver
This configuration sets up Jaeger’s all-in-one instance with ports exposed for Jaeger UI and the OTLP receiver.
Step 2: Deploy a Test API Definition
If you haven’t configured any APIs yet, follow these steps:
- Create a subdirectory named apps in the current directory.
- Create a new file named
apidef-hello-world.json
. - Copy the provided simple API definition below into the
apidef-hello-world.json
file:
{
"name": "Hello-World",
"slug": "hello-world",
"api_id": "Hello-World",
"org_id": "1",
"use_keyless": true,
"detailed_tracing": true,
"version_data": {
"not_versioned": true,
"versions": {
"Default": {
"name": "Default",
"use_extended_paths": true
}
}
},
"proxy": {
"listen_path": "/hello-world/",
"target_url": "http://echo.tyk-demo.com:8080/",
"strip_listen_path": true
},
"active": true
}
This API definition sets up a basic API named Hello-World for testing purposes, configured to proxy requests to http://echo.tyk-demo.com:8080/
.
Step 3: Run Tyk Gateway OSS with OpenTelemetry Enabled
To run Tyk Gateway with OpenTelemetry integration, extend the previous Docker Compose file to include Tyk Gateway and Redis services. Follow these steps:
- Add the following configuration to your existing docker-compose.yml file:
# ... Existing docker-compose.yml content for jaeger
tyk:
image: tykio/tyk-gateway:v5.2.0
ports:
- 8080:8080
environment:
- TYK_GW_OPENTELEMETRY_ENABLED=true
- TYK_GW_OPENTELEMETRY_EXPORTER=grpc
- TYK_GW_OPENTELEMETRY_ENDPOINT=jaeger-all-in-one:4317
volumes:
- ${TYK_APPS:-./apps}:/opt/tyk-gateway/apps
depends_on:
- redis
redis:
image: redis:4.0-alpine
ports:
- 6379:6379
command: redis-server --appendonly yes
- Navigate to the directory containing the docker-compose.yml file in your terminal.
- Execute the following command to start the services:
docker compose up
Step 4: Explore OpenTelemetry Traces in Jaeger
- Start by sending a few requests to the API endpoint configured in Step 2:
curl http://localhost:8080/hello-world/ -i
- Access Jaeger at http://localhost:16686.
- In Jaeger’s interface:
- Select the service named tyk-gateway.
- Click the Find Traces button.
You should observe traces generated by Tyk Gateway, showcasing the distributed tracing information.
Select a trace to visualize its corresponding internal spans: