Project: Vector (Observability and Analysis / Observability)
File: 2023-12-19-0-35-0-upgrade-guide.md

date: "2023-12-19" title: "0.35 Upgrade Guide" description: "An upgrade guide that addresses breaking changes in 0.35.0" authors: ["dsmith3197"] release: "0.35.0" hideonrelease_notes: false badges: type: breaking change Vector's 0.35.0 release includes breaking changes: and deprecations: and potentially impactful changes: We cover them below to help you upgrade quickly: The Throttle transform's `eventsdiscardedtotal` 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 `internalmetrics.emiteventsdiscardedper_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 `componentdiscardedevents_total` internal metric. File-based components (file source, Kubernetes logs source, file sink) now include a `internalmetrics.includefile_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. The `requestscompletedtotal`, `requestdurationseconds`, and `requestsreceivedtotal` internal metrics were removed in the 0.35.0 release. | Removed metric | Replacement metric | Affected components | |--|-|| | requestscompletedtotal | httpclientresponses_total | apache metrics, aws ecs metrics, http client, prometheus remote write, prometheus scrape | | requestdurationseconds | httpclientresponserttseconds | apache metrics, aws ecs metrics, http client, prometheus remote write, prometheus scrape | | requestsreceivedtotal | httpserverrequestsreceivedtotal | aws kinesis firehose, heroku logplex, prometheus exporter, splunk hec | Vector has the ability to [interpolate environment variables into its configuration](/docs/reference/configuration/#environment-variables) 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 `VECTORSTRICTENV_VARS` environment variable) when running

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. HTTP server-based sources include a new `keepalive.maxconnectionage_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.maxconnectionage_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). The AppSignal, Datadog Metrics, GreptimeDB, GCP Cloud Monitoring, Honeycomb, and HTTP sinks now correctly report uncompressed bytes, rather than compressed bytes, for the `componentsentbytes_total` internal metric. The Heroku Logs, HTTP Server, Prometheus Remote Write, and Splunk HEC sources now correctly report decompressed bytes, rather than compressed bytes, for the `componentreceivedbytes_total` internal metric. The `request.retrymaxduration_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.ratelimitnum` for the following sinks: | Sink | Default `request.ratelimitnum` 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. The Datadog Logs, Metrics, and Traces sinks now default the values of the and configuration options to the values of environment variables `DDAPIKEY` and `DD_SITE`, respectively.