Implement distributed tracing with Jaeger and Tempo to track requests across microservices and identify performance bottlenecks. Use when debugging microservices, analyzing request flows, or implementing observability for distributed systems.
The distributed-tracing skill enables developers to implement distributed tracing within microservices architectures, leveraging tools like Jaeger and Tempo. This skill addresses the challenge of tracking requests across multiple microservices, which is crucial for identifying performance bottlenecks and understanding system behavior. By visualizing the flow of requests, developers can gain insights into latency, dependencies, and potential failure points, leading to improved system reliability and performance diagnostics.
Key features of this skill include the ability to create comprehensive traces that capture the end-to-end journey of requests, as well as the capability to instrument applications using OpenTelemetry for various programming languages such as Python and Node.js. It supports both Kubernetes and Docker environments for deploying Jaeger, ensuring flexibility for different infrastructure setups. Additionally, it provides a structured format for organizing spans, context, tags, and logs to enhance observability across distributed systems.
This skill is particularly useful for software engineers, DevOps professionals, and system architects who work with microservices. It is an essential tool for debugging latency issues, understanding service dependencies, and tracing error propagation. By implementing this skill, organizations can enhance their observability practices, streamline performance analysis, and ultimately deliver better user experiences in their applications.
You can deploy Jaeger using Kubernetes or Docker Compose. For Kubernetes, use the Jaeger Operator and create a Jaeger instance with the provided YAML configuration. For Docker, utilize the Jaeger all-in-one image with the specified service configurations.
The skill supports instrumentation for applications built with Python (Flask) and Node.js (Express) using OpenTelemetry.
You need to have a working Kubernetes or Docker environment, and you should include the necessary OpenTelemetry libraries in your application code.
Yes, while the example provided uses Elasticsearch for storage, Jaeger supports multiple storage backends, allowing you to configure your preferred option.
The primary limitation is the need for proper instrumentation in your services. Without it, you may not capture detailed tracing information. Additionally, performance may vary based on the volume of traces and the backend storage configuration.
Quick Setup:
.claude/skills/Repository
wshobson/agents