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 library created and accepted by the team
Things to consider
This will require review (3 engs) time because it will touch many of our services