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:
- Core modules: designed for library instrumentation, offering a lightweight dependency footprint
- Selective integration: use only the metrics or tracing functionality without requiring the other
-
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:
- Low memory overhead
- Extensive instrumentation ecosystem
- Well-tested implementation
-
Pure Scala SDK
A pure Scala SDK backend is available in the separate
otel4s-sdkproject for JVM, Scala.js, and Scala Native. -
Testkit
A testkit simplifies the validation of telemetry behavior in the applications and libraries:
- Framework-agnostic, works with any test framework, such as weaver, munit, scalatest
- Ideal for testing of the instrumented applications in end-to-end or unit tests
- Included for the OpenTelemetry Java backend in this repo
otel4s 1.0 establishes the compatibility baseline for the modules published
from this repository, primarily otel4s-core*, otel4s-oteljava*, and the
semantic-convention and instrumentation modules.
Artifacts that remain unstable are explicitly marked, such as
*-experimental semantic-convention modules. The pure Scala SDK backend lives
in the separate otel4s-sdk
project.
| Module family | JVM | Scala Native | Scala.js |
|---|---|---|---|
otel4s-core* |
✅ | ✅ | ✅ |
otel4s-semconv* |
✅ | ✅ | ✅ |
otel4s-instrumentation-* |
✅ | ✅ | ✅ |
otel4s-oteljava* |
✅ | ❌ | ❌ |
See the website.