Vector v0.40.0 release notes
The Vector team is pleased to announce version 0.40.0!
Be sure to check out the upgrade guide for breaking changes in this release.
This release contains a mix of enhancements and bug fixes. See the changelog below.
Vector Changelog
1 new features
- Add possibility to use NATS JetStream in NATS sink. Can be turned on/off via
jetstreamoption (default is false).
Thanks to whatcouldbepizza for contributing this change!
8 enhancements
VRL was updated to v0.17.0. This includes the following changes:
Breaking Changes & Upgrade Guide
parse_logfmtnow processes 3 escape sequences when parsing:,"and\. This means that for example,in the input will be replaced with an actual newline character in parsed keys or values. (https://github.com/vectordotdev/vrl/pull/777)
- Improves GcpAuthenticator token regeneration to avoid encountering 401 responses when a tick is missed.
Thanks to garethpelly for contributing this change! - Introduced support for decoding InfluxDB line protocol messages, allowing these messages to be deserialized into the Vector metric format.
Thanks to MichaHoffmann, sebinsunny for contributing this change! - The AWS S3 source can now be configured with the optional timeout settings:
sqs.read_timeout_seconds,sqs.connect_timeout_seconds, andsqs.operation_timeout_seconds.
Thanks to andjhop for contributing this change! - The
statsdsource now has a configuration option to disable key sanitization:sanitize. The default istrueto maintain backwards compatibility.
Thanks to to-m for contributing this change! - Allow the
datadog_agentsource to accept payloads that have been compressed withzstd. - The
demo_logssource now addshost(or the configuredlog_schema.host_key) with the value oflocalhostto emitted logs. - The
vector tapcommand now has an optionalduration_msflag that allows you to specify the duration of the tap. By default, the tap will run indefinitely, but if a duration is specified (in milliseconds) the tap will automatically stop after that duration has elapsed.
Thanks to ArunPiduguDD for contributing this change!
7 bug fixes
- Proxy configuration now supports URL-encoded values.
- Batching records for AWS Kinesis Data Streams and AWS Firehose became independent of the partition key, improving efficiency significantly.
Thanks to steven-aerts for contributing this change! - The kafka source does not deadlock or cause consumer group rebalancing during
vector validate.
Thanks to jches for contributing this change! - Loki sink now drops events with non-parsable timestamps.
Thanks to suikammd for contributing this change! - Fixes sink retry parameter validation to prevent panic at runtime.
Thanks to dhable for contributing this change! - Templates using strftime format specifiers now correctly use the semantic timestamp rather than
always looking for the
log_schematimestamp. This is required whenlog_namespacingis enabled. - The
set_secretandremove_secretVRL functions no longer complain about their return value not being consumed. These functions don’t return any value.
3 chore
Now the GELF codec with stream-based sources uses null byte (
\0) by default as messages delimiter instead of newline (\n) character. This better matches GELF server behavior.Configuration changes
In order to maintain the previous behavior, you must set the
framing.methodoption to thecharacter_delimitedmethod and theframing.character_delimited.delimiteroption to\nwhen using GELF codec with stream-based sources.Example configuration change for socket source
Previous
sources: my_source_id: type: "socket" address: "0.0.0.0:9000" mode: "tcp" decoding: codec: "gelf"Current
sources: my_source_id: type: "socket" address: "0.0.0.0:9000" mode: "tcp" decoding: codec: "gelf" framing: method: "character_delimited" character_delimited: delimiter: " "
Thanks to jorgehermo9 for contributing this change!Reduce transforms can now properly aggregate nested fields.
This is a breaking change because previously, merging object elements used the “discard” strategy. The new behavior is to use the default strategy based on the element type.
Example
Config
group_by = [ "id" ] merge_strategies.id = "discard" merge_strategies."a.b[0]" = "array"Event 1
{ "id": 777, "an_array": [ { "inner": 1 } ], "message": { "a": { "b": [1, 2], "num": 1 } } }Event 2
{ "id": 777, "an_array": [ { "inner": 2 } ], "message": { "a": { "b": [3, 4], "num": 2 } } }Reduced Event
Old behavior:
{ "id": 777, "an_array": [ { "inner": 2 } ], "message": { "a": { "b": [1, 2], "num": 1 } } }New behavior:
{ "id": 777, "an_array": [ { "inner": 1 } ], "message": { "a": { "b": [ [1, 2], [3,4] ], "num": 3 } } }- Vector no longer supports running on CentOS 7 since it is now end-of-life