We need to build a library for setting up tracing within our services.
Please refer to Open Telemetry RFC for more details.
Trace.go must define a Tracer interface with helper functions for starting trace and ending trace:
* Decorator (TraceSubscriber) that wraps the subscriber.handler function, TraceSubscriber.
* EndTrace method
* NewTracer constructor
* Trace struct with SamplingRate, Provider
* Modify schema.helper Produce to inject headers into kafka messages (also consider using correlation IDs in the event object instead of linking spans with context).
* To trace the s3 calls, define a Tracer struct that implements the S3API interface in the OTEL submodule.
* Override s3API in library
* Add S3 API call methods in the Main API to the S3PI struct in the otel submodule.
Acceptance Criteria:
[] Tracing functionality added for Structured-Data, Event-Bridge, On-demand and Main API