
Distributed Tracing
FreeGain visibility into microservice request flows.
Free · Opens the source repo
What Distributed Tracing does
Distributed tracing is essential for monitoring and debugging complex microservices architectures. This skill implements distributed tracing using Jaeger and Tempo, allowing developers to track requests as they flow through various services. By providing insights into latency, service dependencies, and error propagation, it helps identify performance bottlenecks and understand the overall behavior of distributed systems.
The skill is particularly useful in scenarios where latency issues arise, as it enables developers to pinpoint the exact service causing delays. It also aids in understanding how services interact, which is crucial for maintaining and optimizing microservices. By analyzing request paths, teams can improve observability and ensure that their applications perform reliably under varying loads.
To make the most of this skill, users should follow best practices such as appropriate sampling, context propagation, and meaningful tagging. The included documentation provides detailed patterns and examples to assist in implementation. Additionally, troubleshooting tips are available for common issues like missing traces or high latency overhead, ensuring that users can effectively resolve problems as they arise.
This skill is a valuable addition for any developer or team working with microservices who seeks to enhance their observability practices and improve application performance.
When to use it
Use this skill when debugging latency issues, analyzing request flows, or implementing observability in distributed systems.
When not to use it
This skill may not be suitable for monolithic applications or simpler architectures where distributed tracing is unnecessary.
What you can build with it
Debugging Latency Issues
When users experience slow response times, this skill helps trace requests to identify which service is causing the delay.
Analyzing Service Dependencies
Understanding how services interact is crucial; this skill provides insights into service dependencies, aiding in architecture optimization.
Implementing Observability
For teams looking to enhance their observability practices, this skill offers a structured approach to tracking and analyzing request flows.
How to install Distributed Tracing
View source1. Install with the skills CLI
npx skills add wshobson/agents/distributed-tracing --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by wshobsonDistributed Tracing
Implement distributed tracing with Jaeger and Tempo for request flow visibility across microservices.
Purpose
Track requests across distributed systems to understand latency, dependencies, and failure points.
When to Use
- Debug latency issues
- Understand service dependencies
- Identify bottlenecks
- Trace error propagation
- Analyze request paths
Detailed patterns and worked examples
Detailed pattern documentation lives in references/details.md. Read that file when the navigation tier above is insufficient.
Best Practices
- Sample appropriately (1-10% in production)
- Add meaningful tags (user_id, request_id)
- Propagate context across all service boundaries
- Log exceptions in spans
- Use consistent naming for operations
- Monitor tracing overhead (<1% CPU impact)
- Set up alerts for trace errors
- Implement distributed context (baggage)
- Use span events for important milestones
- Document instrumentation standards
Integration with Logging
Correlated Logs
import logging
from opentelemetry import trace
logger = logging.getLogger(__name__)
def process_request():
span = trace.get_current_span()
trace_id = span.get_span_context().trace_id
logger.info(
"Processing request",
extra={"trace_id": format(trace_id, '032x')}
)
Troubleshooting
No traces appearing:
- Check collector endpoint
- Verify network connectivity
- Check sampling configuration
- Review application logs
High latency overhead:
- Reduce sampling rate
- Use batch span processor
- Check exporter configuration
Related Skills
prometheus-configuration- For metricsgrafana-dashboards- For visualizationslo-implementation- For latency SLOs
Frequently asked questions about Distributed Tracing
Similar skills
Turborepo
Optimized build system for JavaScript/TypeScript monorepos.
Azure Pipelines Validation
Streamline your Azure DevOps pipeline changes locally.
Azure Developer CLI
Streamline your Azure project workflows with best practices.
Azure Container Registry CLI
Manage Azure Container Registry resources with ease.
Aspire
Build and orchestrate polyglot distributed applications seamlessly.
Vercel CLI
Manage and deploy Vercel projects from the command line.
