0.33 Upgrade Guide

An upgrade guide that addresses breaking changes in 0.33.0

Vector’s 0.33.0 release includes breaking changes:

  1. Behavior of the datadog_logs sink’s endpoint setting
  2. Disable OpenSSL legacy provider by default

and deprecations:

  1. Default config location change
  2. Renaming the armv7 rpm package
  3. Metadata field in the Vector protobuf definition

and potentially impactful changes:

  1. Async runtime default number of worker threads
  2. Setting request.concurrency = "none"

We cover them below to help you upgrade quickly:

Upgrade guide

Breaking changes

Behavior of the datadog_logs sink’s endpoint setting

The endpoint configuration setting is common to each of the Datadog sinks. Before this change, when endpoint was set, the logs sink took the provided endpoint as the complete URL (including API path) to use for posting HTTP requests. This behavior is inconsistent with the other Datadog sinks, which use the endpoint as a base URL that the API path (eg. “/api/v2/logs”), is appended to.

With this release, the datadog_logs sink’s behavior is now consistent with the other Datadog sinks for the endpoint setting.

Disable OpenSSL legacy provider by default

Vector upgraded the version of OpenSSL that it statically compiles in to v3.1.x in the 0.32.0 release. Following our deprecation policy, v0.33.0 now disables the legacy OpenSSL provider by default. It can be enabled via an OpenSSL configuration file. The file location defaults to /usr/local/ssl/openssl.cnf or can be specified with the OPENSSL_CONF environment variable.

Deprecations

Default config location change

The default config location /etc/vector/vector.toml is now deprecated. This location will still be used in v0.33.0 if it exists, but starting in v0.34.0 Vector will look for /etc/vector/vector.yaml first. We encourage users to convert their TOML configuration to YAML at this new path.

See the associated release highlight for more details on the motivation for migrating from TOML to YAML as the default configuration language.

Renaming the armv7 rpm package

The armv7 rpm package, vector-<version>-1.armv7.rpm, is now published as vector-<version>-1.armv7hl.rpm to better follow rpm guidelines. The armv7 package will be no longer be published beginning in the 0.34.0 release.

Metadata field in the Vector protobuf definition

Ignore if you aren’t encoding or consuming events using Vector’s native protobuf encoding. This change is transparent if using the native codec or vector source/sink.

This release adds a new Metadata proto Message which is appended to the end of the Metric message of the Vector proto. Prior to this release, the existing metadata field contained only a single field from Vector’s EventMetadata structure. The newly added field (event_metadata) represents a structure that can contain any field added that needs to be included from EventMetadata.

In order to preserve backwards compatibility, the existing metadata field is available to use as-is, but is noted as deprecated.

In a future release, this field index (19) will be fully unsupported and marked as a reserved field in the proto definition. Any users setting the Value metadata field at index 19 should change to populate the event_metadata.value instead.

Potentially impactful changes

Async runtime default number of worker threads

We’ve changed the default number of worker threads spawned by Vector’s async runtime from being the number of CPUs on the host machine to the value returned by std::thread::available_parallelism(). This should be a better default value for containerized environments where the container has limited quotas, but note this change may impact performance.

The number of worker threads used can be seen by enabling debug logging, and the value can be overriden by setting the VECTOR_THREADS environment variable.

Setting request.concurrency = "none"

Explicitly setting request.concurrency = "none" in a sink configuration now properly configures the sink to have a fixed concurrency limit of 1, as was stated in the documentation. Previously, the above configuration would result in the sink using adaptive request concurrency. The default setting remains unchanged (adaptive request concurrency).