All clj-otel-*
module versions are released in lockstep to Clojars.
x.y.z
versions listed below do not follow semantic versioning.
Instead, development proceeds on a linear path where z
increases for batches of incremental changes and y
increases (with z
reset to 0
) when milestones are reached.
The changes are marked as follows:
-
[BREAK] is a breaking change in behaviour that requires user action to accommodate for when upgrading from a previous version
-
[ADD] is an addition of a new feature
-
[FIX] is a bug fix
-
[MAINT] is a maintenance change for general improvement and proactive avoidance of potential issues
|
Until version 1.0.0 there is a greater possibility of breaking changes.
|
-
[ADD] Updated microservices examples to export logs to Grafana Loki. A
Logs
panel has been added to theHTTP server instances
dashboard. -
Bump deps
-
[MAINT] OpenTelemetry
1.40.0
, semconv1.26.0-alpha
, instrumentation2.6.0-alpha
-
[ADD]
MemoryMode
option for programmatically configured OTLP exporters. -
[ADD] Programmatic configuration of log record exporters used for debugging.
-
[BREAK] Pedestal
0.7.0
in microservices examples. Pedestal0.7.0
introduces its own support for OpenTelemetry, including a new interceptorio.pedestal.http.tracing/request-tracing-interceptor
. This overlaps functionality withclj-otel
interceptors, so should be disabled by setting:io.pedestal.http/tracing
tonil
in the Pedestal service map.
-
-
Bump deps
-
[MAINT] OpenTelemetry
1.39.0
-
[ADD] Support for creating and setting gauges that take measurements synchronously. Use
steffan-westcott.clj-otel.api.metrics.instrument/set!
to synchronously set a gauge to a given measurement. -
[ADD] Option to set explicit bucket boundaries advice for histograms
-
[ADD]
:links
option foradd-span-data!
-
[FIX]
metrics-by-route-interceptors
should record requests that have 404 HTTP response code -
[BREAK] Removed modules
clj-otel-exporter-jaeger-grpc
andclj-otel-exporter-jaeger-thrift
as the Java librariesopentelemetry-exporter-jaeger
andopentelemetry-exporter-jaeger-thrift
are no longer published. Jaeger has native support for OTLP, useclj-otel-exporter-otlp
instead to configure an OTLP exporter. -
[BREAK] In module
clj-otel-exporter-zipkin
,span-exporter
options:sender
and:encoder
now takezipkin2.reporter.BytesMessageSender
andzipkin2.codec.BytesEncoder
values
-
-
[MAINT] Various build deps
-
-
Refactored microservice examples
-
[MAINT] Removed uberjar build step. All application instances now use a
clojure
Docker image rather than custom image containing an uberjar. -
[ADD] For telemetry backend, changed to use Grafana with Grafana Tempo and Prometheus. Preconfigured Grafana dashboards for metrics and traces are included.
-
[ADD] Added state lifecycle management, using
with-open
andcloseable
pattern. -
[MAINT] Altered Ring/Pedestal servers to reload routes on every HTTP request.
-
[ADD] Added embedded nREPL server to all application and load-gen instances for remote access.
-
-
[ADD] Example
rpg-service
with instrumented database access -
[FIX] Updated examples and guide when using
wrap-metrics-by-route
to also wrap Reitit default handler. This ensures correct recording of metrics for HTTP server spans with 404, 405 and 406 response codes.
-
Bump deps
-
[MAINT] OpenTelemetry
1.34.1
-
[BREAK] OpenTelemetry instrumentation agent
2.0.0
The default OTLP exporter protocol used by the agent has changed fromgrpc
tohttp/protobuf
. See the release notes for details on this and other breaking changes. Note the default OTLP exporter protocol used by the autoconfigure SDK extension remains asgrpc
. -
[MAINT] Various build deps
-
-
[FIX] Queried header names in context propagator text maps (for manually instrumented applications) should be lower-cased. Previously,
b3multi
andxray
propagators would fail because header names in Ringrequest
maps are lower-cased but the queried header name may not. -
[ADD] Module
clj-otel-sdk-common
which wraps the OpenTelemetry SDK common library. -
[BREAK] Moved function
merge-resources-with-default
to new moduleclj-otel-sdk-common
. -
[ADD] Terse syntax alternatives for
span-opts
map parameter innew-span!
and related functions that create spans. -
[ADD] Convenience function
add-event!
to add an event to the bound or current span. -
[ADD] Populate
err.type
trace semantic attribute on manually created client and server spans. -
[ADD] Middleware
wrap-compojure-route
that adds the matched Compojure route to the server span and request map. -
[MAINT] Ensure example microservices uberjars are built and run on the same JDK.
-
Bump deps
-
[MAINT] OpenTelemetry
1.33.0
-
[MAINT] Various build deps
-
-
[ADD] Module
clj-otel-sdk-extension-autoconfigure
which wraps the autoconfigure OpenTelemetry SDK extension. Updated guide on using the autoconfigure module and adding initialisation code to application. -
[ADD] Updated functions to use a default
OpenTelemetry
instance declared byclj-otel
, falling back to the globalOpenTelemetry
instance declared by Java OpenTelemetry if no default instance was previously configured. Added recommendation to prefer use of defaultOpenTelemetry
instance over the globalOpenTelemetry
instance, when using autoconfigure module or programmatic configuration of SDK. Use of system propertyotel.java.global-autoconfigure.enabled
or environment variableOTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED
is discouraged. -
[BREAK]
steffan-westcott.clj-otel.sdk.otel-sdk/init-otel-sdk!
has a new optionregister-shutdown-hook
enabled by default. -
[ADD] New middleware (formerly part of the microservices examples)
-
wrap-exception-event
adds an exception event to the server span. This is intended for use by applications which transform the exception to an HTTP response in a subsequent middleware. -
wrap-reitit-route
adds the matched Reitit route to the server span and request map.
-
-
[ADD] New interceptor
exception-event-interceptor
adds an exception event to the server span. This is intended for use by applications which transform the exception to an HTTP response in a subsequent interceptor. -
[ADD] Function
steffan-westcott.clj-otel.instrumentation.runtime-telemetry-java8/close!
to stop JVM telemetry.steffan-westcott.clj-otel.instrumentation.runtime-telemetry-java8/register!
now returns a collection ofAutoCloseable
. -
[MAINT] Removed
:dev
alias for development. -
[MAINT] Reworked examples to be easier to run. Added load generator applications to microservices examples.
-
Bump deps:
-
[MAINT] OpenTelemetry
1.30.1
-
[BREAK]
clj-otel-exporter-jaeger-*
are now deprecated, useclj-otel-exporter-otlp
instead
-
-
[BREAK] Now using
io.opentelemetry.semconv/opentelemetry-semconv
semantic conventions. This impacts manually instrumented HTTP server applications usingclj-otel
middleware or interceptors, as several semantic attributes have changed. -
[MAINT] Various build deps
-
-
[ADD] Support for programmatic configuration of
MeterProvider
for metrics export. -
[ADD] Module
clj-otel-exporter-prometheus
for programmatic configuration of metrics export to Prometheus -
[FIX]
steffan-westcott.clj-otel.util/duration
should convert[amount ^TimeUnit unit]
toDuration
-
Bump deps:
-
[MAINT] OpenTelemetry
1.27.0
-
[BREAK] The default value for autoconfiguration property
otel.logs.exporter
has changed fromnone
tootlp
-
[BREAK] Module
clj-otel-instrumentation-runtime-metrics
has been renamed and split into modulesclj-otel-instrumentation-runtime-telemetry-java8
andclj-otel-instrumentation-runtime-telemetry-java17
-
-
-
[ADD] Opt-in feature bound context, a Clojure dynamic var that overrides the default
context
orparent
parameter value forclj-otel
functions. This feature is intended to simplify asynchronous code by eliminating explicit context passing. Existing code that uses the current context or explicit context parameter values is unaffected. -
[FIX] Convert key names of entries added to OpenTelemetry attributes to snake_case. This applies to resources, spans and metrics.
-
[FIX] Do not transform key names of entries added to OpenTelemetry context or baggage.
-
[ADD] Function
set-attribute-name-fn!
to override setting of OpenTelemetry attribute key names. -
[MAINT] Remove Jaeger exporters from examples, since they will be deprecated soon. The Jaeger Collector now accepts OTLP directly. See the Jaeger clients deprecation notice.
-
Bump deps:
-
[MAINT] OpenTelemetry contrib
1.26.0-alpha
-
[MAINT] Various build deps
-
-
[FIX] Use
.
instead of/
in namespace qualified attribute names -
[MAINT] Removed deprecated build dep
build-clj
-
Bump deps:
-
[MAINT] OpenTelemetry
1.26.0
-
[MAINT] Various build deps
-
-
[ADD] Support for Metrics API
-
[ADD] Implementations of the following HTTP server metrics for use by applications not run with the OpenTelemetry instrumentation agent:
-
http.server.active_requests
-
http.server.duration
-
http.server.request.size
-
-
[BREAK] The parameters for function
add-route-data!
have changed, there is a new parameter to specify the HTTP request method. -
[BREAK] The pattern for using
clj-otel
middleware and interceptors in applications has been revised. The revised pattern adds new middlewarewrap-route
,wrap-active-requests
andwrap-metrics-by-route
and interceptorsroute-interceptor
,active-requests-interceptor
andmetrics-by-route-interceptors
to capture matched routes in HTTP server spans and HTTP server metrics. The pattern also ensures all requests are recorded, including those which do not match any route. -
[ADD] Module
clj-otel-instrumentation-runtime-metrics
to provide access to JVM runtime metrics instrumentation for applications not using the OpenTelemetry instrumentation agent. -
[ADD] Aliases in examples
-
:metrics-*
to control export of metrics -
:logging-*
to control application logging
-
-
Bump deps:
-
[MAINT] OpenTelemetry
1.25.0
-
[BREAK] When using autoconfiguration for a manually instrumented application, include the new JVM option
"-Dotel.java.global-autoconfigure.enabled=true"
or environment variable settingOTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED=true
-
Methods to statically set the server host name attribute on server spans have been removed, as static data is better represented as an OpenTelemetry resource.
-
[BREAK] The function
add-server-name!
has been removed. -
[BREAK] The option
:server-name
has been removed from the middleware and interceptors for server span support.
-
-
[BREAK] Module
clj-otel-extension-aws
renamed toclj-otel-contrib-aws-xray-propagator
-
[BREAK] Module
clj-otel-sdk-extension-aws
renamed toclj-otel-contrib-aws-resources
-
[BREAK] Module
clj-otel-sdk-extension-resources
renamed toclj-otel-instrumentation-resources
-
-
[MAINT] Various build deps
-
-
[ADD] Support for including source code semantic attributes when creating spans. By default, attributes identifying the namespace, line number and source file path are included in spans created by
with-span!
,with-span-binding
, andasync-span
. -
[ADD] Update Pedestal HTTP server span support to always add route data to server spans
-
Bump deps:
-
[MAINT] OpenTelemetry
1.15.0
-
[BREAK] Modules
clj-otel-exporter-otlp-*
are merged to new moduleclj-otel-exporter-otlp
-
-
[MAINT] Various build deps
-
-
[ADD] Include
ExceptionInfo
data as attributes in exception span events, by default -
[FIX] Update examples to use namespaced attributes for spans and events
-
Bump deps:
-
[MAINT] OpenTelemetry
1.13.0
-
[BREAK] The default value for autoconfiguration property
otel.metrics.exporter
has changed fromnone
tootlp
-
-
[MAINT] Clojure
1.11.1
-
[MAINT] Various build deps
-