Vector v0.31.0 release notes
The Vector team is pleased to announce version 0.31.0!
Be sure to check out the upgrade guide for breaking changes in this release.
In addition to the usual smaller enhancements and bug fixes, this release includes an opt-in beta of a new log event data model that we think will make it easier to process logs by moving event metadata out of the log event itself. We are looking for feedback on this new feature before beginning towards making it the default and eventually removing the old log event data model.
By way of example, an example event from the datadog_agent source currently looks like:
{
"ddsource": "vector",
"ddtags": "env:prod",
"hostname": "alpha",
"foo": "foo field",
"service": "cernan",
"source_type": "datadog_agent",
"bar": "bar field",
"status": "warning",
"timestamp": "1970-02-14T20:44:57.570Z"
}
Will now look like:
{
"foo": "foo field",
"bar": "bar field"
}
(just the event itself)
with additional buckets for source added metadata:
{
"ddsource": "vector",
"ddtags": "env:prod",
"hostname": "alpha",
"service": "cernan",
"status": "warning",
"timestamp": "1970-02-14T20:44:57.570Z"
}
accessible via %<datadog_agent>.<field>, and Vector added metadata:
{
"source_type": "datadog_agent",
"ingest_timestamp": "1970-02-14T20:44:58.236Z"
}
accessible via %vector.<field>.
We think this new organization will be easier to reason about for users as well as avoid key conflicts between event fields and metadata.
You can opt into this feature by setting schema.log_namespace as a global setting or the
log_namespace option now available on each source itself. See the blog
post for an expanded explanation and details. Let us know what you think on this issue.
Vector Changelog
12 enhancements
- The
aws_s3source now support bucket notifications in SQS that originated as SNS messages. It still does not support receiving SNS messages directly.Thanks to sbalmos for contributing this change! - A
from_unix_timestampfunction was added to VRL to decode timestamp values from unix timestamps. This deprecates theto_timestampfunction, which will be removed in a future release. - The
parse_nginx_logfunction now supportsingress_upstreaminfoas a format. - The
format_timestampfunction now supports an optionaltimezoneargument to control the timezone of the encoded timestamp. - Vector’s graceful shutdown time limit is now configurable (via
--graceful-shutdown-limit-secs) and able to be disabled (via--no-graceful-shutdown-limit). See the CLI docs for more. - Support for
zstdcompression was added to sinks support compression.Thanks to akoshchiy for contributing this change! - The
prometheus_remote_writesink now supportszstdandgzipcompression in addition tosnappy(the default).Thanks to zamazan4ik for contributing this change! - The
journaldsource now supports ajournal_namespaceoption to restrict the namespace of the units that the source consumes logs from. - The
gelf,native_json,syslog, andjsondecoders (configurable asdecoding.codecon sources) now have corresponding options for lossy UTF-8 decoding viadecoding.<codec name>.lossy = true|false. This can be used to accept invalid UTF-8 where invalid characters are replaced before decoded. - The
aws_kinesis_firehoseandaws_kinesis_streamssinks are now able to retry requests with partial failures by settingrequest_retry_partialto true. The default isfalseto avoid writing duplicate data if proper event idempotency is not in place.Thanks to dengmingtong for contributing this change! - The
component_sent_event_bytes_totalandcomponent_sent_event_totalmetrics can now optionally have aserviceandsourcetag added to them, driven from event data, from the addedtelemetryglobal config options. This can be used to break down processing volume by service and source. - The
internal_metricsandinternal_logssources now shutdown last in order to capture as much telemetry as possible during Vector shutdown.
13 bug fixes
- The
fluentsource now correctly sends back message acknowledgements in msgpack rather than JSON. Previously fluentbit would fail to process them.Thanks to ChezBunch for contributing this change! - VRL now supports the
\0null byte escape sequence in strings. - The
statsdsink now correctly encodes all counters as incremental, per the spec. - A disk buffer deadlock that occurred on start-up after certain crash conditions was fixed.
- The
http_clientno longer corrupts binary data by always trying to interpret as UTF-8 bytes. Instead options were added to encoders for lossy UTF-8 decoding (see above entry). - The
Proxy-Authorizationheader is now added to HTTP requests from components that support HTTP proxies when authentication is used.Thanks to syedriko for contributing this change! - Vector now exits non-zero if the graceful shutdown time limit expires before Vector finishes shutting down.
The following components now log template render errors at the warning level rather than error and does not increment
component_errors_total. This fixes a regression in v0.30.0 for thelokisink.lokisinkpapertrailsinksplunk_hec_logssinksplunk_hec_metricssinkthrottletransformlog_to_metrictransform
- The
datadog_metricssink now incrementally encodes sketches. This avoids issues users have seen with sketch payloads exceeding the limits and being dropped. - The
datadog_agentreporting of events and bytes received was fixed so it no longer double counted incoming events. log_schemaglobal configuration fields can now appear in a different file than defined sources.Thanks to Hexta for contributing this change!- Vector now supports running greater than 512 sources. Previously it would lock up if more than 512
filesources were defined.Thanks to honganan for contributing this change! - Internal metrics for the Adaptive Concurrency Request module are now correctly tagged with component metadata like other sink metrics (
component_kind,component_id,component_type).
2 chore
Several deprecated internal metrics were removed:
events_in_totalevents_out_totalprocessed_bytes_totalprocessed_events_totalprocessing_errors_totalevents_failed_totalevents_discarded_total
See the upgrade guide for more details.
- The
component_received_event_bytes_totalandcomponent_sent_event_bytes_totalinternal metrics have been updated to use a new measure, “estimated JSON size”, that is an estimate of the size of the event were it encoded as JSON rather than the “in-memory size” of the event, which is an implementation detail. See the upgrade guide for more details.