Vector v0.51.0 release notes

The Vector team is excited to announce version 0.51.0!

Please refer to the upgrade guide for breaking changes in this release.

Release highlights

  • Enhanced OpenTelemetry Protocol (OTLP) support with the introduction of the otlp codec, enabling bidirectional conversion between Vector events and OTLP format for seamless integration with OpenTelemetry collectors and instrumentation.
  • Improved Vector’s internal telemetry with new config_reload_rejected and config_reloaded counters, and fixed issues where utilization metrics reported negative values and buffer counters underflowed.
  • Enhanced memory enrichment tables with an expired output for exporting expired cache items, and made enrichment table outputs accessible via vector tap.

Breaking Changes

  • Environment variable interpolation in configuration files now rejects values containing newline characters. This prevents configuration injection attacks where environment variables could inject malicious multi-line configurations. If you need to inject multi-line configuration blocks, use a config pre-processing tool like envsubst instead or update your configuration files so that they don’t rely on block injections.

  • Vector’s internal topology debug! and trace! logs now use the component_id field name instead of component or key. If you are monitoring or filtering Vector’s internal logs based on these field names, update your queries to use component_id.

  • The utilization metric is now capped at 4 decimal digit precision.

  • Support for legacy fingerprints in the file source was dropped. Affected users may be ones that have been running Vector since version 0.14 or earlier. Consult the upgrade guide for more details.

  • Following this announcement, we will no longer publish x86_64-apple-darwin builds. this means we will not be validating if Vector builds and works correctly on that platform.

Upgrading Vector
When upgrading, we recommend stepping through minor versions as these can each contain breaking changes while Vector is pre-1.0. These breaking changes are noted in their respective upgrade guides.

Vector Changelog

11 new features

  • Added truncate options to file sink to truncate output files after some time.
    Thanks to esensar, Quad9DNS for contributing this change!
  • Disabled ANSI color for vector test when running non-interactively. Honor --color {auto|always|never} and VECTOR_COLOR; VRL diagnostics no longer include ANSI sequences when color is disabled.
    Thanks to VanjaRo for contributing this change!
  • Added proper support for compression of HEC indexer ack queries, using the sink’s configured compression setting.
    Thanks to sbalmos for contributing this change!
  • Added expired output to the memory enrichment table source, to export items as they expire in the cache.
    Thanks to esensar, Quad9DNS for contributing this change!
  • On receiving SIGHUP Vector now also reloads transform components with external VRL files.
    Thanks to nekorro for contributing this change!
  • The journald source now provides better error visibility by capturing and displaying stderr output from the underlying journalctl process as warning messages.
    Thanks to titaneric for contributing this change!
  • Improved Avro encoding error. Schema and value are now included in the message
    Thanks to titaneric for contributing this change!
  • Vector now emits config_reload_rejected and config_reloaded counters.
    Thanks to suikammd for contributing this change!
  • Added otlp codec for decoding OTLP format to Vector events, complementing the existing OTLP encoder.
    Thanks to pront for contributing this change!
  • Added otlp codec for encoding Vector events to OTLP format. The codec can be used with sinks that support encoding configuration.
    Thanks to pront for contributing this change!
  • Added path configuration option to prometheus_remote_write source to allow accepting metrics on custom URL paths instead of only the root path. This enables configuration of endpoints like /api/v1/write to match standard Prometheus remote write conventions.
    Thanks to elohmeier for contributing this change!

3 enhancements

  • Added a new split_metric_namespace option to the datadog_agent source to optionally disable the existing default metric name split behavior.
    Thanks to bruceg for contributing this change!
  • The aws_s3 source now uses exponential backoff when retrying failed SQS receive_message operations. Previously, the source used a fixed 500ms delay between retries.

    The new behavior starts at 500ms and doubles with each consecutive failure, capping at 30 seconds. This prevents excessive API calls during prolonged AWS SQS outages, invalid IAM permissions, or throttling scenarios, while still being responsive when the service recovers.


    Thanks to medzin, pront for contributing this change!
  • Added use_json_names option to protobuf encoding and decoding. When enabled, the codec uses JSON field names (camelCase) instead of protobuf field names (snake_case). This is useful when working with data that uses JSON naming conventions.
    Thanks to pront for contributing this change!

