Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Greetings! Here are a few GSoC ideas for the otel4s project. Last year, Sherrie prototyped the tracing SDK, which we successfully implemented using pure Scala. The SDK is available for all platforms: JVM, Scala.js, and Scala Native.
However, some features are missing. And it would be nice to implement them.
1) Environment-aware TelemetryResource configurer
OpenTelemetry Java can detect a large variety of environments (e.g. GCP, AWS ECS, etc) and add additional
environment-specific attributes to the TelemetryResource. For example, when an application runs in the container, the
container.id
attribute can be added to the telemetry resource.We can implement the following:
a) Common: Container, Host, OS, Process
b) Google Cloud: GCP
c) AWS: Beanstalk, EC2, ECS, EKS, Lambda
2) Trace SDK - support span limits
The purpose is to keep the number of a) Attributes, b) Links, and c) Events under the configured limit.
Details: typelevel/otel4s#481.
3) SDK exporter - implement gRPC-client
We already have protobuf models and an HTTP OTLP client, but the gRPC client still needs to be implemented. Since we need a pure Scala implementation, we can experiment with https://github.com/http4s/http4s-grpc.
4) Context propagators
Some propagators haven't been implemented yet:
5) Prometheus metrics exporter
Note: The metrics SDK has not been implemented yet, and I doubt it will be ready by the start of GSoC.
An HTTP server that exposes metrics in Prometheus-compatible format.
https://github.com/prometheus/docs/blob/main/content/docs/instrumenting/exposition_formats.md
https://github.com/open-telemetry/opentelemetry-java/tree/main/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus
6) Integration with cats-effect
It's more of a cats-effect project than otel4s. Perhaps some ideas from the existing PR could be reused.
7) Integration with fs2
It would be interesting to explore options to implement propagation within
Stream
scopes.We have
Span[F].startUnmanaged
, so perhaps there is a way to hack this functionality.