distributed-tracing

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

Updated Mar 12, 2026
One-click install
npx skills add https://github.com/RavitejaKarra24/dotfiles --skill distributed-tracing-ravitejakarra24
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: distributed-tracing
Source: https://github.com/RavitejaKarra24/dotfiles/tree/main/agents/.agents/skills/distributed-tracing
Command: npx skills add https://github.com/RavitejaKarra24/dotfiles --skill distributed-tracing-ravitejakarra24

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Debugging latency and failures across microservices is difficult when a single request spans many services. This Skill provides patterns for instrumenting applications with distributed tracing so you can follow requests end-to-end, find bottlenecks, and trace error propagation. ## Core Features & Use Cases - Jaeger and Tempo Setup: Deploy tracing backends via Kubernetes operators, Docker Compose, or Grafana Tempo with S3 storage. - OpenTelemetry Instrumentation: Ready-to-adapt code for Python (Flask), Node.js (Express), and Go, including context propagation across HTTP boundaries. - Sampling and Analysis: Configure probabilistic, rate-limiting, and adaptive sampling, plus queries for slow requests and errors. - Use Case: When a checkout API is slow, trace the request from frontend through gateway, auth, and database spans to pinpoint the exact service causing the delay. ## Quick Start Instrument my Flask service with OpenTelemetry and export traces to a local Jaeger instance.

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 testing, run the jaegertracing/all-in-one Docker image exposing the UI on port 16686.

How to instrument a Flask app with OpenTelemetry tracing?

Create a TracerProvider with your service name, attach a BatchSpanProcessor with a Jaeger exporter, and call FlaskInstrumentor().instrument_app(app). Use tracer.start_as_current_span to add custom spans with attributes around business logic and database calls.

Jaeger vs Tempo for distributed tracing backend?

Jaeger provides an all-in-one option with built-in UI and Elasticsearch storage, suited for standalone deployments. Tempo integrates with Grafana and stores traces in object storage like S3, fitting teams already using the Grafana stack.

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 connectivity to the collector, and review application logs for export 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.