This repository provides an implementation of the OpenTelemetry API and OpenTelemetry SDK for the Haskell programming language.
This library still has a number of areas that don't fully cover the breadth of the OpenTelemetry specification. The core aspects of the tracing system are implemented, but you may view the detailed conformance checklist here
Metrics and logs are not yet supported.
If you're instrumenting a library directly, or as a wrapper, use the hs-opentelemetry-api package.
If you're instrumenting an application, use the hs-opentelemetry-sdk package.
Fully instrumented application examples are available in the examples folder.
Package | OpenTelemetry Instrumentation |
---|---|
wai | hs-opentelemetry-instrumentation-wai |
yesod-core | hs-opentelemetry-instrumentation-yesod |
persistent | hs-opentelemetry-instrumentation-persistent |
esqueleto | hs-opentelemetry-instrumentation-persistent |
persistent-mysql | hs-opentelemetry-instrumentation-persistent-mysql |
postgresql-simple | hs-opentelemetry-instrumentation-postgresql-simple |
http-client | hs-opentelemetry-instrumentation-http-client |
http-conduit | hs-opentelemetry-instrumentation-http-client |
conduit | hs-opentelemetry-instrumentation-conduit |
Exporter | OpenTelemetry Package | Module | Support |
---|---|---|---|
OTLP | hs-opentelemetry-exporter-otlp | OpenTelemetry.Exporter.OTLP | ✅ |
Jaeger | Not Implemented. | ||
Zipkin | Not Implemented | ||
Honeycomb | (use hs-opentelemetry-exporter-otlp) | ✅ |
Propagator | OpenTelemetry Package | Module | Support |
---|---|---|---|
W3CBaggage | hs-opentelemetry-propagator-w3c | OpenTelemetry.Propagator.W3CBaggage | ✅ |
W3CTraceContext | hs-opentelemetry-propagator-w3c | OpenTelemetry.Propagator.W3CTraceContext | ✅ |
B3 | hs-opentelemetry-propagator-b3 | OpenTelemetry.Propagator.B3 | ✅ |
Jaeger | hs-opentelemetry-propagator-jaeger | OpenTelemetry.Propagator.Jaeger | Not implemented. |
Datadog | hs-opentelemetry-propagator-datadog | OpenTelemetry.Propagator.Datadog | ✅ |
See CONTRIBUTING.md.
Maintainers:
When creating a PR please follow the process described here.
PRs will be automatically associated with the reviewers based on CODEOWNERS. PRs will be also automatically assigned to one of the maintainers or approvers for facilitation.