0.35 Upgrade Guide
An upgrade guide that addresses breaking changes in 0.35.0
Vector’s 0.35.0 release includes breaking changes:
- The Throttle transform’s
events_discarded_totalinternal metric is now opt-in - The
fileinternal metric tag is now opt-in for file-based components - Datadog sinks now default the API key and Site to the value of environment variables
- Removal of
requests_completed_total,request_duration_seconds, andrequests_received_totalInternal Metrics
and deprecations:
and potentially impactful changes:
- HTTP server-based sources now include a
keepalive.max_connection_age_secsconfig option that defaults to 5 minutes - Update
component_sent_bytes_totalto correctly report uncompressed bytes for all sinks - Update
component_received_bytes_totalto correctly report decompressed bytes for all sources - Update default values for the
request.retry_max_duration_secsandrequest.rate_limit_numsink configuration options
We cover them below to help you upgrade quickly:
Upgrade guide
Breaking Changes
The Throttle transform’s events_discarded_total internal metric is now opt-in
The Throttle transform’s events_discarded_total internal metric, which includes the key tag, is now only emitted on
an opt-in basis. Users can opt-in to emit this metric by setting internal_metrics.emit_events_discarded_per_key to true
in the corresponding Throttle transform component config. This change is motivated by the fact that the key metric tag has
potentially unbounded cardinality.
To view events discarded without the key tag, use the component_discarded_events_total internal metric.
The file internal metric tag is now opt-in for file-based components
File-based components (file source, Kubernetes logs source, file sink) now include a
internal_metrics.include_file_tag config option that determines whether the file tag is included on the
component’s corresponding internal metrics. This config option defaults to false, as this tag is likely to
be of high cardinality.
Removal of requests_completed_total, request_duration_seconds, and requests_received_total Internal Metrics
The requests_completed_total, request_duration_seconds, and requests_received_total internal metrics were removed in the 0.35.0 release.
| Removed metric | Replacement metric | Affected components |
|---|---|---|
| requests_completed_total | http_client_responses_total | apache metrics, aws ecs metrics, http client, prometheus remote write, prometheus scrape |
| request_duration_seconds | http_client_response_rtt_seconds | apache metrics, aws ecs metrics, http client, prometheus remote write, prometheus scrape |
| requests_received_total | http_server_requests_received_total | aws kinesis firehose, heroku logplex, prometheus exporter, splunk hec |
Deprecations
Deprecation of undefined environment variable warnings
Vector has the ability to interpolate environment variables into its
configuration as a means of templating
configuration. Currently, if an environment variable is undefined, unless the ? interpolation
syntax is used, Vector outputs a warning and replaces the environment variable with an empty string.
In a future release , this will change from a warning to a hard error. This behavior can be opted
into earlier by using the --strict-env-vars flag (or VECTOR_STRICT_ENV_VARS environment
variable) when running Vector.
The reasoning for this change is that users often miss the undefined variable warning and are
confused by Vector not behaving as the expected. In particular, this happens when using $1 in
regex capture groups in VRL without realizing they need to be escaped as $$1 to avoid
interpolation.
Potentially impactful changes
HTTP server-based sources now include a keepalive.max_connection_age_secs config option that defaults to 5 minutes
HTTP server-based sources include a new keepalive.max_connection_age_secs configuration option, which defaults to 5 minutes (300 seconds).
When enabled, this closes incoming TCP connections that reach the maximum age by sending a Connection: close header 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 setting keepalive.max_connection_age_secs to a very large number like
100000000 (ideally you could set it to null, but Vector currently requires all values to be valid
TOML values, of which null is not).
Update component_sent_bytes_total to correctly report uncompressed bytes for all sinks
The AppSignal, Datadog Metrics, GreptimeDB, GCP Cloud Monitoring, Honeycomb, and HTTP sinks now correctly
report uncompressed bytes, rather than compressed bytes, for the component_sent_bytes_total internal metric.
Update component_received_bytes_total to correctly report decompressed bytes for all sources
The Heroku Logs, HTTP Server, Prometheus Remote Write, and Splunk HEC sources now correctly report decompressed bytes,
rather than compressed bytes, for the component_received_bytes_total internal metric.
Update default values for the request.retry_max_duration_secs and request.rate_limit_num sink configuration options
The request.retry_max_duration_secs config option previously defaulted to 3600 seconds. It now defaults to 30 seconds.
Also, a bug was fixed that prevented component-level default values from being applied. In particular, this updates the default value
for request.rate_limit_num for the following sinks:
| Sink | Default request.rate_limit_num Value | Previous Limit |
|---|---|---|
| AWS Cloudwatch Metrics Sink | 150 | No limit |
| Azure Blob Storage Sink | 250 | No limit |
| GCP Chronicle Unstructured Sink | 1000 | No limit |
| GCP Cloud Storage Sink | 1000 | No limit |
| GCP Cloud Monitoring Sink | 1000 | No limit |
Note that all changes described above are reflected in the component reference documentation.
Datadog sinks now default the API key and Site to the value of environment variables
The Datadog Logs, Metrics, and Traces sinks now default the values of the default_api_key and site
configuration options to the values of environment variables DD_API_KEY and DD_SITE, respectively.