OpenTelemetry in Focus, September 2023

Welcome back to OpenTelemetry in Focus for September, 2023! The autumn winds are bringing a flurry of activity to the project, as we prepare for KubeCon and Observability Day. Are you attending? We hope to see you there for our inaugural OpenTelemetry Contribfest, Project Pavilion, and more!

Are you a maintainer with something you’d like featured here? Get in touch with me via email, or on the CNCF Slack #otel-comms channel.

Releases and Updates

Here are the latest updates from some of our core repositories.

Specification

The latest update (v1.25.0) brings several changes chiefly to the Metrics and Logs. Metric name’s maximum length has been increased from 63 to 255 characters. The MetricProducer specification has been put on feature-freeze and has been stabilized. The addition of a synchronous gauge instrument and clarification on metric point persistence have been implemented, and the term “advice” has been replaced with “advisory parameters”. A new rule defining the default size of the SimpleFixedSizeExemplarReservoir to be 1 has been established. In Logs, the GCP data model has been updated to use TraceFlags instead of gcp.trace_sampled. Additionally, a change in OpenTelemetry Protocol fixes and clarifies the definition of “transient error” in the OTLP exporter specification.

Compatibility updates include changes in OpenTracing Shim and Prometheus, the latter is permitted to change metric names by default as it translates from Prometheus to OpenTelemetry.

For full details, please visit the full changelog here

Collector

In the recent release of OpenTelemetry Collector (v0.86.0), several important updates have been made. The logging exporter has been deprecated and replaced by the newly added debug exporter. Furthermore, the linux/s390x architecture has now been incorporated into cross build tests.

Significant API changes have occurred in this release. The service.PipelineConfig has been removed, which constitutes a breaking change. Several obsreport module functions and structs are being deprecated, mostly pertaining to Exporter, Processor, Receiver, and Scraper features. These functionalities have been relocated to various helper modules.

Detailed descriptions, as well as links to the respective relocations and deprecations, can be found on the release page.

collector-contrib includes many updates as well. Important breaking changes include the removal of deprecated jaeger and jaegerthrifthttp exporters, and changes related to several packages such as pkg/ottl, pkg/stanza, mongoDb receiver, Azure Monitor exporter, tailsampling processor, and many more to comply with checkapi.

Enhancements include sub-second decision wait time in the tailsampling processor, host’s cpuinfo attributes support in resourcedetection processor, addition of ‘omit_pattern’ setting to split.Config, and several updates to the pkg/ottl package such as adding a new ‘TruncateTime’ function and support for named arguments in function invocations, among others.

Bug fixes have been rolled out for issues like the tailsampling processor accepting duplicate policy names, JSON marshal errors for metrics with NaN values in AWS EMF Exporter, and restoration of AWS X-Ray metadata structure while exporting, along with a range of other bug fixes for various components.

There were also several breaking changes in v0.85.0:

  • Removal of deprecated Kubernetes API resources like HorizontalPodAutoscaler v2beta2 version and CronJob v1beta1 version means metrics for those resources will no longer be emitted on Kubernetes 1.22 and older.
  • Prometheus exporters now append type and unit suffixes by default, which can be disabled by setting “add_metric_suffixes” to false.
  • Transition attributesprocessor and resourceprocessor feature gate coreinternal.attraction.hash.sha256 to stable.

Again, please refer to the release notes carefully before updating.

Operator v0.85.0 has been released. Enhancements include the addition of .NET Automatic Instrumentation support for Alpine-based images in the autoinstrumentation, and Go auto-instrumentation support has been upgraded to v0.3.0-alpha. Furthermore, the Operator now allows for the collector CRD to specify a list of configmaps to mount, and introduces a new method of reconciliation to reduce complexity and duplication. A bug has also been fixed where the operator ensures the upgrade mechanism runs upon changes in an instance, particularly useful for instances shifting from unmanaged to managed states when the operator is upgraded. Component updates include OpenTelemetry Collector, Contrib, and several languages-specific auto-instrumentations.

Important change: The operator now allows for introducing a reliable upgrade mechanism to handle instance changes.

Breaking Change: Go auto-instrumentation support has considerably upgraded from previous versions to v0.3.0-alpha, which may include major changes.

This release includes breaking changes from v0.84.0 as well:

  • Target allocator no longer has default memory and cpu limits, to match collector defaults.
  • ServiceMonitors are created when Prometheus exporters are used.
Java

Version 1.30 includes many updates to incubating APIs and SDKs. In the API incubator, an experimental synchronous gauge was added. The SDK Metric System has amplified its facilities with the addition of attributes advice API, AttributesProcessor toString, an attribute filter helper, and it increased the metric name’s maximum length from 63 to 255 characters. The Prometheus exporter has made changes concerning non-ucum units and their unit addition to metric names in TYPE and HELP comments.

In SDK Extensions, there’s support for file-based configurations added to the incubator. An update is made to handle blank value entries in the Autoconfigure ConfigProperties#getMap filter.

There is a crucial deprecation for developers to note. The io.opentelemetry:opentelemetry-semconv has been deprecated for removal; an alternate io.opentelemetry.semconv:opentelemetry-semconv:1.21.0-alpha is now introduced from a new repository.

Java Instrumentation brings significant changes including the addition of new Java agent instrumentation, enhancements, and bug fixes. Important changes include the splitting of experimental HTTP server metrics into a separate class, renaming of HttpClientResend and HttpRouteHolder to HttpClientResendCount and HttpServerRoute, and removal of a deprecated configuration.

New Java agent instrumentation has been added for hibernate reactive. Enhancements encompass support for AWS Secrets Manager JDBC URLs, improved support for semantic convention changes, addition of javaagent to instrumentation BOM, and more. Several bugs have also been fixed, such as issues with getDefinedPackage lookup for OpenJ9, serializing key with Lettuce instrumentation, and auto-instrumentation with JMX not working without a trigger.

Go

Version 1.19.0 is the first stable release of Metrics and the standard project stability guarantees now apply to the go.opentelemetry.io/otel/sdk/metric package.

Added features include a new “Roll the Dice” application example and the WithWriter and WithPrettyPrint options to customize io.Writer and display output in human-readable JSON format.

Notable changes comprise allowance of ‘/’ characters in metric instrument names and the change in the default output format of the exporter, which is now more compact.

Fixed issues include a recurring problem where the SDK attempted to create the Prometheus metric at each Collect, even if known that the scope was invalid. In terms of removals, the go.opentelemetry.io/otel/bridge/opencensus.NewMetricExporter has been replaced by NewMetricProducer.

Due to the plethora of content, detailed information is advised to be obtained by referring to the Full Changelog.

Please note that v1.18.0 included several deprecations and removals:

  • Jaeger exporters and examples have been removed, as Jaeger accepts native OTLP now.
  • Go compatibility before version 1.20 is no longer guaranteed.

JavaScript

Version 1.17.0 fixes an unintentional breaking change in previous releases.

There have been several important changes in the experimental packages, including deprecation of legacy configuration APIs.

.NET

Version 1.6.0 includes minor updates to metrics.

News and Upcoming Events

KubeCon North America is coming to Chicago soon, and the schedule has been announced! Check out the observability track for talks on OpenTelemetry, Prometheus, and more.

Observability Day returns as well, and it’s shaping up to be a great one! Check out the announced schedule at the link above.

We’re also excited to announce our first ever Contribfest! You’ll have the opportunity to work with maintainers of the Collector and JavaScript SIGs on issues and PRs, and learn more about how to contribute to OpenTelemetry.

Be sure to stay tuned to the blog this week for a full breakdown of all the events happening at KubeCon this November!