OTel News

August 2026

August 2026

Curated by:

Welcome to the August 2026 edition of the OpenTelemetry News!

A companion piece from the Metrics SIG lays out how to size and monitor cardinality limits so overflow doesn't quietly break your dashboards. Datadog is heading to next month's Observability Summit Europe with several speaking slots alongside the broader OpenTelemetry community, and the young OpenTelemetry Zig SIG shares its first progress update since the existing Zig implementation moved into the OpenTelemetry organization earlier this year. On the Collector side, releases 0.158.0 and 0.159.0 introduce the queuebatch processor to eventually replace the legacy batch processor, ship the dns_check and sd_notify components, and continue refining the brand-new dynamic_sampling processor's configuration soon after it shipped. Specification v1.60.0 adds formal Entity support to the Resource SDK, and semantic conventions v1.44.0 reworks the browser Web Vitals event and renames a batch of Kubernetes memory metrics.

Highlights

A practical guide to metric cardinality limits

Cijo Thomas published Metric cardinality limits in OpenTelemetry: a practical guide, the operational companion to the metrics SDK's cardinality-limit documentation. The post helps with something everyone misses: when a metric stream overflows its limit, the total stays correct, but every attribute on the overflowing measurement, not just the high-cardinality one, gets folded into a single otel.metric.overflow=true data point. A low-cardinality attribute like success becomes unreliable for filtering the moment a different attribute on the same measurement overflows.

It walks through sizing a limit for your traffic pattern, checking whether you've already hit one with a PromQL query against otel_metric_overflow, and building continuous alerting so overflow is rare, visible, and meaningful rather than a silent source of undercounted dashboards and SLOs.

Observability Summit Europe

Next month, the OpenTelemetry community will meet at the Observability Summit EU with plenty of talks around OpenTelemetry. Datadog is sponsoring the event, and Datadog engineers are co-presenting several talks alongside speakers from the broader OpenTelemetry community:

If you're attending, stop by the Datadog booth to meet the team behind these talks and learn more about OpenTelemetry and Datadog.

OpenTelemetry Zig SIG update

The OpenTelemetry Zig SIG was created this year, with the existing Zig implementation moving into the OpenTelemetry organization in June. Since then, the team has been adapting the project to a monorepo while expanding the SDK with capabilities such as gRPC support, which is currently under review. That work required building missing pieces in the Zig ecosystem itself, including making libgrpc cross-compilable using Zig and creating a Zig wrapper around it. Contributors have also improved memory safety, logs-trace correlation, API ergonomics, and the performance of the logging pipeline.

The project is currently in alpha, so while it is ready for experimentation and testing, it has not yet been battle-tested in production and breaking changes should still be expected between releases.


New Collector releases

This news edition covers the OpenTelemetry Collector releases 0.158.0 and 0.159.0.

