Vector v0.33.0 release notes
- The Debian package installer will overwrite existing
/etc/default/vectorand/etc/vector/vector.yamlfiles. This was fixed in v0.33.1. - The
clickhousesink health check will fail due to the accidentally inclusion of an extra/in the request URI. This was fixed in v0.34.0.
The Vector team is pleased to announce version 0.33.0!
Be sure to check out the upgrade guide for breaking changes in this release.
This release marks the switch of the default configuration language for Vector from TOML to YAML. We continue to support both (as well as JSON), but the documentation will prefer YAML in its configuration examples. We think this will lead to more legible configurations as well as more consistency with Vector’s Helm chart which requires YAML configuration. See the associated release highlight for more details on the motivation for this change.
In addition to the usual enhancements and bug fixes, this release includes also includes:
- A new AWS SNS sink
Vector Changelog
2 new features
The
execsource now allows customization of the environment variables exposed to the subprocess via two new options:clear_environmentto remove environment variables propagated from Vector processenvironmentto set custom environment variables for the subprocess
Thanks to hhromic for contributing this change!- A new
aws_snssink has been added to send events to AWS SNS.Thanks to wochinge for contributing this change!
15 enhancements
- Vector now has the ability to disable OpenSSL probing for remote certificates via
--openssl-no-probe(orVECTOR_OPENSSL_NO_PROBE).Thanks to hhromic for contributing this change! - Vector now parses more configuration fields that represent “event paths” (like the
kafkasourcekey_field) at config parse time rather than at runtime. This results in earlier surfacing of errors. - The
http_serversource can now have the response code it sends configured via the newresponse_codeconfiguration parameter.Thanks to kunalmohan for contributing this change! - The
routetransform can now have the_unmatchedroute disabled via thereroute_unmatchedparameter. This helps with suppressing the warning that is emitted if this output is not consumed by any other components.Thanks to hhromic for contributing this change! - The
websocketsink now accepts any data type that the configured codec accepts. For example, this means it supports logs, metrics, and traces when thenativeornative_jsoncodecs are in use. We now publish
armv7hlRPM packages. These are the same as thearmv7packages but are more accurately named per the RPM packaging guidelines.As part of this change we are deprecating the
armv7packages. This change should be transparent to users usingyumbut if you are mirroring or directly downloading the RPM files you will want to switch to the new naming scheme:vector-<version>-1.armv7hl.rpm.See the upgrade guide for more details.
- The
kubernetes_logssource now has anoldest_firstoption to configure the source to always consume the oldest file first. This is the same option that exists on thefilesource. It can enable better behavior by releasing file handles to rotated files before moving on to reading newer files. AWS components now support the AWS FIPS endpoints by specifying
use_fips_endpointin your shared AWS config file or by setting theAWS_USE_FIPS_ENDPOINTenvironment variable.Note this does not yet work when accessing the STS endpoints to fetch authentication credentials. This is being tracked by #18382.
The
csvcodec now allows additional configuration options when encoding:capacity: the capacity of the internal buffer in bytes (default 4098)delimiter: the delimiter to use (defaults to,)double_quote: when enabled (default) escapes double quotes by doubling them ("is encoded as""). If disabled, then uses the configuredescapecharacter to escape them instead.escape: The escape character to use when escaping quotes (defaults to\). Only applies whendouble_quoteis false.
Thanks to scMarkus for contributing this change!The deprecated legacy OpenSSL provider support now defaults to disabled. It can be enabled via
--openssl-legacy-provider=true.The
--openssl-legacy-providerflag will be removed in a future release but loading of this provider will still be available viaOPENSSL_CONFas described in the upgrade guide.- The
datadog_metricssink now transmits the origin of the metric to Datadog for display in metrics explorer. Metrics from thedatadog_agentsource have their origin passed through but otherwise an appropriate origin header is set for other metrics sources. - Vector’s protobuf definition for events was updated to have a new field to store metadata. Most users will not care about this, but if you are consuming Vector’s protobuf encoded events directly please see upgrade guide.
- The
kafkasink now builds requests concurrently which is expected to improve performance. - The
journaldsource now has anextra_argsconfiguration option to allow specifying additional arguments to pass through tojournalctlwhen fetching events. VRL was updated to v0.7.0 which brings the following:
Bug Fixes:
parse_nginx_logdoesn’t fail if the values of key-value pairs in error logs are missingencode_gzipandencode_zlibnow correctly check that the compression level is valid, preventing a panic- type definitions for arrays and objects with undefined values was improved
parse_aws_vpc_flow_log nowhandles account-id value as a string, avoiding loss of leading zeros and handling the case where value is unknown
Features:
parse_key_valuecan now parse values enclosed in single quote characters- added
prettyparameter forencode_jsonfunction to produce pretty-printed JSON string - added
community_idfunction for generation of Community IDs parse_aws_vpc_flow_logcan now handle VPC logs using version 5 fields- the deprecated
to_timestampfunction was removed (useparse_timestampandfrom_unix_timestampinstead) - the
truncatefunction now takes asuffixargument to control the suffix to append. This deprecates the existingellipsisfunction
18 bug fixes
- The type definition for the
portfield included on events emitted from thesocketsource is now correctly marked as an integer rather than a string. This removes unnecessary casting when thelog_namespacingfeature is enabled. - The
elasticsearchsink now correctly ignores thepipelineconfiguration when it is an empty string ("") to allow disabling this option. Previously it would result in failed Elasticsearch requests due to an empty pipeline name being passed. - Fix log event generation from the
kubernetes_logssource whenlog_namespacingis enabled. Previously it would emit empty log events. - When
log_namespacingis enabled, thededupetransform can now access metadata fields using the%some_fieldsyntax. - When
log_namespacingis enabled, thesampletransform now adds thesample_ratefield to metadata rather than to the event itself. - When
log_namespacingis enabled, theremaptransform now correctly handles converting an array result into log events by avoiding wrapping non-object array elements as{"message": "<the value>"}and instead using the value directly as the log event. - When
log_namespacingis enabled, thejsoncodec will now allow decoding of non-object values to create the log event rather than erroring if the incoming value is not an object. - The
gelfcodec now defaults to framing using null byte (\0) when encoding. Previously it defaulted to newline (\n) but the GELF server implementation expects the null byte.Thanks to MartinEmrich for contributing this change! The published Debian packages no longer contain a
conffilescontrol file as it was unnecessary (all configuration files are under/etcand are automatically flagged as conffiles bydh_installdeb).This existing
conffilesfile was contained an invalid trailing empty line which caused issues on some package managers such as Uyuni with SUSE Manager.- The
component_errors_totalmetric is no longer incremented for HTTP client errors that are automatically retried. - Vector avoids a panic that occurred when attempting to encode an empty sketch metric.
A few fix related fixes to the New Relic sink handling of metrics were made:
- Metric tags are sent to New Relic as attributes
- The metric type is sent rather than New Relic always treating the metrics as gauges
Thanks to asllop for contributing this change!Vector now defaults the worker thread concurrency to the detection provided by the Rust standard library, which attempts to take into account constraints applied by containerization, rather than just the number of detected CPUs. This should result in better resource utilization in container environments.
See the upgrade guide for more details about this.
- The published Vector artifacts are now compiled with an allocator page size of 64 kb rather than 4 kb. This allows Vector to run on systems with 64 kb pages (e.g. CentOS 7/8 when on AARCH64) as well as continuing to run on systems with the more typical page size of 4 kb.
- Warnings about maximum allocation groups are now suppressed when the allocation tracking feature is not in use.
- GCP components will now automatically retry unauthorized responses. The expectation is that users would rather intervene than drop data in this scenario.
The following sinks now avoid ballooning in memory consumption in the pretense of back-pressure by limiting request building concurrency:
amqpappsignalazure_monitor_logsclickhousegcp_stackdriverkafkahoneycombhttpnatspulsar
The
request.concurrencyhad a couple of tweaks to fix the documentation:- A value of
nonenow configures “no concurrency” (same as1). This was the documented behavior ofnone, but previously it would actually configure adaptive concurrency. - As
nonewas the default for most sinks, to maintain the expected default behavior of adaptive concurrency, the default forrequest.concurrencyfor these sinks is nowadaptiverather thannone.
See the upgrade guide for more details.
- A value of
2 chore
The default configuration language for Vector was updated from TOML to YAML. See the highlight for more details on the motivation for this change.
As part of this migration, Vector will prefer the
/etc/vector/vector.yamlas the default location in the future rather than/etc/vector/vector.toml.The
datadog_logsendpointconfiguration is now treated as the “base URL” where the expected path,/api/v2/logsis appended. This makes this option more consistent with theendpointoptions appearing on the other Datadog sinks.See the upgrade guide for details.