otel4s is an OpenTelemetry implementation for Scala. The design goal is to fully and faithfully implement the OpenTelemetry Specification atop Cats Effect.
The Quick start shows how to add the JVM backend and record your first span and counter measurement.
-
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.