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.


Ensure the following prerequisites are met before proceeding:

Step 1: Create the Docker-Compose File for Jaeger

Save the following YAML configuration in a file named docker-compose.yml:

version: "2"
  # Jaeger: Distributed Tracing System
    image: jaegertracing/all-in-one:latest
      - "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": "",
      "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

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

  image: tykio/tyk-gateway:v5.2.0
    - 8080:8080
    - TYK_GW_OPENTELEMETRY_ENDPOINT=jaeger-all-in-one:4317
    - ${TYK_APPS:-./apps}:/opt/tyk-gateway/apps
    - redis

  image: redis:4.0-alpine
    - 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.

Tyk API Gateway distributed trace in Jaeger

Select a trace to visualize its corresponding internal spans:

Tyk API Gateway spans in Jaeger