Breaking changes

  • processor/dynamic_sampling reworks its configuration: sampler fields move up a level (no more sampler.<type>.<field> nesting), key_fields is renamed to key_attributes, and the rarely-used initial_sampling_rate is dropped. Rule conditions are now full OTTL boolean expressions evaluated in the ottlspan context, with path expressions requiring a context prefix, instead of a bespoke parser; a new match field chooses between any_span and same_span semantics (#49311).
  • processor/drain replaces extract_parameters/params_attribute with masking_rules: masking_rules is an ordered list of {name, pattern} regex substitutions that mask high-cardinality values (like IPs) before they reach the Drain tree, stabilizing derived templates. To migrate, replace extract_parameters: true with emit_wildcards: true, and rename params_attribute to wildcards_attribute (#48914).
  • The kafkatopicsobserver extension is removed after being deprecated for three months, along with its kafka.topics endpoint type. Use the kafkareceiver with topic regex support instead (#48186).

Deprecations

  • Several processor/resource_detection cloud detectors (ec2, alibaba_ecs, nova, tencent_cvm, upcloud, vultr) deprecate their per-detector fail_on_missing_metadata option in favor of one top-level setting on the processor (#46579).
  • receiver/file_log deprecates the implicit default of ordering_criteria.top_n: 1 when sort_by is configured, since silently limiting collection to a single file caused severe log duplication with multiple actively-written files. Enable the filelog.requireExplicitTopN feature gate to require an explicit value. Independently, top_n: 0 now means "match all files" instead of behaving like top_n: 1 (#47444).

New components

  • processor/queuebatch: A new implementation intended to eventually replace the legacy batchprocessor, built on exporterhelper and reusing the same sending_queue configuration (#15047). You can read more about this in the Migration for batchprocessor and exporterhelper batching.
  • receiver/dns_check: Ships a complete scraping implementation with metrics and resource attributes, after landing as a skeleton in 0.158.0 (#49561).
  • extension/sd_notify: Integrates the Collector with the sd_notify(3) protocol (#49607).
  • extension/aws_iam_db_auth: Implements dbauth for AWS IAM database authentication, promoted to alpha stability in 0.159.0 (#49044, #50118).

Component naming convention

The snake_case rename wave continued across v0.158.0 and v0.159.0. Deprecated aliases are maintained so existing configurations keep working, but plan to update your component names to ensure compatibility with future releases.

Type Old name New name PR
Exporter azuremonitor azure_monitor #49402
Processor deltatocumulative delta_to_cumulative #49634
Processor deltatorate delta_to_rate #49807
Receiver sqlquery sql_query #50071

OTTL & processing improvements

  • pkg/ottl: pcommon.Value is now comparable using all comparison operators (==, !=, <, <=, >=, >) in OTTL expressions (#49170).
  • processor/transform adds a ParseELF function that parses W3C Extended Log Format blocks into structured maps, including directive metadata and IIS-style quoted values (#48352).
  • processor/span_pruning now preserves whole outlier subtrees instead of individual spans and detects outliers at every aggregation level, so a slow interior span keeps its entire subtree; optional OTTL conditions scope pruning to traces with at least one matching span (#49324, #49026).
  • processor/tail_sampling adds num_shards to run parallel event loops sharded by trace ID: under high throughput, a single event loop can become a bottleneck because trace ingestion starves sampling decision evaluation, and setting num_shards above 1 distributes traces across independent goroutines, each with its own storage and decision batcher (the default of 1 preserves the original single-loop behavior). To keep aggregate behavior consistent, num_traces, expected_new_traces_per_sec, decision_cache sizes, and per-second policy rate limits (rate_limiting, bytes_limiting, and composite max_total_spans_per_second) are divided evenly across shards, though burst_capacity is left undivided so single large traces stay admissible regardless of shard count; the sampling_traces_on_memory metric reports the total across all shards (#48699).

Metrics & Prometheus compatibility

  • exporter/prometheus_remote_write adds convert_explicit_histograms_to_nhcb to convert classic explicit-bucket histograms into Native Histograms with Custom Buckets on export, with keep_classic_histograms to emit both representations while migrating (#33661).
  • receiver/prometheus fixes a bug where enabling convert_classic_histograms_to_nhcb could drop classic histograms that lack explicit bucket boundaries instead of passing them through (#49893).
  • pkg/jaeger begins migrating from http.status_code to http.response.status_code behind two alpha feature gates. Both will graduate to enabled-by-default, after which the translator stops emitting the deprecated attribute, so update dashboards and alerts ahead of that (#45036).

Database receivers

  • receiver/oracledb adds real-time workload-rate and I/O-rate metrics, auto-discovers PDBs for per-PDB metrics on multitenant CDB deployments, and speeds up query-sample collection by splitting the SQL text/plan lookup into a narrower, separate query (#49749, #49748, #48643, #49874).
  • receiver/sqlserver adds opt-in Always On Availability Group replica metrics and host-level CPU/memory/disk metrics, and moves to a single tunable connection pool shared across all scrapers instead of opening one pool per query (#49633, #49862, #47219).
  • receiver/oracledb and receiver/sqlserver both upgrade their SQL obfuscation engine to go-sqllexer's ObfuscateAndNormalize. The obfuscated db.query.text is now more consistently normalized, which is a one-time change to the obfuscated output format for existing deployments (#50231, #50210).

Bug fixes

  • processor/redaction was applying blocked_values patterns in Go's nondeterministic map iteration order instead of the order listed in configuration. When two patterns could match overlapping parts of the same value, which parts actually got redacted changed from run to run, so some values may have been left unmasked on some runs and not others. Patterns are now applied in the order they're written (#49858).
  • exporter/load_balancing fixes a memory leak in the Kubernetes resolver, where churned-out pod hostnames were retained indefinitely when return_hostnames is enabled (#49757).
  • extension/text_encoding fixes logs being silently truncated when the input had more than 1,000 records (#49818).
  • processor/isolationforest fixes the online isolation forest never splitting its trees, so every record received a near-identical anomaly score and nothing was ever flagged; it now also honors the configured contamination_rate (#46988).
  • processor/k8s_attributes fixes a memory leak and incorrect deletion for custom association identifiers (labels, annotations) cycling through active→stale→active transitions (#48588).
  • receiver/azure_monitor fixes metric data loss and incorrect timestamps (#49532).
  • receiver/snowflake now closes sql.Rows in all Fetch* methods, fixing a per-scrape connection leak that could eventually exhaust the pool (#49707).

  • exporter/datadog:
    • Adds the AddUnits feature gate, which maps OTLP metric units expressed in the Unified Code for Units of Measure (UCUM) to their Datadog equivalents (#15280).
    • A datadog-agent dependency bump to v0.82.0 fixes log misrouting when a batch contains multiple ResourceLogs with different scopes, a goroutine hang on shutdown, and an unbounded histogram-to-sketch loop that could exhaust the exporter's memory on a very large finite bucket bound (#50069, #49322).
    • Maps the Rate metric intake type in legacy metric clients, fixing delta-sum datapoints tagged datadog.metric.as_type=rate that were previously dropped silently (#50119).
  • pkg/datadog:
    • Adds the EnableScopeConvention feature gate, which emits otel.scope.name/otel.scope.version on spans alongside the deprecated otel.library.* attributes for backward compatibility (#49001).
    • Fixes WithAPIConfig silently discarding a configured api_key/site in favor of DD_API_KEY/DD_SITE environment variables when both are present in the process environment (#49957).

OpenTelemetry specification v1.60.0

The v1.60.0 release adds formal Entity support to the Resource SDK and continues stabilizing the Prometheus compatibility spec.

  • A new Entity specification formalizes how entities are represented, and Entity support is added to the Resource SDK specification, giving implementers a normative reference for representing what infrastructure exists and how it changes over time (#5201).
  • OTLP exporter configuration gains max request/response size options (#5235).
  • The interaction between Prometheus content negotiation and OTLP translation strategy is clarified, and the Target section of the Prometheus Metrics Exporter spec is stabilized (#5134, #5221).

Semantic conventions v1.44.0

The v1.44.0 release reworks the browser Web Vitals event and renames several Kubernetes memory metrics.

  • Action required: The browser.web_vital event moves name, value, delta, and id out of the event body and into browser.web_vital.* attributes, alongside new attributes matching current instrumentation. Update any pipeline or dashboard that reads these fields from the event body (#3401).
  • k8s.node.memory.paging.faults, k8s.pod.memory.paging.faults, and container.memory.paging.faults are renamed to drop the memory segment (for example, k8s.pod.paging.faults), and {container,k8s.pod,k8s.node}.memory.usage change from a gauge to an UpDownCounter (#3805, #3889).
  • The process namespace is promoted to release candidate, and gaps found while migrating the hostmetrics receiver are filled in: process.disk.operations, process.memory.utilization, and process.signals_pending are added (#3937).
  • Messaging spans are now defined per operation type (create, send, receive, process, settle), refined for each messaging system (#3904).

Datadog news

Bill Meyer and Eddie Cai published Control trace volume with OpenTelemetry tail-based sampling.

The post walks through deploying Collectors in a gateway pattern so all of a trace's spans land on the same instance, then layering tail_sampling policies (errors, high latency, and other targeted conditions ahead of a probabilistic catch-all) to decide what to keep only after a trace completes. It computes Span Metrics before sampling runs, so RED metrics for service health stay accurate on 100% of traffic even as sampled traces are dropped, and in the guide's example configuration, exported trace volume drops by about 98%.

Get involved

Want to contribute to OpenTelemetry? Here are some ways to get started:

Resources


Did we miss something? If you have news to share or want to contribute to the next edition, please reach out to us via otel-news@datadoghq.com.