12 bug fixes

  • The configuration watcher now collects event paths even during the delay period. These were previously ignored and prevented components from reloading.
    Thanks to nekorro for contributing this change!
  • Enabled unused TLS settings to perform client authentication by SSL certificate in mqtt sink.
    Thanks to ValentinChernovNTQ for contributing this change!
  • Memory enrichment tables’ outputs are now visible to the vector tap command.
    Thanks to esensar, Quad9DNS for contributing this change!
  • Fixed a panic in the azure_blob sink by enabling a missing required crate feature.
    Thanks to thomasqueirozb for contributing this change!
  • Fixed an issue where the buffer counter underflowed. This was caused by the counter not being increased before a new event was observed.
    Thanks to sialais for contributing this change!
  • Fixed a crash on configuration reload when memory enrichment tables are configured to be used as a source.
    Thanks to esensar, Quad9DNS for contributing this change!
  • Fixed an issue in the docker_logs source where the docker_host option and DOCKER_HOST environment variable were ignored if they started with unix:// or npipe://. In those cases the default location for the Docker socket was used
    Thanks to titaneric for contributing this change!
  • Fixed an issue where utilization could report negative values. This could happen if messages from components were processed too late and were accounted for wrong utilization measurement period. These messages are now moved to the current utilization period, meaning there might be some inaccuracy in the resulting utilization metric, but it was never meant to be precise.
    Thanks to esensar, Quad9DNS for contributing this change!
  • Fixed a bug where utilization metric could be lost for changed components on configuration reload.
    Thanks to esensar, Quad9DNS for contributing this change!
  • Fixed duplicate reporting of received event count in the fluent source.
    Thanks to gwenaskell for contributing this change!
  • Fixed a opentelemetry source bug where HTTP payloads were not decompressed according to the request headers. This only applied when use_otlp_decoding (recently added) was set to true.
    Thanks to pront for contributing this change!
  • The prometheus_remote_write source now has a metadata_conflict_strategy option so you can determine how to handle conflicting metric metadata. By default, the source continues to reject requests with conflicting metadata (HTTP 400 error) to maintain backwards compatibility. Set metadata_conflict_strategy to ignore to align with Prometheus/Thanos behavior, which silently ignores metadata conflicts.
    Thanks to elohmeier for contributing this change!

5 chore

    • Dropped support for file source legacy checkpoints stored in the checkpoints folder (Vector < 0.11) which is located inside the data_dir.
    • Removed the legacy checkpoint checksum format (Vector < 0.15).
    • The intentionally hidden fingerprint.bytes option was also removed.

    How to upgrade

    You can stop reading if you

    • have started using the file source on or after version 0.15, or
    • have cleared your data_dir on or after version 0.15, or
    • don’t care about the file positions and don’t care about current state of your checkpoints, meaning you accept that files could be read from the beginning again after the upgrade.
      • Vector will re-read all files from the beginning if/when any checkpoints.json files nested inside data_dir fail to load due to legacy/corrupted data.

    You are only affected if your Vector version is:

    1. >= 0.11 and < 0.15, then your checkpoints are using the legacy checkpoint checksum CRC format.
    2. >= 0.11 and < 0.15, then the checksum key is present under checkpoints.fingerprint in your checkpoints.json (instead of first_lines_checksum).
    3. or ever was < 0.11 and you are using the legacy checkpoints folder and/or the unknown key is present under checkpoints.fingerprint in any checkpoints.json files nested inside data_dir.

    If you are affected by #1 or #2

    Run the file source with any version of Vector >= 0.15, but strictly before 0.51 and the checkpoints should be automatically updated. For example, if you’re on Vector 0.10 and want to upgrade, keep upgrading Vector until 0.14 and Vector will automatically convert your checkpoints. When upgrading, we recommend stepping through minor versions as these can each contain breaking changes while Vector is pre-1.0. These breaking changes are noted in their respective upgrade guides.

    Odds are the file source automatically converted checkpoints to the new format if you are using a recent version and you are not affected by this at all.

    If you are affected by #3

    You should manually delete the unknown checkpoint records from all checkpoints.json files nested inside data_dir and then follow the upgrade guide for #1 and #2. If you were using a recent version of Vector and unknown was present it wasn’t being used anyways.


    Thanks to thomasqueirozb for contributing this change!
  • Environment variable interpolation in configuration files now rejects values containing newline characters. This prevents configuration injection attacks where environment variables could inject malicious multi-line configurations. If you need to inject multi-line configuration blocks, use a config pre-processing tool like envsubst instead.
    Thanks to pront for contributing this change!
  • Vector’s internal topology debug! and trace! logs now use the component_id field name instead of component or key. If you are monitoring or filtering Vector’s internal logs based on these field names, update your queries to use component_id.
    Thanks to pront for contributing this change!
  • The utilization metric is now capped at 4 decimal digit precision.
    Thanks to pront for contributing this change!
  • Following this announcement, we will no longer publish x86_64-apple-darwin builds. This means we will not be validating if Vector builds and works correctly on that platform.
    Thanks to pront for contributing this change!

VRL Changelog

[0.28.0 (2025-11-03)]

Breaking Changes & Upgrade Guide

  • The return value of the find function has been changed to null instead of -1 if there is no match.

authors: titaneric (https://github.com/vectordotdev/vrl/pull/1514)

New Features

  • Introduced the basename function to get the last component of a path.

authors: titaneric (https://github.com/vectordotdev/vrl/pull/1531)

  • Introduced the dirname function to get the directory component of a path.

authors: titaneric (https://github.com/vectordotdev/vrl/pull/1532)

  • Introduced the split_path function to split a path into its components.

authors: titaneric (https://github.com/vectordotdev/vrl/pull/1533)

Enhancements

  • Added optional http_proxy and https_proxy parameters to http_request for setting the proxies used for a request. (https://github.com/vectordotdev/vrl/pull/1534)
  • Added support for encoding a VRL Integer into a protobuf double when using encode_proto

authors: thomasqueirozb (https://github.com/vectordotdev/vrl/pull/1545)

Fixes

[0.27.0 (2025-09-18)]

Download Version 0.51.0

macOS
tar.gz
Windows
zip
Windows (MSI)
msi