Vector v0.35.0 release notes
The Vector team is pleased to announce version 0.35.0!
Be sure to check out the upgrade guide for breaking changes in this release.
In addition to the usual enhancements and bug fixes, this release also includes
- The ability to use VRL to specify inputs for unit tests
- A new
avrodecoder that can used to decode AVRO data in sources
This release is also the first release only published to the new apt.vector.dev and
yum.vector.dev OS package repositories and not to the deprecated repositories.timber.io.
A reminder that the repositories.timber.io package repositories will be decommissioned on
February 28th, 2024. Please see the release
highlight for details about this change and
instructions on how to migrate.
Vector Changelog
5 new features
- The
aws_cloudwatch_logssink now allows for the log group retention to be configured for any log groups created by Vector via the newretentionoptions.
Thanks to AndrewChubatiuk for contributing this change! - The
log_to_metricnow has the ability to convert logs that have the same structure as metrics directly into metrics rather than only deriving metrics from logs. This “mode” can be enabled by setting theall_metricsconfiguration option. Incoming metrics should match the structure described by the native codec.
Thanks to dygfloyd for contributing this change! - Vector configuration unit tests now have the
ability to use VRL to specify the input to each test case rather than needing to
specify the input as structure directly in the configuration file (via
log_fields). See unit tests for details.
Thanks to MichaHoffmann for contributing this change! VRL was updated to 0.9.1. This includes the following changes:
parse_regex_allpattern parameter can now be resolved from a variable- fixed
parse_jsondata corruption issue for numbers greater or equal toi64::MAX - support timestamp comparison using operators <, <=, >, >=
- Support for decoding AVRO data in sources was added via a new codec configurable by
setting
decoding.codectoavroon components that support it. Additional AVRO-specific codec options are configurable viadecoding.avro.
Thanks to Ion-manden for contributing this change!
11 enhancements
- A new component-level internal metric,
buffer_send_duration_max_seconds, was added to measure the time that a component spends waiting to push events to downstream components. This is a useful metric to use to identify back pressure in your topology. For the
throttletransform, make thekeytag added toevents_discarded_totalopt-in. This key can be of unbounded cardinality so should only be opted in if you are confident the cardinality is bounded to avoid runaway memory growth.See upgrade guide for details.
File-based components (
filesource,kubernetes_logssource,filesink) now include ainternal_metrics.include_file_tagconfig option that determines whether thefiletag is included on the component’s corresponding internal metrics. This config option defaults tofalse, as thistagis likely to be of high cardinality.See upgrade guide for details.
- The
file,aws_s3, andgcp_cloud_storagesink now use the configured timezone when templating out timestamps as part of creating object key names. It will use the globally configuredtimezoneoption or the newly addedtimezoneoption on each of these sinks. Previously it always used UTC when templating timestamps.
Thanks to kates for contributing this change! - Sinks with retries now add jitter to the retries to spread out retries. This
behavior can be disabled by setting
request.retry_jitter_modetonone. Sink request behavior was improved by:
- Capping the retry duration at 30 seconds by default for faster recovery when
downstream services recover, rather than the previous default of an hour. This can
be configured via
request.retry_max_duration_secs - Ensuring defaults are correctly applied as documented
- Adding a
request.max_concurrency_limitthat can be used to cap the maximum number of concurrent requests when adaptive request concurrency is in-use
- Capping the retry duration at 30 seconds by default for faster recovery when
downstream services recover, rather than the previous default of an hour. This can
be configured via
- HTTP server-based sources include a new
keepalive.max_connection_age_secsconfiguration option, which defaults to 5 minutes (300 seconds). When enabled, this closes incoming TCP connections that reach the maximum age by sending aConnection: closeheader in the response. While this parameter is crucial for managing the lifespan of persistent, incoming connections to Vector and for effective load balancing, it can be disabled by settingkeepalive.max_connection_age_secsto a large number like100000000. - The
splunk_hec_logs,splunk_hec_metrics, andhumiosinks now allow accessing event metadata when specifyinghost_keyandtimestamp_keywhen log namespacing is enabled.
Thanks to sbalmos for contributing this change! - The
http_serversource now allows a glob wildcard to be used when specifying the headers to capture to use as fields to received events. For example, settingheadersto["X-*"]will capture all headers starting withX-and add them as fields on the event (or in the metadata when log namespacing is enabled).
Thanks to sonnens for contributing this change! - The
datadog_logs,datadog_metrics, anddatadog_tracessinks now default the values of thedefault_api_keyandsiteconfiguration options to the values of environment variablesDD_API_KEYandDD_SITE, respectively. - The
jemallocmemory allocator, which Vector uses on Linux systems, is now also used by any native dependencies, likelibrdkafka, on Linux systems as well. This results in improved memory use by, for example, thekafkasource and sink.
Thanks to Ilmarii for contributing this change!
12 bug fixes
- The
kafkasource and sink now add component tags to published Kafka consumer and producer metrics. - The
heroku_logs,http_server,prometheus_remote_write, andsplunk_hecsources now correctly report decompressed bytes, rather than compressed bytes, for thecomponent_received_bytes_totalinternal metric. - Memory use by the
elasticsearchsink was improved through reduced buffering. - The
appsignal,datadog_metrics,greptimedb,gcp_stackdriver,honeycomb, andhttpsinks now correctly report uncompressed bytes, rather than compressed bytes, for thecomponent_sent_bytes_totalinternal metric. - The
kafkasource and sink now correctly propagate the component-leveltls.verify_certificatesetting. Previously this was always set totrue.
Thanks to zjj for contributing this change! vector tapnow performs better by not recompiling glob matches on each fetch interval.
Thanks to aholmberg for contributing this change!- The
tag_cardinality_limittransform has improved performance inprobabilisticmode via caching the count of entries in the bloom filter. - The
remaptransform no longer emits errors or incrementscomponent_discarded_events_totalwhenreroute_droppedis true and events error during processing as the events are not actually dropped, but instead routed to thedroppedoutput. - The
filesource now emits logs with the correctoffsetfield when aggregating multiline events.
Thanks to jches for contributing this change! - The
aws_kinesis_firehosesink now has apartition_key_fieldthat can be used to configure a log event field to use as the Kinesis partition key. By default, Kinesis will use a unique identifier.
Thanks to gromnsk for contributing this change! - The
remaptransform now filters out the source contents from error messages when the VRL program is read from afile. This removes the ability to use Vector to execute an attack to read files that the user wouldn’t otherwise have permissions to (e.g./etc/passwd). - Running Vector with
-vand-vvto outputdebugandtracelogs, respectively, or-qand-qqto outputwarnandfatallogs, respectively, now behaves the same as settingVECTOR_LOGtodebug,trace,warn, andfatal, respectively. Previously the CLI flags would only apply to some of Vector’s internal modules and dependencies unlikeVECTOR_LOGwhich applied to everything.
2 chore
The
requests_completed_total,request_duration_seconds, andrequests_received_totalinternal metrics were removed in the 0.35.0 release.See upgrade guide for details.
Vector now has the ability to turn all undefined variable warnings into errors by using the
--strict-env-varsflag (orVECTOR_STRICT_ENV_VARSenvironment variable) when running Vector. If any environment variables that are used in configurations are undefined, Vector will raise an error rather than a silent warning.In a future release, this will “strict environment variable” mode will be the default. This release deprecates the current behavior of only outputting a warning for undefined variables.
See upgrade guide for details.