Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracing SDK #234

Closed
7 of 9 tasks
armanbilge opened this issue Jun 1, 2023 · 5 comments
Closed
7 of 9 tasks

Tracing SDK #234

armanbilge opened this issue Jun 1, 2023 · 5 comments
Assignees
Labels
tracing Improvements to tracing module

Comments

@armanbilge
Copy link
Member

armanbilge commented Jun 1, 2023

Towards #199 🚀

Tracing API spec: https://opentelemetry.io/docs/specs/otel/trace/api/
Tracing SDK spec: https://opentelemetry.io/docs/specs/otel/trace/sdk/

There are obviously quite a lot of things in there to fully implement the spec 😅 so below I've attempted to carve out some tractable steps that brings us to a minimum viable implementation: something that can build spans, trace effects, and send them to an OTLP endpoint. I can't promise these are the precise and exact steps needed, so we may edit as we go along 😝 but it should be a rough sketch.

  • add otel4s-sdk-trace module to build.sbt New modules + span context maybe?  #236
  • implement SpanContext New modules + span context maybe?  #236
  • implement Span via Span.Backend + builders
  • add SpanExporter interface
  • implement Tracer + builder/provider
  • add otel4s-exporter-otlp module to build.sbt and configure http4s-grpc source generator1
  • implement SpanExporter interface with gRPC
  • setup an integration test e.g. against Jaeger 🎉
  • begin iterating, to add features and fully implement the spec

I've create a branch that @sherriesyt can target with a series of small PRs. Then we can merge that branch into main.
https://github.com/typelevel/otel4s/tree/tracing-sdk

Thoughts and input very appreciated 🙏

Footnotes

  1. @kovstas will need this too, for their work on the metrics SDK. so whoever gets to it first can do the setup :)

@sherriesyt
Copy link
Contributor

Thanks @armanbilge :) I can also use this issue as a space for discussion if we realize along the way that steps may change, be reordered, etc.

@kovstas
Copy link
Contributor

kovstas commented Jun 2, 2023

@armanbilge What do you think about having a common branch for Tracing & Metrics API? We will definitely have a otel4s-sdk-common module, at least for Resource (https://opentelemetry.io/docs/specs/otel/resource/sdk/) class and other entities like Attributes or InstrumentalScopeInfo. In addition, I noticed that TracerProvider & MetricsProvider will have a lot in common, such as providing a registry for objects related to them. For example, in Java SDK it is ComponentRegistry.

Originally, I was going to make a PR with the otel4s-sdk-common module, but if we keep everything under a feature branch, then keeping everything related under a single branch makes sense to me.

@armanbilge
Copy link
Member Author

Good point, thanks! Ok sure, so then I created an sdk branch which you can both target :)

https://github.com/typelevel/otel4s/tree/sdk

@armanbilge armanbilge added the tracing Improvements to tracing module label Jun 7, 2023
@iRevive iRevive assigned iRevive and unassigned sherriesyt Oct 20, 2023
@iRevive
Copy link
Contributor

iRevive commented Jan 18, 2024

https://opentelemetry.io/docs/specs/otel/context/api-propagators/#propagators-distribution

Required propagators:

  • B3
  • W3C tracestate
  • W3C baggage
  • Jaeger

@iRevive
Copy link
Contributor

iRevive commented Apr 6, 2024

The tracing SDK has been released. Only gRPC exporter is not implemented from the original scope.

I will close this task and make a new one for the gRPC exporter.

@iRevive iRevive closed this as completed Apr 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tracing Improvements to tracing module
Projects
None yet
Development

No branches or pull requests

4 participants