Vector v0.24.0 release notes
- The new
host_metricsmetrics for physical and logical CPU counts were incorrectly implemented as new modes for thecpu_seconds_totalwhen they were meant to be new gauges. Fixed in 0.24.1. vector topand some sinks likefileincorrectly report metrics from theinternal_metricssource as they show the incremental metrics rather than absolute. Fixed in 0.24.1.- The
expire_metrics_secsoption added in this release was not correctly applied. Fixed in 0.24.2. - Supplying an empty string (
"") for options that take a field name started panicking in 0.24.0 rather than disabling the option as it previously did. Fixed in 0.24.2. - This release was intended to add support for sending rate metrics to the
datadog_metricssink, but there was a regression in it prior to release. Fixed in 0.24.2. - VRL code using closures sometimes returned an incorrect type error (“block returns invalid value type”). Fixed in 0.24.2.
The Vector team is pleased to announce version 0.24.0!
Be sure to check out the upgrade guide for breaking changes in this release.
In addition to the new features, enhancements, and fixes listed below, this release adds:
- A new
axiomsink for sending events to Axiom - A new
gcp_chronicle_unstructuredsink for sending unstructured log events to GCP Chronicle - A new
file_descriptorsource to consume input from file descriptors - A new
opentelemetrysource to receive input from OpenTelemetry collectors and SDKs. Only logs are supported in this release, but support for metrics and traces are in-flight. Anopentelemetrysink will follow. - Support for expiring high cardinality internal metrics through the global
expire_metrics(will be replaced byexpire_metrics_secsin 0.24.1). This can alleviate issues with Vector using increased memory over time. For now it is opt-in, but we may make this the default in the future.
Note that this release has a backwards incompatible data model change that users of the
vector sink and disk buffers should be aware of while upgrading. See the note in the
upgrade guide for more
details.
Vector Changelog
6 new features
- A new
axiomsink was added for sending data to Axiom.
Thanks to bahlo for contributing this change! - A new
gelfcodec was added for decoding/encoding GELF data in Vector’s sources and sinks. It can be used viaencoding.codecon sinks anddecoding.codecon sources, for those that support codecs. A new enrichment table type was added,
geoip. This can be used with VRL’s enrichment table functions to enrich events using a GeoIP database.Additionally the
geoipenrichment table has support forConnection-Typedatabases.This takes the place of the
geoip, which has been deprecated.
Thanks to ktff, w4 for contributing this change!A new
opentelemetrysource was added to ingest logs from the OpenTelemetry collector and OpenTelemetry SDKs.We will be following with support for ingesting metrics and traces.
Thanks to caibirdme for contributing this change!- A new
apexsink was added to send logs to Apex. This sink was removed in v0.28 as the Apex service moved to EOL.
Thanks to mcasper for contributing this change! - A new
file_descriptorsource was added to read events from file descriptors.
Thanks to mcasper for contributing this change!
16 enhancements
The VRL compiler now rejects assignments to fields on values known not to be objects or arrays. For example, this now fails:
foo = 1 foo.bar = 2Where previously it would overwrite the value of
1with{ "bar": 2 }. This was done to alleviate accidental assignments. You can still assign like:foo = 1 foo = {} foo.bar = 2- The
prometheus_exportersink now has asuppress_timestampoption to avoid adding the timestamp to exposed metrics.
Thanks to shenxn for contributing this change! - The
prometheus_scrapesource now uses unsigned 64-bit integers for histogram buckets, allowing it to avoid errors when scraping endpoints that have buckets with very counts that didn’t fit in an unsigned 32-bit integer. A
filterfunction was added to VRL to allow easy removal of keys from objects or elements from arrays. It can be used like:.kubernetes.pod_annotations = filter(.kubernetes.pod_annotations) { |key, _value| !starts_with(key, "checksum") }- VRL’s
flattenfunction now takes an optional parameter,separator, to configure the separator to use when flattening keys. This defaults to., preserving the current behavior.
Thanks to trennepohl for contributing this change! - The
sampletransform can now sample trace events. - A new
gcp_chronicle_unstructuredsink was added to send log events to GCP Chronicle as unstructured events. We expect to support UDM events in the future. A number of VRL type definition bugs have been resolved to allow VRL to more precisely know the types of values and fields in more places. In general, this means less need for type coercion functions like
string().See the release highlight for more details.
- The
host_metricssource now emitsmode=iowaitforhost_cpu_seconds_total.
Thanks to charmitro for contributing this change! End-to-end acknowledgement support has been added to the following sinks:
papertrailsocketpulsarprometheus_exporterprometheus_remote_write
- AWS components now allow specifying a region to use when assuming a role
via
auth.region. By default, this will use the same region that the component is configured to use viaregion.
Thanks to akutta for contributing this change! - Two new functions were added to the VRL standard library to ease detecting whether
an IP address is IPv4 or IPv6:
is_ipv4andis_ipv6. - A new internal metric,
source_lag_time_seconds, was added for sources that is a histogram of the time difference of when Vector ingests an event and the timestamp of the event itself (if it exists). The
internal_metricssource now emits aninternal_metrics_cardinalitygauge indicating the cardinality of the internal metric store.Previously we emitted
internal_metrics_cardinality_totalbut this metric is a counter and so cannot account for metrics being dropped from the internal metric store.internal_metrics_cardinality_totalhas been deprecated and will be removed in a future release.- The
websocketsink now allows configuration of the same authentication settings thehttpsink does via the newauthconfiguration option.
Thanks to wez470 for contributing this change! - Vector’s internal metrics store, which is exposed via the
internal_metricssource, now allows for expiration of metrics via a new configurable globalexpire_metricsconfiguration option. When set, the store will drop metrics that haven’t been seen in the configured duration. This can be used to expire metrics from thekubernetes_logssource, and others, which tag their internal metrics with high cardinality, but ephemeral, tags likefile.
12 bug fixes
- Vector no longer panics when reloading a config where a component is deleted
and then re-added.
Thanks to zhongzc for contributing this change! - The
elasticsearchsink now sends any configured headers when making healthchecks. - Vector now has a concept of “rate” metrics which are a counter with an additional
interval associated. This is used by the
datadog_agentsource thedatadog_metricssink to correctly pass “rate” metrics from the Datadog Agent to Datadog. - VRL’s
parse_apache_logfunction now handles additional error log formats. - The
mongodb_metricssource now correctly decodesbytes_written_fromvalues that exceed 32-bit integers, up to 64-bit.
Thanks to KernelErr for contributing this change! - Vector no longer panics after reloading an existing enrichment table that had index updates.
- The
host_metricssource has improved handling of fetching cgroups metrics from hybrid cgroups. It now checks all possible locations for stats. - Certificate verification now correctly works for proxied connections (when
proxyis configured on a component).
Thanks to ntim for contributing this change! - The
docker_logssource now correctly tags internal metrics that it emits with the normal component tags (component_id,component_kind, andcomponent_type).
Thanks to zhongzc for contributing this change! - The
host_metricssource now emits two new gauges for the number of CPUs on the host:physical_cpusandlogical_cpus. These can be used to better interpret theload*metrics that are emitted. - The
execsource now gracefully waits for the subprocess to exit when shutting down by sending a SIGTERM. This has only been implemented for *nix hosts. On Windows, the subprocess will be abruptly killed. We hope to improve this in the future. - The
file,journald, andkafkasources no longer halt when end-to-end acknowledgements are enabled and an attached sink returns an error. This was a change in v0.23.0, but we backed it out to pursue improved error handling in sinks.
1 chore
- The deprecated codec configuration for sinks was removed so that codecs must be
specified as
encoding.codecrather than justencoding. See the upgrade note for details.
What’s next
opentelemetry source for consuming logs from OpenTelemetry collectors and SDKs.
This support will be expanded to cover metrics and traces as well as an
opentelemetry sink.