otel4s is an OpenTelemetry implementation for Scala. The design goal is to fully and faithfully implement the OpenTelemetry Specification atop Cats Effect.
Simple and idiomatic metrics and tracing API
Provides a user-friendly and idiomatic API for telemetry, designed with Typelevel ecosystem best practices. Intuitive interfaces for metrics, tracing, and context propagation.
Minimal overhead
The library utilizes metaprogramming techniques to reduce runtime costs and allocations. Near-zero overhead when telemetry is disabled, ensuring production performance is unaffected when tracing or metrics collection is not required.
Modularity
A modular architecture allows to include only the required components:
Cross-platform
All modules are available for Scala 2.13 and Scala 3. Core modules are available on all platforms: JVM, Scala.js, and Scala Native.
OpenTelemetry Java SDK backend
The backend utilizes OpenTelemetry Java SDK under the hood, offering production-ready telemetry:
SDK backend
SDK modules are implemented in Scala from scratch. Available for JVM, Scala.js, and Scala Native. While the implementation is compliant with the OpenTelemetry specification, it remains experimental and some functionality may be lacking.
Testkit
A testkit simplifies the validation of telemetry behavior in the applications and libraries:
The API is still highly experimental, but we are actively instrumenting various libraries and applications to check for fit. Don't put it in a binary-stable library yet, but we invite you to try it out and let us know what you think.
Module / Platform | JVM | Scala Native | Scala.js |
---|---|---|---|
otel4s-core |
✅ | ✅ | ✅ |
otel4s-sdk |
✅ | ✅ | ✅ |
otel4s-oteljava |
✅ | ❌ | ❌ |
See the website.