Agent v2.25.0

A new EDXSample OTTL converter, a seeker_strategy option on the Kubernetes source, first-line capture for containers that start while the agent is running, and dependency upgrades to address CVEs.

September 29, 2026

New Features

  • EDXSample: Added an EDXSample(percentage, key) OTTL converter that returns true for a share of items. percentage runs from 0 to 100, accepts fractions such as 0.1, and can be an expression over the item. With the optional key, the decision is a stable hash of that value rather than a random draw, so items sharing a trace ID, user ID, or pod name are kept or dropped together. The keyed form uses the same hash as the sample processor, so a route keyed on the same field agrees with a sample node at the same percentage. A percentage of 0 never samples and 100 always samples, in both forms.

    nodes:
    - name: keep_whole_traces
      type: route_ottl
      paths:
      - path: sampled
        condition: EDXSample(10, trace.id)   # Keep 10 percent of traces, whole.
        exit_if_matched: true
    
  • Kubernetes Source: Added the seeker_strategy field, which was already available on the File source. It sets where the agent starts reading a container log file when no cursor exists. Leave it empty to keep the discovery-time default described below.

    nodes:
      - name: my_kubernetes_input
        type: kubernetes_input
        seeker_strategy: beginning   # One of beginning or end. Default: empty, decided at discovery.
    

Improvements

  • Kubernetes Source: When seeker_strategy is not set, a container that starts while the agent is already running is now read from the beginning of its log file, so lines written before source discovery finds it are not missed. A container that was already running when the agent started is still read from the end, so its earlier log is not replayed. An explicitly configured seeker_strategy overrides both. This applies to Kubernetes sources, which are the only ones that report a container start time.

Bug Fixes

  • Kubernetes Trace Source: The eBPF tracer now releases a pod’s IP mapping when the pod reaches a terminal phase, and never clears a mapping another pod has since taken over. A pod that keeps status.podIP after the CNI has handed the address to a new pod no longer draws that pod’s connections.
  • Batch Fan-out: A batch payload is now cloned when a shared batch item crosses a copy link, so a processor on one branch of a fan-out does not change the items seen on another. This covers any processor that modifies items, including those in a multiprocessor stack. It applies to pipelines that enable batch_settings and fan out to more than one destination.
  • Custom Processor: OTTL statements are now evaluated against a copy of the item data, so other holders of a shared item never see OTTL native types. This applies whether or not batching is enabled.

Security

  • Dependency Upgrades: Upgraded google.golang.org/grpc, apache/thrift, the go.opentelemetry.io/otel modules, golang.org/x/crypto, go-logr/logr, and googleapis/gax-go to address known CVEs.