distributed-tracing

Implement distributed tracing with Jaeger and Tempo across microservices using OpenTelemetry instrumentation.

Updated Apr 23, 2026
One-click install
npx skills add https://github.com/SanketAdlak/PDMProjectDesign --skill distributed-tracing-sanketadlak
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: distributed-tracing
Source: https://github.com/SanketAdlak/PDMProjectDesign/tree/main/.agents/skills/distributed-tracing
Command: npx skills add https://github.com/SanketAdlak/PDMProjectDesign --skill distributed-tracing-sanketadlak

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) and assets (resource) components.

What problem does it solve? Debugging latency, errors, and dependencies across microservices is difficult without end-to-end request visibility. This Skill provides the setup and instrumentation guidance needed to trace requests as they flow through distributed systems. ## Core Features & Use Cases - Jaeger and Tempo Deployment: Deploy tracing backends on Kubernetes or Docker Compose with production storage options like Elasticsearch and S3. - OpenTelemetry Instrumentation: Add tracing to Python (Flask), Node.js (Express), and Go services with spans, attributes, and context propagation via HTTP headers. - Sampling and Analysis: Configure probabilistic, rate-limiting, and adaptive sampling, then query traces for slow requests and errors. - Use Case: A user-service endpoint is slow in production. Instrument the services, propagate trace context across the API gateway and database calls, then query Jaeger for traces over 1 second to pinpoint the slow database span. ## Quick Start Instrument my Flask service with OpenTelemetry and Jaeger so I can trace requests across my microservices.

Frequently Asked Questions about distributed-tracing

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I set up distributed tracing with Jaeger in Kubernetes?

Deploy the Jaeger Operator into an observability namespace, then apply a Jaeger custom resource with a production strategy and Elasticsearch storage. For local development, run the jaegertracing/all-in-one Docker image exposing the UI on port 16686.

How to instrument a Flask app with OpenTelemetry and Jaeger?

Create a TracerProvider with your service name, add a BatchSpanProcessor with a JaegerExporter pointing at the agent host, and call FlaskInstrumentor().instrument_app(app). Then create custom spans with tracer.start_as_current_span around business logic and database calls.

Jaeger vs Tempo for distributed tracing backend?

Jaeger provides a dedicated UI with service dependency graphs and supports Elasticsearch storage. Tempo integrates with Grafana and stores traces in object storage like S3, accepting Jaeger, Zipkin, and OTLP protocols. Both work with OpenTelemetry instrumentation.

Why are no traces appearing in Jaeger?

Missing traces usually come from a wrong collector endpoint, network connectivity issues, or sampling configuration dropping all spans. Check the exporter endpoint, verify the agent ports are reachable, and review application logs for exporter errors.

What sampling rate should I use in production tracing?

Sample 1-10% of traces in production to keep overhead under 1% CPU impact. Use probabilistic sampling with a param like 0.01, rate-limiting sampling for a fixed traces-per-second cap, or parent-based sampling for deterministic decisions.