Agent v2.25.0
3 minute read
September 29, 2026
New Features
EDXSample: Added an
EDXSample(percentage, key)OTTL converter that returnstruefor a share of items.percentageruns from 0 to 100, accepts fractions such as0.1, and can be an expression over the item. With the optionalkey, 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 of0never samples and100always 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: trueKubernetes Source: Added the
seeker_strategyfield, 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_strategyis 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 configuredseeker_strategyoverrides 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.podIPafter 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_settingsand 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, thego.opentelemetry.io/otelmodules,golang.org/x/crypto,go-logr/logr, andgoogleapis/gax-goto address known CVEs.