The OpenTelemetry Collector Contrib contains everything in the opentelemetry-collector release, be sure to check the release notes there as well.
Unmaintained Components
These components are marked as Unmaintained and will eventually be removed from our community distributions. If you depend on these components we need your help to support them.
- exporter/carbon
- receiver/bigip
- receiver/carbon
End User Changelog
🛑 Breaking changes 🛑
-
all: fix pprofile DurationNano to be a TypeUint64 (#44397) -
cmd/otelcontribcol: Removing unmaintained componentexporter/carbon(#38913) -
connector/spanmetrics: Add a feature gate to use the latest semantic conventions for the status code attribute on generated metrics. | This feature gate will replace thestatus.codeattribute on the generated RED metrics withotel.status_code. | It will also replace the valuesSTATUS_CODE_ERRORandSTATUS_CODE_OKwithERRORandOKto align with the latest conventions. (#42103)
This change is made to align with the latest semantic conventions. | The feature gate is disabled by default, but can be enabled with--feature-gates spanmetrics.statusCodeConvention.useOtelPrefix| or explicitly disabled with--feature-gates -spanmetrics.statusCodeConvention.useOtelPrefix. -
exporter/clickhouse: Add EventName column to logs table (#42584)
This column is optional for existing deployments. See project README for notes on how to upgrade your logs table. -
exporter/clickhouse: Add columns for tracking JSON paths in logs + traces (#43109)
The JSON columns now include a helper column for keeping track of what keys are inside of the JSON object.
This change also introduces schema detection logic to reduce breaking changes whenever a column is added.
Existing users can enable these features by manually adding all the new columns to their table. -
exporter/kafka:exporter.kafkaexporter.UseFranzGofeature gate moved to Stable and is now always enabled (#44565)
The franz-go client is now the default and only Kafka client library for the Kafka exporter.
The feature gateexporter.kafkaexporter.UseFranzGohas been promoted to Stable status and cannot be disabled.
Users can no longer opt out of using the franz-go client in favor of the legacy Sarama client.
The Sarama client and the feature gate will be removed completely after v0.143.0. -
extension/docker_observer: Upgrading Docker API version default from 1.24 to 1.44 (#44279) -
pkg/ottl: Type of field profile.duration changes from time.Time to int64. (#44397) -
receiver/azureeventhub: Promote Feature Gatereceiver.azureeventhubreceiver.UseAzeventhubsto Beta (#44335) -
receiver/k8slog: Update k8slogreceiver code-owners status and mark as unmaintained (#44078) -
receiver/kafka: Remove deprecated topic and encoding (#44568) -
receiver/kafka:receiver.kafkareceiver.UseFranzGofeature gate moved to Stable and is now always enabled (#44564)
The franz-go client is now the default and only Kafka client library for the Kafka receiver.
The feature gatereceiver.kafkareceiver.UseFranzGohas been promoted to Stable status and cannot be disabled.
Users can no longer opt out of using the franz-go client in favor of the legacy Sarama client.
The Sarama code and the feature gate will be removed completely after v0.143.0.
🚩 Deprecations 🚩
receiver/prometheus: Add feature gate for extra scrape metrics in Prometheus receiver (#44181)
deprecation of extra scrape metrics in Prometheus receiver will be removed eventually.
🚀 New components 🚀
connector/metricsaslogs: Add connector to convert metrics to logs (#40938)extension/azure_encoding: [extension/azure_encoding] Introduce new component (#41725)
This change includes only overall structure, readme and configuration for a new componentreceiver/awslambda: Implementation of the AWS Lambda Receiver. (#43504)receiver/macosunifiedlogging: Add a new receiver for macOS Unified Logging. (#44089)receiver/macosunifiedlogging: Implementation of the macOS Unified Logging Receiver. (#44089)
💡 Enhancements 💡
-
connector/count: Support all attribute types in the count connector (#43768) -
connector/routing: Avoid extra copy of all data during routing (#44387) -
exporter/awss3: Support compression with ZSTD (#44542) -
exporter/azuremonitor: Add additional mapping of standard OTel properties to builtin Application Insights properties (#40598) -
exporter/cassandra:cassandraexporter: Upgrade cassandra library version (#43691)
Upgrade cassandra library version. -
exporter/elasticsearch: Updates the ecs mode span encode to include thespan.kindattribute (#44139) -
exporter/elasticsearch: add missing fields to struct so that they are populated in the respective elasticsearch index (#44234) -
exporter/file: Add create_directory and directory_permissions options; exporter can automatically create parent directories (also honored by group_by) with configurable permissions. (#44280)- New config:
create_directory(bool) anddirectory_permissions(octal string, e.g. "0755"). - When enabled, the exporter creates the parent directory of
pathon start. group_byuses the configured permissions when creating per-attribute directories.
- New config:
-
exporter/googlecloudpubsub: Update to cloud.google.com/go/pubsub/v2. (#44465) -
exporter/googlecloudpubsub: Add encoding extension support (#42270, #41834)
Add encoding extension support for the payload on Pub/Sub. As having custom extensions means the Pub/Sub attributes
cannot be auto discovered additional functionality has been added to set the message attributes. -
exporter/prometheus: Add without_scope_info to omit otel scope info from prometheus exporter metrics (#43613) -
exporter/prometheus: Add support to exponential histograms (#33703) -
exporter/signalfx: Makes sending tags from SignalFx Exporter configurable (#43799)
New optional configuration flagdrop_tagshas been added to SignalFx Exporter to allow users to disable tag metadata sending.
This feature has been introduced due to a common issue among Splunk Observability customers when they're receiving more tags
than allowed limit. -
extension/awslogs_encoding: Add more fields to AWS NLB logs at ELB extension (#43757) -
extension/googlecloudlogentry_encoding: Add support for Proxy Network Load Balancer logs (#44099)
Add support for Proxy Network Load Balancer logs to the Google Cloud log entry encoding extension.
This includes adding support for the newgcp.load_balancing.proxy_nlbattributes.
See the README for more details. -
extension/headers_setter: Add support for chaining with other auth extensions viaadditional_authconfiguration parameter. This allows combining multiple authentication methods, such as OAuth2 for bearer token authentication and custom headers for additional metadata. (#43797)
Theadditional_authparameter enables theheaders_setterextension to work in conjunction
with other authentication extensions likeoauth2client. The additional auth extension is called
first to apply its authentication, then headers_setter adds its configured headers on top. -
extension/observer: Add container name, container ID, and container image to port endpoint (#41309) -
pkg/ottl: AddParseSeverityfunction to define mappings for log severity levels. (#35778) -
pkg/ottl: IntroduceCommunityIDfunction to generate network hash (20-byte SHA1 digest) flow from the given source and destination {IP, port}, optionally protocol and seed values. (#34062) -
pkg/ottl: Expand usage of literal into typed getters and avoid unnecessary work (#44201) -
pkg/ottl: SliceToMap: add support to convert slices with non-map elements to maps (#43099) -
processor/cumulativetodelta: Add support for exponential histograms (#44106) -
processor/resourcedetection: UseosProfile.computerNamefor settinghost.namein Azure resource detection processor (#43959) -
processor/resourcedetectionprocessor/oraclecloud: Oracle Cloud (OCI) resource detection processor now differentiates between running off-platform (expected not to work), and encountering an error when running on-platform (expected to work) (#42794)- Collectors not running on Oracle Cloud return an empty resource and no error, since we don't expect this case to work.
- If the Oracle Cloud platform is detected but metadata fetch fails, the error is now logged and signaled to the processor, since we do expect this case to work.
-
processor/tail_sampling: Add bytes_limiting policy type, sample based on the rate of bytes per second using a token bucket algorithm. (#42509) -
processor/tail_sampling: Adaptive expected_new_traces_per_sec to improve performance lower bound (#43561) -
receiver/googlecloudpubsub: Update to cloud.google.com/go/pubsub/v2. (#44466) -
receiver/googlecloudpubsub: Adjusts the subscription regex to accommodate new project naming used for Google Trusted Partner Clouds. (#43988) -
receiver/googlecloudpubsubpush: Add telemetry metrics to the component. (#44422) -
receiver/googlecloudpubsubpush: Add implementation to googlecloudpubsubpush receiver. (#44101) -
receiver/k8s_events: Allow more event types like Error and Critical which are typically used by applications when creating events. (#43401)
k8seventsreceiver allows event types Error and Critical in addition to the current Normal and Warning event types. -
receiver/kafka: Add support for exclude topics when consuming topics with a regex pattern (#43782) -
receiver/prometheus: Support JWT Profile for Authorization Grant (RFC 7523 3.1) (#44381) -
receiver/redis: Add support for redis.mode and redis.sentinel.* metrics (#42365) -
receiver/systemd: Promote systemd receiver to alpha (#33532) -
receiver/systemd: Scrape unit CPU time (#44646)
🧰 Bug fixes 🧰
-
cmd/opampsupervisor: Fix supervisor passthrough logs overflow by using bufio.Reader instead of bufio.Scanner (#44127) -
cmd/opampsupervisor: Fix data race inremoteConfigfield by using atomic pointer for thread-safe concurrent access (#44173) -
connector/routing: Fix routing to default route when error occurs (#44386)
Before we used to send everything (even records match without error) to the default pipeline, |
after this change only entries that return error will be "ignored" and if no other rule in the |
table picks them will be sent to the default rule. -
exporter/clickhouse: Fix TLS configuration being ignored when only ca_file is provided and no cert/key files are set. (#43911)
This change ensures server-side TLS validation works correctly even without client certificates. -
exporter/elasticsearch: Fix CloudID parsing to correctly handle Elastic Cloud IDs when sent with multiple dollar sign separators (#44306)
The CloudID decoder was incorrectly usingstrings.Cut()which only splits on the first delimiter,
causing malformed URLs when the decoded CloudID contained multiple$separators. Changed to use
strings.Split()to match the reference implementation from go-elasticsearch library. -
extension/awslogs_encoding: address the SIGSEGV occurring when processing control_message messages. (#44231) -
extension/awslogs_encoding: Fix ALB logrequest_lineparsing for valid formats and avoid errors (#44233) -
pkg/ottl: Fixed OTTL grammar to treat the string literal "nil" as ordinary text instead of a nil value. (#44374) -
pkg/ottl: Return errors when OTTL context setters receive values of the wrong type (#40198)
Introducesctxutil.ExpectTypeand updates log, metric, and scope setters to surface type assertion failures. -
pkg/ottl: Fix TrimPrefix/TrimSuffix function name. (#44630)
This change also adds a featuregate "ottl.PanicDuplicateName" to control the behavior of panicing when duplicate
names are registered for the same function. -
processor/k8sattributes:k8sattributesprocessornow respects semantic convention resolution order forservice.namespace(#43919)
Previously, whenservice.namespacewas included in the extract metadata configuration, the processor
would incorrectly allowk8s.namespace.nameto override explicitly configured service namespace values
from OpenTelemetry annotations (e.g.,resource.opentelemetry.io/service.namespace). Now the processor
correctly follows the semantic convention resolution order, where annotation values take precedence over
inferred Kubernetes namespace names. -
processor/k8sattributes: Fix incorrect pod metadata assignment whenhost.namecontains a non-IP hostname (#43938)
The processor now correctly validates thathost.namecontains an IP address before using it for pod association.
Previously, textual hostnames were incorrectly used for pod lookups, causing spans and metrics from one workload
to receive metadata from unrelated pods that shared the same hostname. -
receiver/awsxray: Fix incorrect span kind when translating X-Ray segment to trace span with parent ID (#44404) -
receiver/azuremonitor: Collect only supported aggregations for each metric (501 not implemented issue) (#43648)
Some metrics were not collected because we requested all available aggregation types. This led to 501 errors, as the Azure API returned responses indicating that certain aggregations were not implemented.
We now use the supported aggregations field from each metric definition to filter and request only the aggregations that are actually supported.
The user can expect less 501 errors in the logs and more metrics in the results. -
receiver/datadog: Utilizes thread safe LRU packages (#42644) -
receiver/github: Adds corrections to span times when GitHub sends incorrect start and end times. (#43180) -
receiver/libhoney: Allow single events and uncompressed requests (#44026, #44010)
The receiver required events to be wrapped in an array before. The single-event format
was allowed by Honeycomb's API so we have added it here.
This fix also allows uncompressed requests again -
receiver/sqlquery: Fix a bug in the sqlqueryreceiver where an error is returned if the query returned a null value. This is now logged as a warning and logs with null values are ignored. (#43984) -
receiver/systemd: This allows systemd receiver to be used in collector config (#44420)
API Changelog
🛑 Breaking changes 🛑
all: fix pprofile DurationNano to be a TypeUint64 (#44397)processor/tail_sampling: Remove only internally relevant fields from samplingpolicy.TraceData. (#44435)processor/tail_sampling: Simplify the locking used by the tail sampling (#41656, #43671)
There are two small breaking changes as part of this work:- Pending traces are now passed through the decision logic during shutdown by default. If this is not desired it can be turned off using
drop_pending_traces_on_shutdown. - The mutex in
samplingpolicy.TraceDatahas been removed andsamplingpolicy.SpanCountis now anint64instead of*atomic.Int64. Custom extensions using these fields will need to be updated.
- Pending traces are now passed through the decision logic during shutdown by default. If this is not desired it can be turned off using
🚩 Deprecations 🚩
pkg/translator/opencensus: Deprecate the package (#44641)
🧰 Bug fixes 🧰
pkg/ottl: Return errors when OTTL context setters receive values of the wrong type (#40198)
Introducesctxutil.ExpectTypeand updates log, metric, and scope setters to surface type assertion failures.
We are thrilled to welcome our first-time contributors to this project. Thank you for your contributions @thewillyhuman, @fr0stylo, @naptalie, @ovaladares, @AllexVeldman, @andrewvc, @JorTurFer, @muff1nman, @gaddas3, @murphpdx, @mmarczell-graphisoft, @kyo-ke, @mhite-splunk, @kaiyan-sheng, @Machyne, @kushalShukla-web, @harshit-jindal02, @Mystik738 ! 🎉