Lightbend Telemetry 2.11 migration guide

This is a guide for migrating from Lightbend Telemetry 2.10 to Lightbend Telemetry 2.11.

Module and dependency changes

Removed OverOps integration

The OverOps integration has been deprecated since Lightbend Telemetry 2.9 and has been removed.

Removed Cinnamon Sandbox dependency

The sandbox module was removed and replaced by the configuration guidance in the Developer Sandbox Configure guide.

Removed Cinnamon Contrail

The Contrail module was removed and replaced by SLF4J Events.

Removed cross compilation

A number of Lightbend Telemetry modules that only contain Java code are no longer cross compiled, and are now published without the trailing Scala version. This means that if you are not using the sbt plugin in your build, you need to update your build for the following modules:

Old name New name
cinnamon-chmetrics_2.11/2.12 cinnamon-chmetrics
cinnamon-chmetrics3_2.11/2.12 cinnamon-chmetrics3
cinnamon-chmetrics-jvm-metrics_2.11/2.12 cinnamon-chmetrics-jvm-metrics
cinnamon-chmetrics3-jvm-metrics_2.11/2.12 cinnamon-chmetrics3-jvm-metrics
cinnamon-chmetrics-elasticsearch-reporter_2.11/2.12 cinnamon-chmetrics-elasticsearch-reporter
cinnamon-chmetrics-hdrhistogram_2.11/2.12 cinnamon-chmetrics-hdrhistogram
cinnamon-chmetrics-statsd-reporter_2.11/2.12 cinnamon-chmetrics-statsd-reporter
cinnamon-datadog_2.11/2.12 cinnamon-datadog
cinnamon-hikaricp-jmx-importer_2.11/2.12 cinnamon-hikaricp-jmx-importer
cinnamon-jmx-importer_2.11/2.12 cinnamon-jmx-importer
cinnamon-jvm-metrics-producer_2.11/2.12 cinnamon-jvm-metrics-producer
cinnamon-newrelic_2.11/2.12 cinnamon-newrelic
cinnamon-opentracing-tracer_2.11/2.12 cinnamon-opentracing-tracer
cinnamon-opentracing-jaeger_2.11/2.12 cinnamon-opentracing-jaeger
cinnamon-opentracing-zipkin_2.11/2.12 cinnamon-opentracing-zipkin
cinnamon-opentracing-zipkin-kafka_2.11/2.12 cinnamon-opentracing-zipkin-kafka
cinnamon-opentracing-zipkin-scribe_2.11/2.12 cinnamon-opentracing-zipkin-scribe
cinnamon-opsclarity_2.11/2.12 cinnamon-opsclarity
cinnamon-prometheus_2.11/2.12 cinnamon-prometheus
cinnamon-prometheus-httpserver_2.11/2.12 cinnamon-prometheus-httpserver
cinnamon-slf4j-events_2.11/2.12 cinnamon-slf4j-events
cinnamon-telegraf_2.11/2.12 cinnamon-telegraf

Removed transitive dependencies

OpenTracing

The OpenTracing modules like cinnamon-opentracing-jaeger no longer pull in the base cinnamon-opentracing_2.11/2.12 module since that module is cross compiled and depends on the Scala version used in the project.

Please explicitly include the cinnamon-opentracing_2.11/2.12 module like this:

sbt
libraryDependencies += Cinnamon.library.cinnamonOpenTracing
Maven
<dependency>
  <groupId>com.lightbend.cinnamon</groupId>
  <artifactId>cinnamon-opentracing_2.12</artifactId>
  <version>2.11.1</version>
</dependency>
Gradle
dependencies {
  compile group: 'com.lightbend.cinnamon', name: 'cinnamon-opentracing_2.12', version: '2.11.1'
}

New Relic Java API dependency

The New Relic plugin no longer pull in the New Relic Java API dependency and need to be added explicitly to avoid potential version conflicts.

Coda Hale Metrics (Dropwizard Metrics)

Lightbend Telemetry 2.11 supports both Coda Hale Metrics version 4 and the previous version 3. You now need to select the core Metrics module to use.

Note: Lightbend Telemetry modules that provide Coda Hale Metrics reporters now mark the core Coda Hale Metrics module as a provided dependency. One of the core Coda Hale Metrics modules needs to be selected, either the default module using Metrics 4, or the chmetrics3 variation which depends on Metrics 3, along with the reporter module dependency.

Metrics 3

In Lightbend Telemetry 2.9, Coda Hale Metrics was upgraded from version 3 to version 4.

If you have other dependencies that are still on Metrics 3, then you may get this exception if the old JMX reporter is referenced:

java.lang.NoClassDefFoundError: com/codahale/metrics/JmxReporter

You can select the Coda Hale Metrics 3 module instead.

If you used the chmetrics3 dependencies in Lightbend Telemetry 2.10, then upgrade to the new approach in Lightbend Telemetry 2.11—where the core Metrics module needs to be selected.

For example, you can use the core Coda Hale Metrics 3 dependency with any of the reporters, such as the StatsD reporter:

sbt
libraryDependencies += Cinnamon.library.cinnamonCHMetrics3
libraryDependencies += Cinnamon.library.cinnamonCHMetricsStatsDReporter
Maven
<dependency>
    <groupId>com.lightbend.cinnamon</groupId>
    <artifactId>cinnamon-chmetrics3</artifactId>
    <version>2.11.1</version>
</dependency>
<dependency>
    <groupId>com.lightbend.cinnamon</groupId>
    <artifactId>cinnamon-chmetrics-statsd-reporter</artifactId>
    <version>2.11.1</version>
</dependency>
Gradle
dependencies {
  compile group: 'com.lightbend.cinnamon', name: 'cinnamon-chmetrics3', version: '2.11.1'
}
dependencies {
  compile group: 'com.lightbend.cinnamon', name: 'cinnamon-chmetrics-statsd-reporter', version: '2.11.1'
}

Akka Scheduler support

The Akka Scheduler scheduleOnce method is now supported for:

OpenTracing backend support

Jaeger

Jaeger dependency has been upgraded to the latest version: 0.33.1.

Zipkin

Zipkin reporter has been upgraded to 2.7.6. As of this version:

  • Zipkin2 API support has been added.
  • The endpoint settings defaults to http://localhost:9411/api/v2/spans.
  • The thrift encoding has been deprecated for the sake of proto3.
  • The json encoding is used by default, because it’s supported by any version of Zipkin. Use proto3 with Zipkin 2.8+
New setting Deprecated setting Description
api-version Mainly used to select a proper version of JSON encoding (JSON_V1 or JSON_V2).
message-timeout flush-interval Instead of sending one message at a time, spans are bundled into messages, up to message-max-bytes. This timeout ensures that spans are not stuck in an incomplete message.
queued-max-spans max-queue-size Maximum backlog of spans reported vs sent. Use this setting instead of max-queue-size.
queued-max-bytes Maximum backlog of span bytes reported vs sent. Default 1% of heap.
message-max-bytes Maximum bytes sendable per message including overhead.

See Zipkin configuration reference for details.

Stopwatch and Akka Stream defaults

The defaults for Stopwatch and Akka Stream asynchronous processing time are now disabled instead of automatically enabled. These two advanced features are opt-in to further reduce the telemetry overhead.