Jaeger Tracing Implementation Enhances Observability
What developments have taken place today?
This commit implements a Jaeger-based tracing solution for the application, enhancing observability and debugging capabilities. The core changes involve initializing an OpenTelemetry tracer, configuring it to send data to a Jaeger endpoint, and ensuring proper context propagation throughout the system.
Specifically, the helper_tracer
package was introduced, containing functions to initialize an OTLP tracer using the go.opentelemetry.io/otel
library. The InitTracer()
function now establishes a connection to Jaeger via HTTP, utilizing a service name for identification and defaulting to http://jaeger:4318/v1/traces
. To prevent potential memory exhaustion, a memory limit of 3000 traces has been configured for the Jaeger service. Furthermore, context propagation is implemented using propagation.NewCompositeTextMapPropagator
to link traces across services and components, ensuring that tracing data accurately reflects request flows. Modifications were also made to the RabbitEnqueuer and its associated methods to accept and utilize a provided context during message queuing. Finally, resource creation with service names was added for improved observability.
These improvements are significant because they introduce a foundational layer of tracing, enabling developers to monitor application performance, identify bottlenecks, and troubleshoot issues more effectively through detailed trace data, ultimately leading to increased system stability and reduced debugging time.