Vector v0.60.0 release notes
Vector Changelog
2 breaking changes
- Datadog metrics series v1 removedThe
datadog_metricssink no longer acceptsseries_api_version: v1, which was deprecated in 0.56.0. Configurations that selectv1now fail to load. - InfluxDB sinks require an explicit version
The
versionoption is now required for theinfluxdb_logsandinfluxdb_metricssinks. Omitting it was deprecated in 0.58.0, and the version is no longer inferred from the configured settings. Configurations withoutversionnow fail to load.Settings that belong to the other version are now rejected even when set to
null. For example,version: "2"withdatabase: nullfails withunknown field 'database'. Remove these settings from the configuration.Thanks to JinchengCao for contributing PR #26659!
1 security changes
- Bound the
sampletransform’s per-group state with the newmax_state_bytesoption, which defaults to 128 MiB and evicts the least recently used groups to prevent unbounded memory growth from high-cardinality or very largegroup_byvalues. Each group counts the size of its renderedgroup_byvalue plus a fixed per-group overhead.Thanks to thomasqueirozb for contributing PR #26362!
2 new features
- The VRL playground’s program editor now provides autocompletion for functions, enum values, event fields and variables, along with signature help while typing function arguments and hover documentation for functions.Thanks to MathieuSlt for contributing PR #26545!
- The
kubernetes_logssource now enriches events with the owning Namespace’s annotations, in addition to its labels. Addnamespace_annotation_fields.namespace_annotationsto customize or suppress the output field (default:.kubernetes.namespace_annotations).Thanks to srstrickland for contributing PR #25970!
6 enhancements
- The Avro codec now supports encoding and decoding Date and TimeMillis values.Thanks to omwbennett for contributing PR #26112!
- The
opentelemetrysource now supportsdecoding.codec: otlpanddecoding.signal_typesoptions. This is not a new feature but a replacement for the (now deprecated)use_otlp_decodingflag. Please see the dedicated migration notice. - Add
internal_metrics.include_group_tagto thesampletransform. When enabled,component_discarded_events_totalincludes agrouptag showing whichgroup_bygroup an event belonged to when it was discarded. This option is disabled by default because configurations with many group values can produce a large number of unique metric tags.Thanks to arun.pidugu for contributing PR #26404! - Share the default log schema definition across new events instead of allocating a separate copy for each event to improve log event ingestion performance.
- Add
internal_metrics.include_group_tagto thethrottletransform. When enabled,component_discarded_events_totalincludes agrouptag showing whichkey_fieldgroup exceeded the rate limit. This option is disabled by default because configurations with many group values increase metric cardinality.Thanks to arun.pidugu for contributing PR #26402! - Improve VRL performance when reading variable subpaths and event or metadata fields.Thanks to gwenaskell for contributing PR #26649!
10 bug fixes
- Fixed the
internal_logssource silently dropping events under high load. Events dropped when the underlying broadcast receiver lags now increment the standardcomponent_discarded_events_total{intentional="false"}metric so the loss is observable.Thanks to thomasqueirozb for contributing PR #25218! - Fixed a disk buffer bug that could cause Vector to read from the wrong data file after many file rotations. This occurred when a file ID calculation exceeded 65,535 and wrapped incorrectly, even if only a few buffer files existed on disk.
- The
kubernetes_logssource no longer drops Namespace and Node labels from the Vector log namespace metadata (%kubernetes_logs.namespace_labelsand%kubernetes_logs.node_labels) whennamespace_annotation_fields.namespace_labelsornode_annotation_fields.node_labelsis set to"". An empty path now only suppresses the legacy event field, matching howpod_annotation_fieldsbehaves.Thanks to srstrickland for contributing PR #25970! - Restored Kerberos (
sasl.mechanism: GSSAPI) support for thekafkasource and sink in the officialx86_64-unknown-linux-gnurelease artifacts (.tar.gz,.deb,.rpm). Since v0.56.0, these binaries failed withCyrus/libsasl2 is missing a GSSAPI module.Thanks to thomasqueirozb for contributing PR #26570! - Reuse cached upstream schema definitions when building transforms and validating sinks, reducing startup and reload overhead for topologies with shared inputs.
The Debian package now ships
/etc/vector/vector.yamlas a dpkg conffile (a stub with no active sources or sinks), so local modifications to it are preserved across package upgrades instead of being unknown to the package manager.Because the path was not previously a conffile, a file already present there is moved aside before the new conffile is unpacked and restored immediately afterwards, byte-for-byte. Upgrades therefore complete without the interactive “file created by you” conffile prompt that would otherwise break unattended
aptanddpkgruns.- Preserve native OTLP log event names in the
opentelemetrysource. Decoded logs exposeevent_name, while OTLP decoding preserveseventName; no duplicate log attribute is needed. - Fixes an issue where components selected for an explicit reload remained selected for later configuration reloads. This could unnecessarily restart unchanged components and reset their in-memory state.Thanks to arunpidugu for contributing PR #25911!
- The
prometheus_remote_writesource now interprets metrics ending with _total as counters.Thanks to AyseGokmen for contributing PR #26100! - Vector now reports the underlying error when a source or sink task fails at runtime; previously, it only said
the task completed with an error. That includes failures to bind a listening socket (for exampleAddress already in use (os error 48)), broker subscribe and consume errors, checkpoint file errors, sink runtime errors, and sources that stop because their downstream channel closed. Vector now includes the panic payload in its logs.Thanks to gwenaskell for contributing PR #26549!
2 chore
- The
datadog_metricssink no longer acceptsseries_api_version: v1, which was deprecated in 0.56.0. Configurations that selectv1now fail to load. The
versionoption is now required for theinfluxdb_logsandinfluxdb_metricssinks. Omitting it was deprecated in 0.58.0, and the version is no longer inferred from the configured settings. Configurations withoutversionnow fail to load.Settings that belong to the other version are now rejected even when set to
null. For example,version: "2"withdatabase: nullfails withunknown field 'database'. Remove these settings from the configuration.Thanks to JinchengCao for contributing PR #26659!
VRL Changelog
0.37.0 (2026-10-19)
Enhancements
- Avoid allocating lookup paths for each event and metadata field read.
Thanks to gwenaskell for contributing PR #1987!
- VRL variable subpath reads clone only the selected value, reducing the cost of reading fields from large objects and arrays.
Thanks to gwenaskell for contributing PR #1984!
Fixes
- The lexer no longer panics on a program with consecutive comment lines inside a block when a later comment contains a non-ASCII character, and no longer fails to lex such a program when a later comment contains a quote.
Thanks to DeviousCardi for contributing PR #1995!
- The
keyvaluefilter inparse_grokandparse_groksno longer panics on unquotedNaNvalues such asratio=NaN. These values are now kept as strings.
Deprecation Announcements
See the deprecations page for all active and historical deprecations.
Boolean shorthand for object-valued configuration options is deprecated. Use the object form instead so that each setting has one consistent representation and the options being configured are explicit.
Existing boolean values continue to work. Removal is not yet scheduled. We will give users at least one month to migrate before removing this shorthand.
This applies to healthcheck on sinks, global and sink acknowledgements, jetstream on the NATS sink,
and acknowledgements on the Splunk HEC source.
Ordinary boolean options, such as healthcheck.enabled, are unaffected.
Please also see the dedicated note for use_otlp_decoding.
Settings with an enabled field
For healthcheck, global and sink acknowledgements, NATS sink jetstream, and Splunk HEC source
acknowledgements, replace the boolean with an object containing the same value in enabled.
For example, within a sink configuration, replace:
healthcheck: false
acknowledgements: true
with:
healthcheck:
enabled: false
acknowledgements:
enabled: true
Other options in these objects retain their defaults. Use the same transformation for either true
or false.
use_otlp_decoding configuration optionThe opentelemetry source’s use_otlp_decoding option is deprecated.
Switch to decoding with codec: otlp to preserve the same behavior as use_otlp_decoding: true.
To preserve the OTLP representation of all signals, replace:
use_otlp_decoding: true
with:
decoding:
codec: otlp
To preserve OTLP only for selected signals, replace:
use_otlp_decoding:
logs: false
metrics: false
traces: true
with:
decoding:
codec: otlp
signal_types: ["traces"]
Existing boolean and object settings still work, but produce a deprecation warning.
When migrating:
- Leave out
signal_typesto keep all signals in OTLP format. Any types not included will remain in Vector’s native format. - If you currently use
use_otlp_decoding: false, remove it and leave outdecoding. Native conversion remains the default. - Use
codec: otlpand the signal nameslogs,metrics, andtraces. Other values are not supported. - Remove
use_otlp_decodingwhen addingdecoding. Setting both prevents Vector from starting.