Project: VictoriaMetrics (Observability and Analysis / Observability)
File: CHANGELOG_2022.md

sort: 103 weight: 103 title: CHANGELOG for the year 2022 menu: docs: parent: 'victoriametrics' weight: 103 aliases: /CHANGELOG_2022.html Released at 2022-12-20 Update note 1: This and newer releases of VictoriaMetrics may return gaps for `rate(m. The previous gap filling behaviour can be restored by removing explicit lookbehind window ` for details. BUGFIX: fix `error when searching for TSIDs by metricIDs in the previous indexdb: EOF` error, which can occur during queries after unclean shutdown of VictoriaMetrics (e.g. via hardware reset, out of memory crash or `kill -9`). The error has been introduced in . See . BUGFIX: : expose proper values for `vmdownsamplingpartitionsscheduled` and `vmdownsamplingpartitionsscheduledsizebytes` metrics, which were added at . See . BUGFIX: : never extend explicitly set lookbehind window for function. This reduces the level of confusion when the user expects the needed results after explicitly seting the lookbehind window ` for details. BUGFIX: : respect `-usePromCompatibleNaming` flag if no relabeling or extra labels were set. See for details. BUGFIX: : fix the wrong legend when queries are hidden. See . BUGFIX: : fix incorrect time selection after the timezone change. See . Released at 2022-12-19 FEATURE: support overriding of `-search.latencyOffset` value via URL param `latency_offset` when performing requests to and . See . FEATURE: allow changing field names in JSON logs if VictoriaMetrics components are started with `-loggerFormat=json` command-line flags. The field names can be changed with the `-loggerJSONFields` command-line flag. For example `-loggerJSONFields=ts:timestamp,msg:message` would rename `ts` and `msg` fields on the output JSON to `timestamp` and `message` fields. See . Thanks to @michal-kralik for . FEATURE: : expose `meta_consul_tag_<tagname>` and `metaconsultagpresent_<tagname>` labels for targets discovered via . This simplifies converting to target labels with a simple : ```yaml action: labelmap regex: metaconsultag_(.+) ``` This resolves . BUGFIX: properly return query results for time series, which stop receiving new samples after the rotation of `indexdb`. Previously such time series could be missing in query results. See . The issue has been introduced in . BUGFIX: allow specifying values bigger than 2GiB to the following command-line flag values on 32-bit architectures (`386` and `arm`): `-storage.minFreeDiskSpaceBytes` and `-remoteWrite.maxDiskUsagePerURL`. Previously values bigger than 2GiB were incorrectly truncated on these architectures. BUGFIX: : stop dropping metric name by a mistake on the page. Released at 2022-12-14 It is recommended upgrading to because of , which may result in incomplete query results for historical time series. FEATURE: : support `$for` or `.For` template variables in alert's annotations. See . BUGFIX: : do not re-use `host` and `device` fields from the previously parsed messages if these fields are missing in the currently parsed message. See . BUGFIX: reduce CPU usage when the regex-based relabeling rules are applied to more than 100K unique Graphite metrics. See . The issue was introduced in . BUGFIX: do not block of small parts by merges of big parts on hosts with small number of CPU cores. This issue could result in the increasing number of `storage/small` parts while big merge is in progress. This, in turn, could result in increased CPU usage and memory usage during querying, since queries need to inspect bigger number of small parts. The issue has been introduced in . BUGFIX: : fix the `The source request body for synchronous copy is too large and exceeds the maximum permissible limit (256MB)` error when performing backups to Azure blob storage. See . Released at 2022-12-11 It is recommended upgrading to because of , which may result in incomplete query results for historical time

Update note 1: this release drops support for direct upgrade from VictoriaMetrics versions prior . Please upgrade to `v1.84.0`, wait until `finished round 2 of background conversion` line is emitted to log by single-node VictoriaMetrics or by `vmstorage`, and then upgrade to newer releases. Update note 2: this release splits `type="indexdb"` metrics into `type="indexdb/inmemory"` and `type="indexdb/file"` metrics. This may break old dashboards and alerting rules, which contain on `{type="indexdb"}`. Such label filter must be substituted with `{type=~"indexdb.*"}`, so it matches `indexdb` from the previous releases and `indexdb/inmemory` + `indexdb/file` from new releases. It is recommended upgrading to the latest available dashboards and alerting rules mentioned in , since they already contain fixed label filters. Update note 3: this release deprecates `relabeldebug` and `metricrelabel_debug` config options in . The `-relabelDebug`, `-remoteWrite.relabelDebug` and `-remoteWrite.urlRelabelDebug` command-line options are also deprecated. Use more powerful target-level relabel debugging and metric-level relabel debugging instead as documented . FEATURE: : provide enhanced target-level and metric-level relabel debugging. See and . FEATURE: leave a sample with the biggest value for identical timestamps per each `-dedup.minScrapeInterval` discrete interval when the is enabled. See . FEATURE: add `-inmemoryDataFlushInterval` command-line flag, which can be used for controlling the frequency of in-memory data flush to disk. The data flush frequency can be reduced when VictoriaMetrics stores data to low-end flash device with limited number of write cycles (for example, on Raspberry PI). See . FEATURE: expose additional metrics for `indexdb` and `storage` parts stored in memory and for `indexdb` parts stored in files (see for technical details): `vmactivemerges{type="storage/inmemory"}` - active merges for in-memory `storage` parts `vmactivemerges{type="indexdb/inmemory"}` - active merges for in-memory `indexdb` parts `vmactivemerges{type="indexdb/file"}` - active merges for file-based `indexdb` parts `vmmergestotal{type="storage/inmemory"}` - the total merges for in-memory `storage` parts `vmmergestotal{type="indexdb/inmemory"}` - the total merges for in-memory `indexdb` parts `vmmergestotal{type="indexdb/file"}` - the total merges for file-based `indexdb` parts `vmrowsmerged_total{type="storage/inmemory"}` - the total rows merged for in-memory `storage` parts `vmrowsmerged_total{type="indexdb/inmemory"}` - the total rows merged for in-memory `indexdb` parts `vmrowsmerged_total{type="indexdb/file"}` - the total rows merged for file-based `indexdb` parts `vmrowsdeleted_total{type="storage/inmemory"}` - the total rows deleted for in-memory `storage` parts `vmassistedmerges_total{type="storage/inmemory"}` - the total number of assisted merges for in-memory `storage` parts `vmassistedmerges_total{type="indexdb/inmemory"}` - the total number of assisted merges for in-memory `indexdb` parts `vm_parts{type="storage/inmemory"}` - the total number of in-memory `storage` parts `vm_parts{type="indexdb/inmemory"}` - the total number of in-memory `indexdb` parts `vm_parts{type="indexdb/file"}` - the total number of file-based `indexdb` parts `vm_blocks{type="storage/inmemory"}` - the total number of in-memory `storage` blocks `vm_blocks{type="indexdb/inmemory"}` - the total number of in-memory `indexdb` blocks `vm_blocks{type="indexdb/file"}` - the total number of file-based `indexdb` blocks `vmdatasize_bytes{type="storage/inmemory"}` - the total size of in-memory `storage` blocks `vmdatasize_bytes{type="indexdb/inmemory"}` - the total size of in-memory `indexdb` blocks `vmdatasize_bytes{type="indexdb/file"}` - the total size of file-based `indexdb` blocks `vm_rows{type="storage/inmemory"}` - the total number of in-memory `storage` rows `vm_rows{type="indexdb/inmemory"}` - the total number of in-memory `indexdb` rows `vm_rows{type="indexdb/file"}` - the total number of file-based `indexdb` rows FEATURE: : add `device` tag when it is passed in the `device` field is present in the `series` object of the input request. Thanks to @PerGon for the provided . FEATURE: : improve performance when discovering big number of targets (10K and more). FEATURE: : allow using `series_limit` option for in . See . FEATURE: : allow using `sample_limit` option for limiting the number of metrics a single scrape target can expose in every response sent over . FEATURE: : add `exported` prefix to metric names exported by scrape targets if these metric names clash with such as `up`, `scrapesamples_scraped`, etc. This prevents from corruption of automatically generated metrics. See . FEATURE: : make the `host` label optional in . See

FEATURE: : improve error message when the requested path cannot be properly parsed, so users could identify the issue and properly fix the path. Now the error message links to . See . FEATURE: : add `-storageNode.discoveryInterval` command-line flag to `vmselect` and `vminsert` to control load on DNS servers when is enabled. See . FEATURE: : allow reading and updating the list of `vmstorage` nodes at `vmselect` and `vminsert` nodes via file. See for details. FEATURE: : reduce memory and CPU usage by up to 50% on setups with thousands of recording/alerting groups. See . FEATURE: : add `-remoteWrite.sendTimeout` command-line flag, which allows configuring timeout for sending data to `-remoteWrite.url`. See . FEATURE: : add ability to migrate data between VictoriaMetrics clusters with automatic tenants discovery. See and . FEATURE: : add ability to copy data from sources via Prometheus `remote_read` protocol. See . The related issues: and . FEATURE: : allow changing timezones for the requested data. See . FEATURE: : provide fast path for hiding results for all the queries except the given one by clicking `eye` icon with `ctrl` key pressed. See . FEATURE: : add `rangetrimspikes(phi, q)` function for trimming `phi` percent of the largest spikes per each time series returned by `q`. See . FEATURE: : allow passing `inf` arg into , , and other functions, which accept numeric arg, which limits the number of output time series. See . FEATURE: : add support for JWT token signature verification. See for details. FEATURE: put the version of VictoriaMetrics in the first message of . This should simplify debugging. BUGFIX: : fix the `The request did not have a subscription or a valid tenant level resource provider` error when discovering Azure targets with . See . BUGFIX: : properly pass HTTP headers during the alert state restore procedure. See . BUGFIX: : properly specify rule evaluation step during the . The `step` value was previously overriden by `-datasource.queryStep` command-line flag. BUGFIX: : properly return the error message from remote-write failures. Before, error was ignored and only `vmalertremotewriteerrors_total` was incremented. BUGFIX: : fix sticky tooltip sizing, which could prevent from closing the tooltip. See . BUGFIX: : properly put multi-line queries in the url, so it could be copy-n-pasted and opened without issues in a new browser tab. Previously the url for multi-line query couldn't be opened. See . BUGFIX: : correctly handle `up` and `down` keypresses when editing multi-line queries. See . Released at 2022-11-25 It is recommended upgrading to because of , which may result in incomplete query results for historical time series. FEATURE: add support for via `/api/v1/import/prometheus` url. See and . Thanks to @PerGon for . FEATURE: : add `http://<vmselect>:8481/admin/tenants` API endpoint for returning a list of registered tenants. See for details. FEATURE: : add `-storageNode.filter` command-line flag for filtering the with arbitrary regular expressions. See . FEATURE: : allow using numeric values with `K`, `Ki`, `M`, `Mi`, `G`, `Gi`, `T` and `Ti` suffixes inside MetricsQL queries. For example `8Ki` equals to `81024`, while `8.2M` equals to `8.210001000`. FEATURE: : add function for normalizing multiple time series into `. FEATURE: : add function for calculating over the input time series on the selected time range. This function is useful for predictions and capacity planning. For example, `rangelinearregression(processresidentmemory_bytes)` can predict future memory usage based on the past memory usage. FEATURE: : add and functions. FEATURE: : optimize `expr1 op expr2` query when `expr1` returns an empty

In this case there is no sense in executing `expr2` for `op` not equal to `or`, since the end result will be empty according to . See . Thanks to @jianglinjian for pointing to this case. FEATURE: : add the ability to upload/paste JSON to investigate the trace. See and . FEATURE: : reduce JS bundle size from 200Kb to 100Kb. See . FEATURE: : add the ability to hide results of a particular query by clicking the `eye` icon. See . FEATURE: : add copy button to row on Table view. The button copies row in MetricQL format. See . FEATURE: : add compact table view. See . FEATURE: : add the ability to "stick" a tooltip on the chart by clicking on a data point. See and FEATURE: : add the ability to set up series custom limits. See . FEATURE: : add default alert list for vmalert's metrics. See . FEATURE: : expose `vmagent_relabel_config_`, `vmrelabelconfig*` and `vmpromscrapeconfig*` metrics for tracking relabel and scrape configuration hot-reloads. See . BUGFIX: : properly return an empty result from if the `offset` arg exceeds the number of inner time series. See . BUGFIX: : properly discover GCE zones when `filter` option is set at . See . BUGFIX: : properly display the requested graph on the requested time range when navigating from Prometheus URL in Grafana. BUGFIX: : properly display wide tables. See . BUGFIX: reduce CPU usage spikes and memory usage spikes under high data ingestion rate introduced in . See . Released at 2022-11-10 It is recommended upgrading to because of , which may result in incomplete query results for historical time series. FEATURE: : expose `metaconsulpartition` label for targets discovered via in the same way as . FEATURE: : show the in JSON view. See . Thanks to @michal-kralik for . BUGFIX: : fix a panic at `vminsert` when the discovered list of `vmstorage` nodes is changed during . See . BUGFIX: properly register new time series in per-day inverted index if they were ingested during the last 10 seconds of the day. See . Thanks to @lmarszal for the bugreport and for the . BUGFIX: reduce the increased memory usage spikes for some workloads. The issue was introduced in . BUGFIX: properly accept without tags without the need to specify the trailing whitespace. See . Released at 2022-10-29 It is recommended upgrading to because of , which may result in incomplete query results for historical time series. Update note 1: the `indexdb/tagFilters` cache type at has been renamed to `indexdb/tagFiltersToMetricIDs` in order to make its puropose more clear. Update note 2: : the `crlfEscape` becames obsolete starting from this release. It can be safely removed from alerting templates, since `\n` chars are properly escaped with other `*Escape` functions now. See and issue for details. FEATURE: : add support for automatic `vmstorage` nodes discovering and updating at `vmselect` and `vminsert`. See . FEATURE: : allow configuring multiple retentions for distinct sets of time series. See , and feature request. FEATURE: : add support for multiple retentions for distinct tenants - see and and feature request. FEATURE: allow limiting memory usage on a per-query basis with `-search.maxMemoryPerQuery` command-line flag. See . FEATURE: allow referring environment variables inside command-line flags via `%{ENVVAR}` syntax. For example, if `AUTHKEY=top-secret` environment variable is set, then `-metricsAuthKey=%{AUTH_KEY}` command-line flag is automatically expanded to `-storageDataPath=top-secret` at VictoriaMetrics startup. See for details. FEATURE: allow referring environment variables inside other environment variables via `%{ENV_VAR}` syntax. For example, if `A=a-%{B}`, `B=b-%{C}` and `C=c` env vars are set, then VictoriaMetrics components automatically expand them to `A=a-b-c`, `B=b-c` and `C=c` on

FEATURE: : drop all the labels with `__` prefix from discovered targets in the same way as Prometheus does according to . Previously the following labels were available during : `__address__`, `__scheme__`, `__metrics_path__`, `__scrape_interval__`, `__scrape_timeout__`, `__param_`. Now these labels are available only during . This should reduce CPU usage and memory usage for `vmagent` setups, which scrape big number of targets. FEATURE: : improve the performance for metric-level , which can be applied via `metricrelabelconfigs` section at , via `-remoteWrite.relabelConfig` or via `-remoteWrite.urlRelabelConfig` command-line options. FEATURE: : allow specifying full url in scrape target addresses (aka `address` label). This makes valid the following `-promscrape.config`: ```yaml scrape_configs: job_name: abc metrics_path: /foo/bar scheme: https static_configs: targets: 'http://host1/metric/path1' 'https://host2/metric/path2' 'http://host3:1234/metric/path3?arg1=value1' host4:1234 ``` See . FEATURE: : allow controlling on a per- basis by specifying `nostalemarkers: true` or `nostalemarkers: false` option in the corresponding . FEATURE: : add `strvalue` and `stripDomain` in order to improve compatibility with Prometheus. FEATURE: : add `jsonEscape` and `htmlEscape` . FEATURE: : limit the number of plotted series. This should prevent from browser crashes or hangs when the query returns big number of time series. See . FEATURE: : reduce memory usage when querying big number of time series. See . FEATURE: : add responsive styles for small screens. See and . FEATURE: log error if some environment variables referred at `-promscrape.config` via `%{ENV_VAR}` aren't found. This should prevent from silent using incorrect config files. FEATURE: immediately shut down VictoriaMetrics apps on the second SIGINT or SIGTERM signal if they couldn't be finished gracefully for some reason after receiving the first signal. FEATURE: improve the performance of endpoint by eliminating loading of unused `TSID` data during the API call. FEATURE: : add functionality for automated restore from backup. See . BUGFIX: : properly merge buckets with identical `le` values, but with different string representation of these values when calculating and . For example, `httprequestdurationsecondsbucket{le="5"}` and `httprequestsdurationsecondsbucket{le="5.0"}`. Such buckets may be returned from distinct targets. Thanks to @647-coder for the . BUGFIX: : change severity level for log messages about failed attempts for sending data to remote storage from `error` to `warn`. The message for about all failed send attempts remains at `error` severity level. BUGFIX: : fix panic if `vmalert` runs with `-clusterMode` command-line flag in . The issue has been introduced in . BUGFIX: : properly escape string passed to `quotesEscape` , so it can be safely embedded into JSON string. This makes obsolete the `crlfEscape` function. See and issue. BUGFIX: : do not show invalid error message in Kubernetes service discovery: `cannot parse WatchEvent json response: EOF`. The invalid error message has been appeared in . BUGFIX: : properly add `exported` prefix to metric labels, which clashing with scrape target labels if `honorlabels: true` option isn't set in . Previously some `exported_` prefixes were missing in the resulting metric labels. See . The issue has been introduced in . BUGFIX: `vmselect`: expose missing metric `vmcachesizemaxbytes{type="promql/rollupResult"}` . This metric is used for monitoring rollup cache usage with the query `vmcachesizebytes{type="promql/rollupResult"} / vmcachesizemax_bytes{type="promql/rollupResult"}` in the same way as this is done for other cache types. Released at 2022-10-14 BUGFIX: : automatically update graph, legend and url after the removal of query field. See and . BUGFIX: : remove duplicate `alertname` JSON entry from generated alerts. See . Thanks to @Howie59 for ! BUGFIX: : fix integration with Grafana via `-vmalert.proxyURL`, which has been broken in . See . BUGFIX: : set default region to `us-east-1` if `AWS_REGION` environment variable isn't set. The issue was introduced in . See . BUGFIX: : fix deletion of old backups at

BUGFIX: : properly apply regex filters when searching for time series. Previously unexpected time series could be returned from regex filter. See . The issue was introduced in . BUGFIX: : properly apply `if` section with regex filters. Previously unexpected metrics could be returned from `if` section. The issue was introduced in . Released at 2022-10-07 It isn't recommended to use VictoriaMetrics and vmagent v1.82.0 because of , which may result in incorrect query results and results. Upgrade to instead. Update note 1: this release changes data format for in incompatible way, so it cannot be imported into older version of VictoriaMetrics via . Update note 2: changes default value for command-line flag `-datasource.queryStep` from `0s` to `5m`. The change supposed to improve reliability of the rules evaluation when evaluation interval is lower than scraping interval. Update note 3: `vmaccountid` and `vmprojectid` labels must be passed to tcp-based `Graphite`, `InfluxDB` and `OpenTSDB` endpoints at instead of undocumented `VictoriaMetricsAccountID` and `VictoriaMetricsProjectID` labels when writing samples to the needed tenant. See for details. FEATURE: : support specifying tenant ids via `vmaccountid` and `vmprojectid` labels. See and . FEATURE: : improve performance by up to 3x for non-trivial `regex` values such as `([^:]+):.+`, which can be used for extracting a `host` part from `host:port` label value. FEATURE: : improve performance by up to 4x for queries containing non-trivial `regex` filters such as `{path=~"/foo/.+|/bar"}`. FEATURE: improve performance scalability on systems with many CPU cores for and endpoints. FEATURE: sanitize metric names for data ingested via according to . The behaviour can be disabled by passing `-datadog.sanitizeMetricName=false` command-line flag. Thanks to @PerGon for . FEATURE: add `-usePromCompatibleNaming` command-line flag to , to single-node VictoriaMetrics and to `vminsert` component of VictoriaMetrics cluster. This flag can be used for normalizing the ingested metric names and label names to . If this flag is set, then all the chars unsupported by Prometheus are replaced with `_` chars in metric names and labels of the ingested samples. See . FEATURE: accept whitespace in metric names and tags ingested via according to . See . FEATURE: check the correctess of raw sample timestamps stored on disk when reading them. This reduces the probability of possible silent corruption of the data stored on disk. This should help and . FEATURE: atomically delete directories with snapshots, parts and partitions at . Previously such directories can be left in partially deleted state when the deletion operation was interrupted by unclean shutdown. This may result in `cannot open file ...: no such file or directory` error on the next start. The probability of this error was quite high when NFS or EFS was used as persistent storage for VictoriaMetrics data. See . FEATURE: set the `start` arg to `end - 5 minutes` if isn't passed explicitly to and . See . FEATURE: allow to define the minimum TLS version to use when accepting https requests to VictoriaMetrics components if `-tls` command-line flag is set. The minimum TLS version can be set via `-tlsMinVersion` command-line flag. See . FEATURE: : add `vm-native-step-interval` command line flag for `vm-native` mode. New option allows splitting the import process into chunks by time interval. This helps migrating data sets with high churn rate and provides better control over the process. See . FEATURE: : add `top queries` tab, which shows various stats for recently executed queries. See and . FEATURE: : move the "Execute Query" and "Add Query" buttons below the query fields, change icon for remove query. See

FEATURE: : set the maximum number of queries to 4, remove multi Y-axes, left one for all queries and dotted lines to indicate queries in the graph. See . FEATURE: : add `debug` mode to the alerting rule settings for printing additional information into logs during evaluation. See `debug` param in . FEATURE: : add experimental feature for displaying last 10 states of the rule (recording or alerting) evaluation. The state is available on the Rule page, which can be opened by clicking on `Details` link next to Rule's name on the `/groups` page. FEATURE: : allow using extra labels in annotiations. See . FEATURE: : allow configuring authorization params per list of targets in vmalert's notifier config for `static_configs`. See . FEATURE: : allow using `{{$labels}}` for templating in command-line flag `-external.alert.source`. The change supposed to provide additional flexibility for generating alert's source link based on labels values. FEATURE: : add `vmaccountid` and `vmprojectid` labels to results of alerting and recording rules if `-clusterMode` is enabled. This improves . FEATURE: : minimize the time needed for reading large responses from scrape targets in . This should reduce scrape durations for such targets as running in a big Kubernetes cluster. FEATURE: : add and functions for of input time series by the specified labels. See . FEATURE: and : retry GCS operations for up to 3 minutes on temporary failures. See . FEATURE: : add support for saving / restoring backups to / from . See . FEATURE: : expose `vmbackupin_flight` metric, which can be used for determining which backup types - latest, hourly, daily, weekly or monthly - are currently executed. FEATURE: : add ability to extract JWT authorization token from non-standard HTTP header by passing it via `-auth.httpHeader` command-line flag. See . FEATURE: : expose `metaec2region` label for in the same way as . FEATURE: : accept data ingestion requests via paths starting from `/prometheus` prefix in the same way as . For example, `vmagent` now accepts Prometheus `remote_write` data via both `/api/v1/write` and `/prometheus/api/v1/write`. This simplifies switching between single-node VictoriaMetrics and `vmagent`. FEATURE: : add `externallabels` from `global` section at `-promscrape.config` after the is applied to scraped metrics. This aligns with Prometheus behaviour. Previously the `externallabels` were added to scrape targets, so they could be modified during relabeling. See . FEATURE: : allow specifying per-`-remoteWrite.url` limits for on-disk size for pending data via `-remoteWrite.maxDiskUsagePerURL` command-line flag. Thanks to @rbizos for . FEATURE: : log clear error when multiple identical `-storageNode` command-line flags are passed to `vmselect` or to `vminsert`. Previously these components were crashed with cryptic panic `metric ... is already registered` in this case. See . BUGFIX: do not export stale metrics via after the staleness markers. Previously such metrics were exported with `NaN` values. this could break some setups. See . BUGFIX: export ininity numbers as `"Infinity"` strings at , so they can be parsed by standard JSON parsers. Previously infinity numbers were exported as `Inf` values, which couldn't be parsed by standard JSON parsers. See . BUGFIX: : properly handle request paths ending with `/` such as `/vmui/`. Previously `vmui` was dropping the traling `/`, which could prevent from using `vmui` via `vmauth`. See . BUGFIX: : properly encode query params for aws signed requests, use `%20` instead of `+` as api requires. See . BUGFIX: : properly parse relabel config when regex ending with escaped `$`. See . BUGFIX: : properly calculate `rateoversum(m and . BUGFIX: : properly calculate `increase(m could return unexpectedly big results in this case. See and . BUGFIX: : ignore empty series when applying

It should improve queries with additional filters by value in expressions like `limit_offset(1,1, foo > 1)`. BUGFIX: : properly calculate when the lookbehind window contains only a single sample. Previously an empty result was incorrectly returned in this case. BUGFIX: : fix `RangeError: Maximum call stack size exceeded` error when the query returns too many data points at `Table` view. See . BUGFIX: : fix workaround for adding more queries via URL. See . BUGFIX: : re-evaluate annotations per each alert evaluation. Previously, annotations were evaluated only on alert's value change. This could result in stale annotations in some cases described in . BUGFIX: prevent from excessive CPU usage when the storage enters . The previous fix in wasn't complete. BUGFIX: : change default value for command-line flag `-datasource.queryStep` from `0s` to `5m`. Param `step` is added by vmalert to every rule evaluation request sent to datasource. Before this change, `step` was equal to group's evaluation interval by default. Param `step` for instant queries defines how far VM can look back for the last written data point. The change supposed to improve reliability of the rules evaluation when evaluation interval is lower than scraping interval. BUGFIX: properly calculate `vmrowsscannedperquery` histogram exported at `/metrics` page of `vmselect` and single-node VictoriaMetrics. Previously it could return misleadingly high numbers for , which scan only a few samples on the provided lookbehind window in square brackets. For example, `increase(m[1d])` always scans only 2 rows (aka `raw samples`) per each returned time series. Released at 2022-09-08 BUGFIX: : properly calculate query results at `vmselect`. See . The issue has been introduced in . Released at 2022-09-02 It isn't recommended to use VictoriaMetrics cluster v1.81.1 because of , which may result in incorrect query results. Upgrade to instead. FEATURE: : evaluate `q1`, ..., `qN` in parallel when calculating `union(q1, .., qN)`. Previously args were evaluated sequentially. This could result in lower than expected performance. BUGFIX: : fix potential panic at `vmselect` under high load, which has been introduced in . See . It isn't recommended to use VictoriaMetrics cluster v1.81.0 because of , which may result in `vmselect` crashes under high load. Upgrade to instead. Released at 2022-08-31 Update note 1: by default hides values of `-remoteWrite.url`, `-remoteRead.url` and `-datasource.url` in logs and at `http://vmalert:8880/flags` for security reasons. See the corresponding SECURITY change in the Chagelog below for additional info. Update note 2: by default points alert source url to `/vmalert/alert?...` aka instead of `/vmalert/api/v1/alert?...` aka JSON handler. The old behavior can be achieved by setting `-external.alert.source=vmalert/api/v1/alert?groupid={{.GroupID}}&alertid={{.AlertID}}` command-line flag. SECURITY: : do not expose `-remoteWrite.url`, `-remoteRead.url` and `-datasource.url` command-line flag values in logs and at `http://vmalert:8880/flags` page by default, since they may contain sensitive data such as auth keys. This aligns `vmalert` behaviour with , which doesn't expose `-remoteWrite.url` command-line flag value in logs and at `http://vmagent:8429/flags` page by default. Specify `-remoteWrite.showURL`, `-remoteRead.showURL` and `-datasource.showURL` command-line flags for showing values for the corresponding `-.url` flags in logs. Thanks to @mble for . SECURITY: upgrade base docker image (alpine) from 3.16.1 to 3.16.2. See . FEATURE: return shorter error messages to Grafana and to other clients requesting and endpoints. This should simplify reading these errors by humans. The long error message with full context is still written to logs. FEATURE: add the ability to fine-tune the number of points, which can be generated per each matching time series during evaluation. This can be done with the `-search.maxPointsSubqueryPerTimeseries` command-line flag. See . FEATURE: : improve the performance for relabeling rules with commonly used regular expressions in `regex` and `if` fields such as `some_string`, `prefix.`,

`foo|bar|baz`, `.foo.` and `.+foo.+`. FEATURE: : reduce CPU usage when discovering big number of with big number of labels and annotations. FEATURE: : add ability to accept data via OpenTSDB `/api/put` protocol at `/insert/<tenantID>/opentsdb/api/put` http endpoint if is enabled at `vmagent`. Thanks to @chengjianyun for . FEATURE: : expose `vmhourlyserieslimitmaxseries`, `vmhourlyserieslimitcurrentseries`, `vmdailyserieslimitmaxseries` and `vmdailyserieslimitcurrentseries` metrics when `-search.maxHourlySeries` or `-search.maxDailySeries` limits are set. This allows alerting when the number of unique series reaches the configured limits. See for details. FEATURE: : reduce the amounts of logging at `vmstorage` when `vmselect` connects/disconnects to `vmstorage`. FEATURE: : improve performance for heavy queries on systems with many CPU cores. FEATURE: : add ability to use `{{label_name}}` placeholders in the `replacement` option of relabeling rules. This simplifies constructing label values from multiple existing label values. See for details. FEATURE: : generate additional per-target metrics - `scrapeserieslimit`, `scrapeseriescurrent` and `scrapeserieslimitsamplesdropped` if series limit is set according to . This simplifies alerting on targets with the exceeded series limit. See for details on these metrics. FEATURE: : add support for MX record types in in the same way as Prometheus 2.38 . FEATURE: : add `metakubernetesserviceportnumber` meta-label for `role: service` in in the same way as Prometheus 2.38 . FEATURE: : add `metakubernetespodcontainerimage` meta-label for `role: pod` in in the same way as Prometheus 2.38 . FEATURE: : retry HTTP requests after some wait time during service discovery and during target scrapes if the server returns 429 HTTP status code (aka `Too many requests`). See . FEATURE: : add a legend in the top right corner for shortcut keys. See . FEATURE: : add `toTime()` template function in the same way as Prometheus 2.38 . See . FEATURE: : add `$alertID` and `$groupID` template variables. These variables may be used for templating annotations or `-external.alert.source` command-line flag. See the full list of supported variables . FEATURE: : add `$activeAt` template variable. See . See the full list of supported variables . Thanks to @laixintao for the . FEATURE: : point alert source to at `/vmalert/alert?...` instead of JSON handler at `/vmalert/api/v1/alert?...`. This improves user experience. The old behavior can be achieved by setting `-external.alert.source=vmalert/api/v1/alert?groupid={{.GroupID}}&alertid={{.AlertID}}` command-line flag. BUGFIX: prevent from excess CPU usage when the storage enters . BUGFIX: improve performance for requests to and when the filter in the `match. See and issues. BUGFIX: increase the default limit on the number of concurrent merges for small parts from 8 to 16. This should help resolving potential issues with heavy data ingestion. See from @lukepalmer . BUGFIX: : fix panic when incorrect arg is passed as `phi` into function. See . Released at 2022-08-08 FEATURE: : allow configuring additional HTTP request headers for `-datasource.url`, `-remoteWrite.url` and `-remoteRead.url` via `-datasource.headers`, `-remoteWrite.headers` and `-remoteRead.headers` command-line flags. Additional HTTP request headers also can be set on group level via `headers` param - see and . FEATURE: : execute left and right sides of certain operations in parallel. For example, `q1 or q2`, `aggrfunc(q1) <op> q2`, `q1 <op> aggrfunc(q1)`. This may improve query performance if VictoriaMetrics has enough free resources for parallel processing of both sides of the operation. See . FEATURE: : allow multiple sections with duplicate `username` but with different `password` values at `-auth.config` file. FEATURE: add ability to push internal metrics (e.g. metrics exposed at `/metrics` page) to the configured remote storage from all the VictoriaMetrics components. See . FEATURE: improve performance for heavy queries over big number of time series on systems with big number of CPU cores. See . Thanks to @zqyzyq for

FEATURE: improve performance for registering new time series in `indexdb` by up to 50%. Thanks to @ahfuzhang for . FEATURE: : add ability to specify tenantID in target labels. In this case metrics from the given target are routed to the given `tenant_id`. See and . FEATURE: : add service discovery for . See and . FEATURE: . Zoom in the graph by selecting the needed time range in the same way Grafana does. Hold `ctrl` (or `cmd` on MacOS) in order to move the graph to the left/right. Hold `ctrl` (or `cmd` on MacOS) and scroll up/down in order to zoom in/out the area under the cursor. See . BUGFIX: : fix potential panic in when top-level `vmselect` is configured with `-replicationFactor` bigger than 1. See . BUGFIX: : properly handle custom `endpoint` value in . It was ignored since because of a bug in the implementation of . See . BUGFIX: : add missing `metakubernetesingressclassname` meta-label for `role: ingress` service discovery in Kubernetes. See . BUGFIX: : allow stale responses from Consul service discovery (aka ) by default in the same way as Prometheus does. This should reduce load on Consul when discovering big number of targets. Stale responses can be disabled by specifying `allowstale: false` option in `consulsd_config`. See . BUGFIX: : : properly set `__meta_dockerswarm_container_label_` labels instead of `metadockerswarmtasklabel*` labels as Prometheus does. See . BUGFIX: : set `up` metric to `0` for partial scrapes in . Previously the `up` metric was set to `1` when at least a single metric has been scraped before the error. This aligns the behaviour of `vmselect` with Prometheus. BUGFIX: : restart all the scrape jobs during after `global` section is changed inside `-promscrape.config`. See . BUGFIX: : properly assume role with AWS ECS credentials. See . Thanks to @transacid for . BUGFIX: : do not split regex in into multiple lines if it contains groups. This fixes . BUGFIX: : return series from `q1` if `q2` doesn't return matching time series in the query `q1 ifnot q2`. Previously series from `q1` weren't returned in this case. BUGFIX: : properly show date picker at `Table` tab. See . BUGFIX: properly generate http redirects if `-http.pathPrefix` command-line flag is set. See . Released at 2023-08-12 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release SECURITY: upgrade Go builder from Go1.20.4 to Go1.21.0. SECURITY: upgrade base docker image (Alpine) from 3.18.2 to 3.18.3. See . BUGFIX: : properly apply `if` filters during . Previously the `if` filter could improperly work. See and . BUGFIX: : Properly form path to static assets in WEB UI if `http.pathPrefix` set. See . BUGFIX: : Properly set datasource query params. See . Thanks to @gsakun for . BUGFIX: : properly return empty slices instead of nil for `/api/v1/rules` and `/api/v1/alerts` API handlers. See . BUGFIX: : properly return empty slices instead of nil for `/api/v1/rules` for groups with present name but absent `rules`. See . Released at 2023-05-18 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release SECURITY: upgrade Go builder from Go1.20.3 to Go1.20.4. See . SECURITY: upgrade base docker image (alpine) from 3.17.3 to 3.18.0. See . SECURITY: serve `/robots.txt` content to disallow indexing of the exposed instances by search engines. See for details. Released at 2023-04-06 v1.79.x is a line of . It contains important up-to-date bugfixes. The

line will be supported for at least 12 months since release SECURITY: upgrade base docker image (alpine) from 3.17.2 to 3.17.3. See . SECURITY: upgrade Go builder from Go1.20.2 to Go1.20.3. See . BUGFIX: : fix CPU and memory usage spikes when files pointed by cannot be re-read. See . BUGFIX: prevent unexpected merges on start-up when `-storage.minFreeDiskSpaceBytes` is set. See . BUGFIX: verify response code when fetching configuration files via HTTP. See . Released at 2023-03-12 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release SECURITY: upgrade Go builder from Go1.20.1 to Go1.20.2. See . BUGFIX: fix a bug, which could lead to incomplete or empty results for heavy queries selecting tens of thousands of time series. See . BUGFIX: : properly take into account `-rpc.disableCompression` command-line flag at `vmstorage`. It was ignored since . See . BUGFIX: prevent from possible `SIGBUS` crash on ARM architectures (Raspberry Pi), which deny unaligned access to 8-byte words. Thanks to @oliverpool for narrowing down the issue and for . Released at 2023-02-27 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release BUGFIX: prevent from high CPU usage on the first UTC hour of the data. The issue has been introduced in when fixing . Released at 2023-02-24 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release SECURITY: upgrade base docker image (alpine) from 3.17.1 to 3.17.2. See . SECURITY: upgrade Go builder from Go1.20.0 to Go1.20.1. See . BUGFIX: properly parse timestamps in milliseconds when . Previously timestamps in milliseconds were mistakenly multiplied by 1000. Thanks to @Droxenator for the . Released at 2023-02-03 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release BUGFIX: fix a bug, which could prevent background merges for the previous partitions until restart if the storage didn't have enough disk space for final deduplication and down-sampling. BUGFIX: : update API version for to fix with missing `metaec2availabilityzoneid` attribute. BUGFIX: : fix panic on top-level vmselect nodes of when the `-replicationFactor` flag is set and request contains `trace` query parameter. See . BUGFIX: : : apply `filters` only to objects of the specified `role`. Previously filters were applied to all the objects, which could cause errors when different types of objects were used with filters that were not compatible with them. See . BUGFIX: : suppress all the scrape errors when `-promscrape.suppressScrapeErrors` is enabled. Previously some scrape errors were logged even if `-promscrape.suppressScrapeErrors` flag was set. BUGFIX: : consistently put the scrape url with scrape target labels to all error logs for failed scrapes. Previously some failed scrapes were logged without this information. BUGFIX: : properly parse `M` and `Mi` suffixes as `1e6` multipliers in `1M` and `1Mi` numeric constants. See . The issue has been introduced in . Released at 2023-01-10 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release BUGFIX: properly parse floating-point numbers without integer or fractional parts such as `.123` and `20.` during . See . BUGFIX: : properly parse durations with uppercase suffixes such as `10S`, `5MS`, `1W`, etc. See . BUGFIX: : : properly encode `filters` field. See BUGFIX: allow specifying values bigger than 2GiB to the following command-line flag values on 32-bit architectures (`386` and `arm`):

and `-remoteWrite.maxDiskUsagePerURL`. Previously values bigger than 2GiB were incorrectly truncated on these architectures. BUGFIX: : expose proper values for `vmdownsamplingpartitionsscheduled` and `vmdownsamplingpartitionsscheduledsizebytes` metrics, which were added at . See . BUGFIX: : do not re-use `host` and `device` fields from the previously parsed messages if these fields are missing in the currently parsed message. See . Released at 2022-12-11 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release SECURITY: update Go builder from v1.19.3 to v1.19.4. See . SECURITY: update base Docker image for VictoriaMetrics components from Alpine 3.16.2 to Alpine v3.17.0. See . BUGFIX: : fix the `The request did not have a subscription or a valid tenant level resource provider` error when discovering Azure targets with . See . BUGFIX: : properly discover GCE zones when `filter` option is set at . See . BUGFIX: : properly specify rule evaluation step during the . The `step` value was previously overriden by `-datasource.queryStep` command-line flag. BUGFIX: : properly return the error message from remote-write failures. Before, error was ignored and only `vmalertremotewriteerrors_total` was incremented. BUGFIX: : properly return an empty result from if the `offset` arg exceeds the number of inner time series. See . Released at 2022-11-10 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release Update note 1: : the `crlfEscape` becames obsolete starting from this release. It can be safely removed from alerting templates, since `\n` chars are properly escaped with other `*Escape` functions now. See and issue for details. SECURITY: update Go builder to v1.19.3. This fixes . See . BUGFIX: properly register new time series in per-day inverted index if they were ingested during the last 10 seconds of the day. See . Thanks to @lmarszal for the bugreport and for the . BUGFIX: properly accept without tags without the need to specify the trailing whitespace. See . BUGFIX: : properly merge buckets with identical `le` values, but with different string representation of these values when calculating and . For example, `httprequestdurationsecondsbucket{le="5"}` and `httprequestsdurationsecondsbucket{le="5.0"}`. Such buckets may be returned from distinct targets. Thanks to @647-coder for the . BUGFIX: : change severity level for log messages about failed attempts for sending data to remote storage from `error` to `warn`. The message for about all failed send attempts remains at `error` severity level. BUGFIX: : properly escape string passed to `quotesEscape` , so it can be safely embedded into JSON string. This makes obsolete the `crlfEscape` function. See and issue. BUGFIX: `vmselect`: expose missing metric `vmcachesizemaxbytes{type="promql/rollupResult"}` . This metric is used for monitoring rollup cache usage with the query `vmcachesizebytes{type="promql/rollupResult"} / vmcachesizemax_bytes{type="promql/rollupResult"}` in the same way as this is done for other cache types. Released at 2022-10-07 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release Update note 1: changes default value for command-line flag `-datasource.queryStep` from `0s` to `5m`. The change supposed to improve reliability of the rules evaluation when evaluation interval is lower than scraping interval. FEATURE: expose `vmagentremotewritequeues` metric and use it in alerting rules in order to improve the detection of remote storage connection saturation. See . BUGFIX: do not export stale metrics via after the staleness markers. Previously such metrics were exported with `NaN` values. this could break some setups. See . BUGFIX: : properly handle request paths ending with `/` such as

Previously `vmui` was dropping the traling `/`, which could prevent from using `vmui` via `vmauth`. See . BUGFIX: : properly encode query params for aws signed requests, use `%20` instead of `+` as api requires. See . BUGFIX: : properly calculate `rateoversum(m and . BUGFIX: : properly calculate `increase(m could return unexpectedly big results in this case. See and . BUGFIX: : ignore empty series when applying . It should improve queries with additional filters by value in expressions like `limit_offset(1,1, foo > 1)`. BUGFIX: : properly calculate when the lookbehind window contains only a single sample. Previously an empty result was incorrectly returned in this case. BUGFIX: : fix `RangeError: Maximum call stack size exceeded` error when the query returns too many data points at `Table` view. See . BUGFIX: : re-evaluate annotations per each alert evaluation. Previously, annotations were evaluated only on alert's value change. This could result in stale annotations in some cases described in . BUGFIX: prevent from excessive CPU usage when the storage enters . The previous fix in wasn't complete. BUGFIX: : change default value for command-line flag `-datasource.queryStep` from `0s` to `5m`. Param `step` is added by vmalert to every rule evaluation request sent to datasource. Before this change, `step` was equal to group's evaluation interval by default. Param `step` for instant queries defines how far VM can look back for the last written data point. The change supposed to improve reliability of the rules evaluation when evaluation interval is lower than scraping interval. BUGFIX: properly calculate `vmrowsscannedperquery` histogram exported at `/metrics` page of `vmselect` and single-node VictoriaMetrics. Previously it could return misleadingly high numbers for , which scan only a few samples on the provided lookbehind window in square brackets. For example, `increase(m[1d])` always scans only 2 rows (aka `raw samples`) per each returned time series. Released at 2022-08-30 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release SECURITY: : do not expose `-remoteWrite.url`, `-remoteRead.url` and `-datasource.url` command-line flag values in logs and at `http://vmalert:8880/flags` page by default, since they may contain sensitive data such as auth keys. This aligns `vmalert` behaviour with , which doesn't expose `-remoteWrite.url` command-line flag value in logs and at `http://vmagent:8429/flags` page by default. Specify `-remoteWrite.showURL`, `-remoteRead.showURL` and `-datasource.showURL` command-line flags for showing values for the corresponding `-.url` flags in logs. Thanks to @mble for . SECURITY: upgrade base docker image (alpine) from 3.16.1 to 3.16.2. See . BUGFIX: prevent from excess CPU usage when the storage enters . BUGFIX: improve performance for requests to and when the filter in the `match. See and issues. BUGFIX: increase the default limit on the number of concurrent merges for small parts from 8 to 16. This should help resolving potential issues with heavy data ingestion. See from @lukepalmer . BUGFIX: : fix panic when incorrect arg is passed as `phi` into function. See . Released at 2022-08-08 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release BUGFIX: : fix potential panic in when top-level `vmselect` is configured with `-replicationFactor` bigger than 1. See . BUGFIX: : properly handle custom `endpoint` value in . It was ignored since because of a bug in the implementation of . BUGFIX: : add missing `metakubernetesingressclassname` meta-label for `role: ingress` service discovery in Kubernetes. See . BUGFIX: : allow stale responses from Consul service discovery (aka ) by default in the same way as Prometheus

This should reduce load on Consul when discovering big number of targets. Stale responses can be disabled by specifying `allowstale: false` option in `consulsd_config`. See . BUGFIX: : : properly set `__meta_dockerswarm_container_label_` labels instead of `metadockerswarmtasklabel*` labels as Prometheus does. See . BUGFIX: : set `up` metric to `0` for partial scrapes in . Previously the `up` metric was set to `1` when at least a single metric has been scraped before the error. This aligns the behaviour of `vmselect` with Prometheus. BUGFIX: : restart all the scrape jobs during after `global` section is changed inside `-promscrape.config`. See . BUGFIX: : properly assume role with AWS ECS credentials. See . Thanks to @transacid for . BUGFIX: : do not split regex in into multiple lines if it contains groups. This fixes . BUGFIX: : return series from `q1` if `q2` doesn't return matching time series in the query `q1 ifnot q2`. Previously series from `q1` weren't returned in this case. BUGFIX: : properly show date picker at `Table` tab. See . BUGFIX: properly generate http redirects if `-http.pathPrefix` command-line flag is set. See . Released at 2022-08-02 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release SECURITY: upgrade base docker image (alpine) from 3.16.0 to 3.16.1 . See . Released at 2022-07-14 v1.79.x is a line of . It contains important up-to-date bugfixes. The v1.79.x line will be supported for at least 12 months since release Update note 1: this release introduces backwards-incompatible changes to `vmpartialresultstotal` metric by changing its labels to be consistent with `vmrequests_total` metric. If you use alerting rules or Grafana dashboards, which rely on this metric, then they must be updated. The official dashboards for VictoriaMetrics don't use this metric. Update note 2: adds `/vmalert/` prefix to according to . This may affect `vmalert` instances with non-empty `-http.pathPrefix` command-line flag. After the update, configuring this flag is no longer needed. Here's . Update note 3: this release introduces backwards-incompatible changes to communication protocol between `vmselect` and `vmstorage` nodes in cluster version of VictoriaMetrics because of added ability to query `vmselect` data from other `vmselect` nodes - see , so read requests to `vmselect` will fail until the upgrade is complete. These errors will stop after all the `vmselect` and `vmstorage` nodes are updated to the new release. It is safe to downgrade to previous releases at any time. Update note 4: this release removes support of deprecated in param `extrafilterlabels` from groups definition. This deprecated param was replaced with . Update note 5: this release changes naming for published linux binaries at . Now names for binaries for all the supported platforms match the following template - `$(APP_NAME)-$(GOOS)-$(GOARCH)-$(VERSION).tar.gz`. For example, `victoria-metrics-linux-amd64-v1.79.0.tar.gz`. Previously linux binaries didn't have `$(GOOS)` part, e.g. they had the name `victoria-metrics-amd64-v1.79.0.tar.gz`. Please update automation scripts for upgrading VictoriaMetrics releases according to this change. FEATURE: : add service discovery mechanism. It allows discovering Virtual Machines at . See . FEATURE: : deprecate alert's status link `/api/v1/<groupID>/<alertID>/status` in favour of `api/v1/alert?groupid=<groupid>&alertid=<alertid>"`. The old alert's status link is still supported, but will be removed in future releases. See . FEATURE: : add support for querying lower-level `vmselect` nodes from upper-level `vmselect` nodes. This makes possible to build multi-level cluster setups for global querying view and HA purposes without the need to use . See and . FEATURE: add `-search.setLookbackToStep` command-line flag, which enables InfluxDB-like gap filling during querying. See for details. FEATURE: : add an UI for

It can be enabled by clicking `trace query` checkbox and re-running the query. See . FEATURE: : add `-remoteWrite.headers` command-line option for specifying optional HTTP headers to send to the configured `-remoteWrite.url`. For example, `-remoteWrite.headers='Foo:Bar^^Baz:x'` would send `Foo: Bar` and `Baz: x` HTTP headers with every request to `-remoteWrite.url`. See . FEATURE: : push per-target `scrapesampleslimit` metric to the configured `-remoteWrite.url` if `sample_limit` option is set for this target in . See . FEATURE: : attach node-level labels to targets if `attach_metadata: {"node": true}` is set for `role: endpoints` and `role: endpointslice`. This is a feature backport from Prometheus 2.37 - see . FEATURE: : add ability to specify additional HTTP headers to send to scrape targets via `headers` section in `scrape_configs`. This can be used when the scrape target requires custom authorization and authentication like in . For example, the following config instructs sending `My-Auth: top-secret` and `TenantID: FooBar` headers with each request to `http://host123:8080/metrics`: ```yaml scrape_configs: job_name: foo headers: "My-Auth: top-secret" "TenantID: FooBar" static_configs: targets: ["host123:8080"] ``` FEATURE: add ability to pass `limit` query arg to `api/v1/series` endpoint. This can be used if only a sample of up to `limit` series must be returned from the endpoint. See and . FEATURE: : show timestamps in query traces in human-readable format (aka `RFC3339` in UTC timezone) instead of milliseconds since Unix epoch. For example, `2022-06-27T10:32:54.506Z` instead of `1656325974506`. This improves traces' readability. FEATURE: improve performance of requests, which return big number of time series. FEATURE: : improve query performance when . FEATURE: : properly handle partial counter resets in function. Now `remove_resets(sum(m))` should returns the expected increasing line when some time series matching `m` disappear on the selected time range. Previously such a query would return horizontal line after the disappeared series. FEATURE: expose `vmnextretention_seconds` metric at `http://victoriametrics:8428/metrics`, which shows the number of seconds left until the next `indexdb` rotation. Thanks to @guidao for the . FEATURE: expose additional histogram metrics at `http://victoriametrics:8428/metrics`, which may help understanding query workload: `vmrowsreadperquery` - the number of raw samples read per query. `vmrowsscannedperquery` - the number of raw samples scanned per query. This number can exceed `vmrowsreadperquery` if `step` query arg passed to is smaller than the lookbehind window set in square brackets of . For example, if `increase(some_metric for details. `vmrowsreadperseries` - the number of raw samples read per queried series. `vmseriesreadperquery` - the number of series read per query. FEATURE: publish binaries for FreeBSD and OpenBSD at . FEATURE: : allow selecting the needed columns at table view. This functionaly may help when the selected time series contain many different labels. See and . BUGFIX: consistently name binaries at in the form `$(APP_NAME)-$(GOOS)-$(GOARCH)-$(VERSION).tar.gz`. For example, `victoria-metrics-linux-amd64-v1.79.0.tar.gz`. Previously the `$(GOOS)` part was missing in binaries for Linux. BUGFIX: : allow using `name` label (aka ) in alerting annotations. For example: ```sh {{ $labels.name }}: Too high connection number for "{{ $labels.instance }} ``` BUGFIX: limit max memory occupied by the cache, which stores parsed regular expressions. Previously too long regular expressions passed in could result in big amounts of used memory (e.g. multiple of gigabytes). Now the max cache size for parsed regexps is limited to a a few megabytes. BUGFIX: : properly handle partial counter resets when calculating , and functions. Previously these functions could return zero values after partial counter resets until the counter increases to the last value before partial counter reset. See . BUGFIX: : properly calculate over Prometheus buckets with unexpected values. See . BUGFIX: : properly evaluate function over time range covering time zone offset switches. See

BUGFIX: : properly add service-level labels (`__meta_kubernetes_service_`) to discovered targets for `role: endpointslice` in . Previously these labels were missing. See . BUGFIX: : make sure that are generated with the actual timestamp when unsuccessful scrape occurs. This should prevent from possible time series overlap on scrape target restart in dynmaic envirnoments such as Kubernetes. BUGFIX: : properly reload changed `-promscrape.config` file when `-promscrape.configCheckInterval` option is set. The changed config file wasn't reloaded in this case since . See . Thanks to @ttyv for the fix. BUGFIX: : properly set `Host` header during target scraping when `proxy_url` is set to http proxy. Previously the `Host` header was set to the proxy hostname instead of the target hostname. See . BUGFIX: : assume that the response is complete if `-search.denyPartialResponse` is enabled and up to `-replicationFactor - 1` `vmstorage` nodes are unavailable. See . BUGFIX: : update `vmpartialresultstotal` metric labels to be consistent with `vmrequests_total` labels. BUGFIX: accept tags without values when reading data in . Thanks to @PerGon for the . BUGFIX: : properly pass the end of the selected time range to `time` query arg to when displaying the requested data in JSON and table views. Previously the `time` query arg wasn't set, so `/api/v1/query` was always returning query results for the current time regardless of the selected time range. See . BUGFIX: : allow clicking on the suggestion from autocomplete list. See . BUGFIX: : apply the selected time range in date picker only after clicking the `Apply` button. See . Released at 2022-07-08 Update notes: it is recommended after the upgrade from in order to immediately fix the issue for newly ingested data. Otherwise the issue may exist for newly ingested data for up to a day after the upgrade. BUGFIX: properly register time series in per-day inverted index. Previously some series could miss registration in the per-day inverted index. This could result in missing time series during querying. The issue has been introduced in . See and issues. Released at 2022-06-20 Warning (2022-07-03): VictoriaMetrics v1.78.0 contains a bug, which may result in missing time series during queries. It is recommended upgrading to , which fixes the bug. Update notes: this release introduces backwards-incompatible changes to communication protocol between `vmselect` and `vmstorage` nodes in cluster version of VictoriaMetrics because of added , so read requests to `vmselect` will fail until the upgrade is complete. These errors will stop after all the `vmselect` and `vmstorage` nodes are updated to the new release. It is safe to downgrade to previous releases. SECURITY: add `-flagsAuthKey` command-line flag for protecting `/flags` endpoint from unauthorized access. Though this endpoint already hides values for command-line flags with `key` and `password` substrings in their names, other sensitive information could be exposed there. See . FEATURE: support query tracing, which allows determining bottlenecks during query processing. See and . FEATURE: : add `cardinality` tab, which can help identifying the source of and issues. See and feature requests and . FEATURE: : small UX enhancements according to . FEATURE: allow overriding default limits for in-memory cache `indexdb/tagFilters` via flag `-storage.cacheSizeIndexDBTagFilters`. See . FEATURE: add support of `lowercase` and `uppercase` relabeling actions in the same way as . See . FEATURE: add ability to change the `indexdb` rotation timezone offset via `-retentionTimezoneOffset` command-line flag. Previously it was performed at 4am UTC time. This could lead to performance degradation in the middle of the day when VictoriaMetrics runs in time zones located too far from UTC. Thanks to @cnych for

FEATURE: limit the number of background merge threads on systems with big number of CPU cores by default. This increases the max size of parts, which can be created during background merge when `-storageDataPath` directory has limited free disk space. This may improve on-disk data compression efficiency and query performance. The limits can be tuned if needed with `-smallMergeConcurrency` and `-bigMergeConcurrency` command-line flags. See . FEATURE: accept optional `limit` query arg at and for limiting the numbef of sample entries returned from these endpoints. See . FEATURE: optimize performance for and endpoints when `match. FEATURE: : support `limit` param per-group for limiting number of produced samples per each rule. Thanks to @Howie59 for . FEATURE: : remove dependency on Internet access at . Previously the functionality and the layout of these pages was broken without Internet access. See . FEATURE: : send alerts to the configured notifiers in parallel. Previously alerts were sent to notifiers sequentially. This could delay sending pending alerts when notifier blocks on the currently sent alert. FEATURE: : implement the `http://vmagent:8429/service-discovery` page in the same way as Prometheus does. This page shows the original labels for all the discovered targets alongside the resulting labels after the relabeling. This simplifies service discovery debugging. FEATURE: : remove dependency on Internet access at `http://vmagent:8429/targets` page. Previously the page layout was broken without Internet access. See . FEATURE: : add support for `kubeconfig_file` option at . It may be useful for Kubernetes monitoring by `vmagent` outside Kubernetes cluster. See . FEATURE: : expose `/api/v1/status/config` endpoint in the same way as Prometheus does. See . FEATURE: : add `-promscrape.suppressScrapeErrorsDelay` command-line flag, which can be used for delaying and aggregating the logging of per-target scrape errors. This may reduce the amounts of logs when `vmagent` scrapes many unreliable targets. See . Thanks to @jelmd for . FEATURE: : add `-promscrape.cluster.name` command-line flag, which allows proper data de-duplication when the same target is scraped from multiple . See . FEATURE: : add `action: graphite` relabeling rules optimized for extracting labels from Graphite-style metric names. See and . FEATURE: : expose `vmdownsamplingpartitionsscheduled` and `vmdownsamplingpartitionsscheduledsizebytes` metrics, which can be used for tracking the progress of initial for historical data. See . FEATURE: : do not spend up to 5 seconds when trying to connect to unavailable `vmstorage` nodes. This should improve query latency when some of `vmstorage` nodes aren't available. Expose `vmtcpdialeraddr_available{addr="..."}` metric at `http://vmselect:8481/metrics` for determining whether the given `addr` is available for establishing new connections. See . FEATURE: : add `-vmstorageDialTimeout` command-line flags to `vmselect` and `vminsert` for tuning the maximum duration for connection estabilishing to `vmstorage` nodes. This should help resolving . BUGFIX: support for data ingestion in from legacy clients / agents. See . Thanks to @elProxy for the fix. BUGFIX: : do not expose `vmpromscrapeservicediscoverydurationsecondsbucket` metric for unused service discovery types. This reduces the number of metrics exported at `http://vmagent:8429/metrics`. See . BUGFIX: : properly apply `alertrelabelconfigs` relabeling rules to `-notifier.config` according to . Thanks to @spectvtor for . BUGFIX: : properly add `Content-Encoding: snappy`, `Content-Type: application/x-protobuf` and `X-Prometheus-Remote-Write-Version: 0.1.0` request headers when `vmalert` sends to `-remoteWrite.url`. These headers are needed by some remote storage systems in order to properly decode snappy-encoded request body. See and pull requests. Thanks to @manji-0 for th fix. BUGFIX: deny when the storage enters read-only mode, e.g. when free disk space becomes lower than `-storage.minFreeDiskSpaceBytes`. Background merge needs additional disk space, so it could result in `no space left on device` errors. See . BUGFIX: : properly apply the selected time range when auto-refresh is enabled. See

BUGFIX: : properly update the url with vmui state when new query is entered. See . BUGFIX: : properly calculate sample timestamps when `moving()` functions such as are applied over . BUGFIX: limit the `end` query arg value to `+2 days` in the future at `/api/v1/` endpoints, because VictoriaMetrics doesn't allow storing samples with timestamps bigger than +2 days in the future. This should help resolving . BUGFIX: properly register time series in per-day inverted index during the first hour after `indexdb` rotation. Previously this could lead to missing time series during querying if these time series stopped receiving new samples during the first hour after `indexdb` rotation. See . BUGFIX: do not register new series when `-storage.maxHourlySeries` or `-storage.maxDailySeries` limits were reached. Previously samples for new series weren't added to the database when the was reached, but series were still registered in the inverted index (aka `indexdb`). This could lead to unbound `indexdb` growth during . Released at 2022-05-21 FEATURE: : support for rules annotations. The path to the template files can be specified via `-rule.templates` flag. See more about this feature . Thanks to @AndrewChubatiuk for . See . FEATURE: : expose `vmalertiterationinterval_seconds` metric at `http://vmalert:8880/metrics`. This metric shows the configured per-group evaluation interval. See . FEATURE: : add `influx-prometheus-mode` command-line flag, which allows to restore the original time series written from Prometheus into InfluxDB during data migration from InfluxDB to VictoriaMetrics. See . Thanks to @mback2k for . FEATURE: : add ability to specify AWS service name when issuing requests to AWS api. See . Thanks to @transacid for . BUGFIX: : fix a bug, which could lead to incomplete discovery of scrape targets in Kubernetes (aka `kubernetessdconfig`). the bug has been introduced in . BUGFIX: : support `scalar` result type in response. See . BUGFIX: : support strings in `humanize.` template function in the same way as Prometheus does. See . BUGFIX: : proxy `/rules` requests to vmalert from Grafana's alerting UI. This removes errors in Grafana's UI for Grafana versions older than `8.5.`. See BUGFIX: : do not add `/api/v1/query` suffix to `-datasource.url` if `-remoteRead.disablePathAppend` command-line flag is set. Previously this flag was applied only to `-remoteRead.url`, which could confuse users. BUGFIX: : prevent from possible resource leak on config update, which could lead to the slowdown of `vmalert` over time. See . BUGFIX: : do not return values from function if the original time series has no values at the selected timestamps. BUGFIX: : limit the number of concurrently established connections from vmselect to vmstorage. This should prevent from potentially high spikes in the number of established connections after temporary slowdown in connection handshake procedure between vmselect and vmstorage because of spikes in workload. See . BUGFIX: : fix build for Solaris / SmartOS. See . Released at 2022-05-07 FEATURE: : add ability to specify filters for Availability Zones in via `az_filters` section. This section can contain AZ-specific set of filters in the same way as the existing `filters` section, which is used for filtering EC2 instances. The list of supported AZ-specific filters is available . FEATURE: : expose `vmagentremotewriteglobalrowspushedbeforerelabeltotal` and `vmagentremotewriterowspushedafterrelabel_total` metrics at `http://vmagent:8429/metrics`, which can be used for monitoring the rate of rows (aka samples) pushed to remote storage before and after the relabeling via `-remoteWrite.relabelConfig` and `-remoteWrite.urlRelabelConfig`. See for details. FEATURE: : add ability to skip `db` label during InfluxDB data import when `influx-skip-database-label` option is used. See . Thanks to @mback2k . BUGFIX: : properly process passwords and secrets specified in the file pointed by `-promscrape.config` command-line

All the passwords and secrets were mistakenly replaced with `<secret>` string in `v1.77.0`. See and . BUGFIX: : rename `vmagentremotewriteratelimitreachedtotal` metric to `vmagentremotewriteratelimitreachedtotal`, so its name is consistent with the rest of `vmagentremotewrite_` metrics. BUGFIX: : rename `promscrapestalesamplescreatedtotal` metric to `vmpromscrapestalesamplescreatedtotal`, so its name is consistent with the rest of `vmpromscrape_` metrics. BUGFIX: : properly import InfluxDB measurements if they contain `db` tag. Previously this could result in incomplete import of measurmenet tags. See . Thanks to @mback2k for the bugfix. BUGFIX: : do not reset the selected relative time range when entering new query. See . BUGFIX: : disallow writing backups to `-storageDataPath` directory, since this directory is managed solely by VictoriaMetrics or `vmstorage`. Other apps shouldn't write into this directory. See . BUGFIX: do not allow setting `-retentionPeriod` smaller than one day, since VictoriaMetrics doesn't support properly such small retention periods. See . BUGFIX: : do not drop samples routed to readonly `vmstorage` nodes if `-dropSamplesOnOverload` command-line flag is set. Try re-routing them to healthy `vmstorage` nodes instead. See . Released at 2022-05-05 FEATURE: : add support for sending data to remote storage with AWS sigv4 authorization. See . FEATURE: : allow filtering targets by target url and by target labels with on `http://vmagent:8429/targets` page. This may be useful when `vmagent` scrapes big number of targets. See . FEATURE: : reduce `-promscrape.config` reload duration when the config contains big number of jobs (aka sections) and only a few of them are changed. Previously all the jobs were restarted. Now only the jobs with changed configs are restarted. This should reduce the probability of data miss because of slow config reload. See . FEATURE: : improve service discovery speed for big number of scrape targets. This should help when `vmagent` discovers big number of targets (e.g. thousands) in Kubernetes cluster. The service discovery speed now should scale with the number of CPU cores available to `vmagent`. FEATURE: : add ability to attach node-level labels and annotations to discovered Kubernetes pod targets in the same way as Prometheus 2.35 does. See and . FEATURE: : add support for `tlsconfig` and `proxyurl` options at `oauth2` section in the same way as Prometheus does. See . FEATURE: : add support for `minversion` option at `tlsconfig` section in the same way as Prometheus does. See . FEATURE: : expose `vmagentremotewriteratelimit` metric at `http://vmagent:8429/metrics`, which can be used for alerting rules such as `rate(vmagentremotewriteconnbyteswrittentotal) / vmagentremotewriterate_limit > 0.8` when `-remoteWrite.rateLimit` command-line flag is set. See . FEATURE: : add support for DNS-based discovery for notifiers in the same way as Prometheus does (aka `dnssdconfigs`). See and . FEATURE: : add `-replay.disableProgressBar` command-line flag, which allows disabling progressbar in . See . FEATURE: allow specifying TLS cipher suites for incoming https requests via `-tlsCipherSuites` command-line flag. See . FEATURE: allow specifying TLS cipher suites for mTLS connections between cluster components via `-cluster.tlsCipherSuites` command-line flag. See . FEATURE: vmstorage: add `-snapshotsMaxAge` command-line flag for automatic removal of snapshots older than the given age. FEATURE: : show an empty graph on the selected time range when there is no data on it. Previously `No data to show` placeholder was shown instead of the graph in this case. This prevented from zooming and scrolling of such a graph. FEATURE: : show the selected `last N minutes/hours/days` in the top right corner. Previously the `start - end` duration was shown instead, which could be hard to interpret. See . FEATURE: : execute the query when `enter` button is pressed in the same way as Prometheus does. Multi-line query can be entered by pressing `shift-enter` in the query input

FEATURE: expose `vmindexdbitemsaddedtotal` and `vmindexdbitemsaddedsizebytestotal` counters at `/metrics` page, which can be used for monitoring the rate for addition of new entries in `indexdb` (aka `inverted index`) alongside the total size in bytes for the added entries. See . FEATURE: : show data pocessing speed during data migration. FEATURE: : add `dropcommonlabels()` function, which drops common `label="name"` pairs from the passed time series. See . FEATURE: : add `tlastchangeover_time(m. FEATURE: leave the last raw sample per each `-dedup.minScrapeInterval` discrete interval when the is enabled. This aligns better with the comparing to the previous behaviour when the first sample per each `-dedup.minScrapeInterval` was left. FEATURE: : add ability to disable peer TLS certificate verification with `-cluster.tlsInsecureSkipVerify` command-line flag. See for details. See . FEATURE: add a handler for `/api/v1/status/buildinfo` endpoint, which is used by Grafana starting from v8.5.0 . See . FEATURE: add ability to proxy alerting API requests from Grafana to vmalert by passing `-vmalert.proxyURL` command-line flag to single-node VictoriaMetrics or to `vmselect` at cluster version of VictoriaMetrics. See . BUGFIX: export staleness markers as `null` values from . Previously they were exported as `NaN` values. This could break the exported JSON parsing, since `NaN` values aren't supported by . BUGFIX: : close `vmselect->vmstorage` connections if they were idle for more than 30 seconds. Expose `vmtcpdialerconns_idle` metric at `http://vmselect:8481/metrics` with the number of idle connections to `vmstorage`. See . BUGFIX: : return non-zero exit code on error. This allows handling `vmctl` errors in shell scripts. Previously `vmctl` was returning 0 exit code on error. See . BUGFIX: : prevent from indefinite hang on `Ctrl+C`. See . BUGFIX: : properly show `scrapetimeout` and `scrapeinterval` options at `http://vmagent:8429/config` page. Previously these options weren't displayed even if they were set in `-promscrape.config`. BUGFIX: : handle non-standard http redirect status codes, which may be returned by scrape targets, in the same way as Prometheus does. See . BUGFIX: : skip template execution during rules' validation. This should prevent from `error evaluating annotation template` errors when some template functions expect non-empty args. See . BUGFIX: : fixed truncating alerts expression in table, updated table cell layout. See . BUGFIX: : properly handle joins on time series filtered by values. For example, `kube_pod_container_resource_requests{resource="cpu"} on (namespace,pod) groupleft() (kubepodstatusphase{phase=~"Pending|Running"}==1)`. This query could result in `duplicate time series on the right side` error even if `==1` filter leaves only a single time series per `(namespace,pod)` labels. Now such query is properly executed. BUGFIX: : properly handle `scalar default vector`, `scalar if vector` and `scalar ifnot vector` queries. Previously such queries could return unexpected results from the `vector` part. BUGFIX: : take into account `indexdb` when calculating disk space usage. See . Released at 2022-04-12 Update notes: this release introduces backwards-incompatible changes to communication protocol between `vmselect` and `vmstorage` nodes in cluster version of VictoriaMetrics, so read requests to `vmselect` will fail until the upgrade is complete. These errors will stop after all the `vmselect` and `vmstorage` nodes are updated to the new release. It is safe to downgrade to previous releases. FEATURE: : add support for `alertrelabelconfigs` option at `-notifier.config`. This option allows configuring relabeling rules for alerts before sending them to configured notifiers. See for details. FEATURE: : allow passing StatefulSet pod names to `-promscrape.cluster.memberNum` command-line flag. In this case the member number is automatically extracted from the pod name, which must end with the number in the range `0 ... promscrape.cluster.membersCount-1`. For example, `vmagent-0`, `vmagent-1`, etc. See and . BUGFIX: : properly propagate limits at `-search.max` command-line flags from `vminsert` to `vmstorage`. The limits are `-search.maxUniqueTimeseries`, `-search.maxSeries`, `-search.maxFederateSeries`, `-search.maxExportSeries`,

and `-search.maxTSDBStatusSeries`. They weren't propagated to `vmstorage` because of the bug. These limits were introduced in . See . BUGFIX: fix goroutine leak and possible deadlock when importing invalid data via . See . BUGFIX: : properly calculate function. Previously it could return empty results if there were no original samples in some parts of the selected time range. BUGFIX: : allow overriding built-in function names inside . For example, `WITH (sum(a,b) = a + b + 1) sum(x,y)` now expands into `x + y + 1`. Previously such a query would fail with `cannot use reserved name` error. See . BUGFIX: : properly display values greater than 1000 on Y axis. See . Released at 2022-04-07 Update notes: this release introduces backwards-incompatible changes to communication protocol between `vmselect` and `vmstorage` nodes in cluster version of VictoriaMetrics, so read requests to `vmselect` will fail until the upgrade is complete. These errors will stop after all the `vmselect` and `vmstorage` nodes are updated to the new release. It is safe to downgrade to previous releases. FEATURE: : add ability to verify files obtained via . See and . FEATURE: : add pre-defined dashboards for per-job CPU usage, memory usage and disk IO usage. See for details. FEATURE: : improve compatibility with . See . FEATURE: : add `-datasource.disableKeepAlive` command-line flag, which can be used for disabling to datasources. This option can be useful for distributing load among multiple datasources behind TCP proxy such as . FEATURE: : reduce memory usage by up to 50% for `vminsert` and `vmstorage` under high ingestion rate. FEATURE: : Allow to read `-ratelimit.config` file from URL. Also add `-ratelimit.configCheckInterval` command-line option. See . FEATURE: add the following command-line flags, which can be used for fine-grained limiting of CPU and memory usage during various API calls: `-search.maxFederateSeries` for limiting the number of time series, which can be returned from . `-search.maxExportSeries` for limiting the number of time series, which can be returned from . `-search.maxSeries` for limiting the number of time series, which can be returned from . `-search.maxTSDBStatusSeries` for limiting the number of time series, which can be scanned during the request to . `-search.maxGraphiteSeries` for limiting the number of time series, which can be scanned during the request to . Previously the `-search.maxUniqueTimeseries` command-line flag was used as a global limit for all these APIs. Now the `-search.maxUniqueTimeseries` is used only for limiting the number of time series, which can be scanned during requests to and . When using , these command-line flags (including `-search.maxUniqueTimeseries`) must be passed to `vmselect` instead of `vmstorage`. BUGFIX: and : reduce the probability of `TLS handshake error from XX.XX.XX.XX: EOF` errors when `-remoteWrite.url` points to HTTPS url at `vmauth`. See . BUGFIX: return `Content-Type: text/html` response header when requesting `/` HTTP path at VictoriaMetrics components. Previously `text/plain` response header was returned, which could lead to broken page formatting. See . BUGFIX: : accept floating-point values for query arg, since some clients send floating-point values instead of integer values for this arg. Released at 2022-03-28 BUGFIX: update base image for VictoriaMetrics from `alpine-3.15.0` to `alpine-3.15.2`. This fixes . See . Released at 2022-03-18 Update notes: release contains breaking change to vmalert's API introduced in . It replaces the `api/v1/groups` API handler with `api/v1/rules` handler in order to become compatible with . See other changes introduced to vmalert . FEATURE: : add support for mTLS communications between cluster components. See and . FEATURE: : add ability to use OAuth2 for `-datasource.url`, `-notifier.url` and

See the corresponding command-line flags containing `oauth2` in their names . FEATURE: : add ability to use Bearer Token for `-notifier.url` via `-notifier.bearerToken` and `-notifier.bearerTokenFile` command-line flags. See . FEATURE: : add `sortByLabel` template function in order to be consistent with Prometheus. See for more details. FEATURE: : improve compliance with . FEATURE: : add `-rule.resendDelay` command-line flag, which specifies the minumum amount of time to wait before resending an alert to Alertmanager (e.g. this is equivalent to `-rules.alert.resend-delay` option from Prometheus. See . FEATURE: : transparently treat `Authorization: Token ...` request headers as `Authorization: Bearer ...` request headers. This allows sending requests to `vmauth` from InfluxDB clients. See . Thanks to @dcircelli for the pull request. FEATURE: do not log trivial network errors such as `broken pipe` and `connection reset by peer`. This error could occur when writing data to the client, which closes the connection to VictoriaMetrics due to request timeout or similar reason. See . BUGFIX: : return an additional point after `until` timestamp in the same way as Graphite does. Previously VictoriaMetrics didn't return this point, which could result in missing last point on the graph. BUGFIX: properly locate series with the given `name` and without the given `label` when using the `name{label=~"foo|"}` series selector. Previously such series could be skipped. See . Thanks to @jduncan0000 for discovering and fixing the issue. BUGFIX: properly free up memory occupied by deleted cache entries for the following caches: `indexdb/dataBlocks`, `indexdb/indexBlocks`, `storage/indexBlocks`. This should reduce the increased memory usage starting from v1.73.0. See and issue. BUGFIX: reduce the interval for checking for free disk space from 30 seconds to 1 second. This should reduce the probability of `no space left on device` panics when `-storage.minFreeDiskSpaceBytes` is set to too low values. See . BUGFIX: : prevent from panic at vmagent when importing a time series with big number of samples. See . Thanks to @bleedfish for discovering and fixing the issue. Released at 2022-03-03 Update notes: In this release VictoriaMetrics may use some extra memory due to issues and . These issues were addressed in , so we recommend updating straight to it. FEATURE: add support for conditional relabeling via `if` filter. The `if` filter can contain arbitrary . For example, the following rule drops targets matching `foo{bar="baz"}` series selector: ```yaml action: drop if: 'foo{bar="baz"}' ``` This rule is equivalent to less clear traditional one: ```yaml action: drop sourcelabels: [name_, bar] regex: 'foo;baz' ``` See and for more details. FEATURE: reduce memory usage for various caches under . FEATURE: : re-use Kafka client when pushing data from to Kafka. Previously a separate Kafka client was created per each tenant. This could lead to increased load on Kafka. See . FEATURE: improve performance when registering new time series. See . Thanks to @ahfuzhang . BUGFIX: return the proper number of datapoints from `moving()` functions such as `movingAverage()` in . Previously these functions could return too big number of samples if is explicitly passed to `/render` API. BUGFIX: properly handle containing a filter for multiple metric names plus a negative filter. For example, `{name=~"foo|bar",job!="baz"}` . Previously VictoriaMetrics could return series with `foo` or `bar` names and with `job="baz"`. See . BUGFIX: : properly parse JWT tokens if they are encoded with . Released at 2022-02-22 Update notes: In this release VictoriaMetrics may use some extra memory due to issues and . These issues were addressed in , so we recommend updating straight to

FEATURE: allow overriding default limits for the following in-memory caches, which usually occupy the most memory: `storage/tsid` - the cache speeds up lookups of internal metric ids by `metric_name{labels...}` during data ingestion. The size for this cache can be tuned with `-storage.cacheSizeStorageTSID` command-line flag. `indexdb/dataBlocks` - the cache speeds up data lookups in `<-storageDataPath>/indexdb` files. The size for this cache can be tuned with `-storage.cacheSizeIndexDBDataBlocks` command-line flag. `indexdb/indexBlocks` - the cache speeds up index lookups in `<-storageDataPath>/indexdb` files. The size for this cache can be tuned with `-storage.cacheSizeIndexDBIndexBlocks` command-line flag. See also . See . FEATURE: add `-influxDBLabel` command-line flag for overriding `db` label name for the data . Thanks to @johnatannvmd for . FEATURE: return `X-Influxdb-Version` HTTP header in responses to . This is needed for some InfluxDB clients. See and . BUGFIX: reduce memory usage during the first three hours after the upgrade from versions older than v1.73.0. The memory usage spike was related to the need of in-memory caches' re-population after the upgrade because of the fix for . Now cache size limits are reduced in order to occupy less memory during the upgrade. BUGFIX: fix a bug, which could significantly slow down requests to `/api/v1/labels` and `/api/v1/label/<label_name>/values`. These APIs are used by Grafana for auto-completion of label names and label values. See . BUGFIX: vmalert: add support for `$externalLabels` and `$externalURL` template vars in the same way as Prometheus does. See . BUGFIX: vmalert: make sure notifiers are discovered during initialization if they are configured via `consulsdconfigs`. Previously they could be discovered in 30 seconds (the default value for `-promscrape.consulSDCheckInterval` command-line flag) after the initialization. See . BUGFIX: update default value for `-promscrape.fileSDCheckInterval`, so it matches default duration used by Prometheus for checking for updates in `filesdconfigs`. See . Thanks to @corporate-gadfly for the fix. BUGFIX: : do not return partial responses from `vmselect` if at least a single `vmstorage` node was reachable and returned an app-level error. Such errors are usually related to cluster mis-configuration, so they must be returned to the caller instead of being masked by . Partial responses can be returned only if some of `vmstorage` nodes are unreachable during the query. This may help the following issues: , . Released at 2022-02-14 Update notes: In this release VictoriaMetrics may use some extra memory described in issues and . These issues were addressed in , so we recommend updating straight to it. FEATURE: publish VictoriaMetrics binaries for MacOS amd64 and MacOS arm64 (aka MacBook M1) at . See and . FEATURE: reduce CPU and disk IO usage during `indexdb` rotation once per `-retentionPeriod`. See . FEATURE: : add `-dropSamplesOnOverload` command-line flag for `vminsert`. If this flag is set, then `vminsert` drops incoming data if the destination `vmstorage` is temporarily unavailable or cannot keep up with the ingestion rate. The number of dropped rows can be via `vmrpcrowsdroppedonoverloadtotal` metric at `vminsert`. FEATURE: : improve re-routing logic, so it re-routes incoming data more evenly if some of `vmstorage` nodes are temporarily unavailable and/or accept data at slower rate than other `vmstorage` nodes. Also significantly reduce possible re-routing storm when `vminsert` runs with `-disableRerouting=false` command-line flag. This should help the following issues: , , , , . FEATURE: : cover more cases with the . This should improve the average performance for practical queries. The following cases are additionally covered: Multi-level . For example, `abs(round(foo{a="b"})) + bar{x="y"}` is now optimized to `abs(round(foo{a="b",x="y"})) + bar{a="b",x="y"}` Binary operations with `on()`, `without()`, `groupleft()` and `groupright()` modifiers. For example, `foo{a="b"} on (a) + bar` is now optimized to `foo{a="b"} on (a) + bar{a="b"}` Multi-level binary operations. For example, `foo{a="b"} + bar{x="y"} + baz{z="q"}` is now optimized to `foo{a="b",x="y",z="q"} + bar{a="b",x="y",z="q"} + baz{a="b",x="y",z="q"}` Aggregate

For example, `sum(foo{a="b"}) by (c) + bar{c="d"}` is now optimized to `sum(foo{a="b",c="d"}) by (c) + bar{c="d"}` FEATURE : optimize joining with `info` labels. For example: `kubepodcreated{namespace="prod"} * on (uid) groupleft(node) kubepodinfo` now automatically adds the needed filters on `uid` label to `kubepodinfo` before selecting series for the right side of `` operation. This may save CPU, RAM and disk IO resources. See for details on `_info` labels. See . FEATURE: all: improve performance for arm64 builds of VictoriaMetrics components by up to 15%. See . FEATURE: all: expose `processcpucoresavailable` metric, which shows the number of CPU cores available to the app. The number can be fractional if the corresponding cgroup limit is set to a fractional value. This metric is useful for alerting on CPU saturation. For example, the following query alerts when the app uses more than 90% of CPU during the last 5 minutes: `rate(processcpusecondstotal. FEATURE: : add ability to configure notifiers (e.g. alertmanager) via a file in the way similar to Prometheus. See , . FEATURE: : add support for Consul service discovery for notifiers. See . FEATURE: : add support for specifying Basic Auth password for notifiers via a file. See . FEATURE: : provide the ability to fetch target responses on behalf of `vmagent` by clicking the `response` link for the needed target at `/targets` page. This feature may be useful for debugging responses from targets located in isolated environments. FEATURE: : show the total number of scrapes and the total number of scrape errors per target at `/targets` page. This information may be useful when debugging unreliable scrape targets. FEATURE: vmagent and single-node VictoriaMetrics: disallow unknown fields at `-promscrape.config` file. Previously unknown fields were allowed. This could lead to long-living silent config errors. The previous behaviour can be returned by passing `-promscrape.config.strictParse=false` command-line flag. FEATURE: vmagent: add `__meta_kubernetes_endpointslice_label` and `metakubernetesendpointslice_annotation*` labels for `role: endpointslice` targets in to be consistent with other `role` values. See . FEATURE: vmagent: add `collapse all` and `expand all` buttons to `http://vmagent:8429/targets` page. See . FEATURE: vmagent: support Prometheus-like durations in `-promscrape.config`. See . FEATURE: automatically re-read `-tlsCertFile` and `-tlsKeyFile` files, so their contents can be updated without the need to restart VictoriaMetrics apps. See . BUGFIX: calculate in the same way as Prometheus does. Previously it could return multiple time series instead of at most one time series like Prometheus does. See . BUGFIX: return proper results from `highestMax()` function at . Previously it was incorrectly returning timeseries with min peaks instead of max peaks. BUGFIX: properly limit indexdb cache sizes. Previously they could exceed values set via `-memory.allowedPercent` and/or `-memory.allowedBytes` when `indexdb` contained many data parts. See . BUGFIX: : fix a bug, which could break time range picker when editing `From` or `To` input fields. See . BUGFIX: : fix a bug, which could break switching between `graph`, `json` and `table` views. See . BUGFIX: : fix possible UI freeze after querying `nodeunameinfo` time series. See . BUGFIX: show the original location of the warning or error message when logging throttled messages. Previously the location inside `lib/logger/throttler.go` was shown. This could increase the complexity of debugging. BUGFIX: vmalert: fix links at web UI. See . BUGFIX: vmagent: properly discover pods without exposed ports for the given service for `role: endpoints` and `role: endpointslice` in . See . BUGFIX: vmagent: properly display `zone` contents for `gcesdconfigs` section at `http://vmagent:8429/config` page. See . Thanks to @artifactori for the bugfix. BUGFIX: vmagent: properly handle `alltenants: true` config option at `openstacksd_config`. See

Released at 2022-01-18 FEATURE: : add support for `@` modifier, which is enabled by default in Prometheus starting from . See and . VictoriaMetrics extends `@` modifier with the following additional features: It can contain arbitrary expression. For example, `foo @ (end() - 1h)` would return `foo` value at `end - 1 hour` timestamp on the selected time range `[start ... end]`. Another example: `foo @ (now() - 10m)` would return `foo` value 10 minutes ago from the current time. It can be put everywhere in the query. For example, `sum(foo) @ start()` would calculate `sum(foo)` at `start` timestamp on the selected time range `[start ... end]`. FEATURE: : add support for optional `keepmetricnames` modifier, which can be applied to all the and . This modifier prevents from deleting metric names from function results. For example, `rate({name=~"foo|bar"}. FEATURE: : add support for Kubernetes service discovery in the current namespace in the same way as . For example, the following config limits pod discovery to the namespace where vmagent runs: ```yaml scrape_configs: job_name: 'kubernetes-pods' kubernetessdconfigs: role: pod namespaces: own_namespace: true ``` FEATURE: : add `metakubernetesnodeproviderid` label for discovered Kubernetes nodes in the same way as . FEATURE: : log error message when remote storage returns 400 or 409 http errors. This should simplify detection and debugging of this case. See . FEATURE: : expose `promscrapestalesamplescreatedtotal` metric for monitoring the total number of created stale samples when scraping Prometheus targets. See for the information on when stale samples (aka staleness markers) can be created. FEATURE: : store `restore-in-progress` file in `-dst` directory while `vmrestore` is running. This file is automatically deleted when `vmrestore` is successfully finished. This helps detecting incompletely restored data on VictoriaMetrics start. See . FEATURE: : print the last sample timestamp when the data migration is interrupted either by user or by error. This helps continuing the data migration from the interruption moment. See . FEATURE: : expose `vmalertremotewritetotal` metric at `/metrics` page. This makes possible calculating SLOs for error rate during writing recording rules and alert state to `-remoteWrite.url` with the query `vmalertremotewriteerrorstotal / vmalertremotewrite_total`. See . Thanks to @afoninsky . FEATURE: : add `stripPort` template function in the same way as . FEATURE: : add `parseDuration` template function in the same way as . FEATURE: : add `stalesamplesover_time(m for time series `m` over the duration `d`. This function may be useful for detecting flapping metrics at scrape targets, which periodically disappear and then appear again. FEATURE: : add support for `extra_filters` option. See . FEATURE: : improve UX according to . Thanks to @Loori-R . FEATURE: : limit the number of requests sent to VictoriaMetrics during zooming / scrolling. See . BUGFIX: : make sure that `vmagent` replicas scrape the same targets at different time offsets when . This guarantees that the consistently leaves samples from the same `vmagent` replica. BUGFIX: return the proper response stub from `/api/v1/query_exemplars` handler, which is needed for Grafana v8+. See . BUGFIX: : fix a few edge cases and improve migration speed for OpenTSDB importer. See . BUGFIX: fix possible data race when searching for time series matching `{key=~"value|"}` filter over time range covering multipe days. See . Thanks to @waldoweng for the provided fix. BUGFIX: : do not send staleness markers on graceful shutdown. This follows Prometheus behavior. See . BUGFIX: : properly set `address` label in `dockerswarmsdconfig`. See . Thanks to @ashtuchkin for the fix. BUGFIX: : fix incorrect calculations for graph limits on y axis. This could result in incorrect graph rendering in some cases. See . BUGFIX: : fix handling for multi-line queries. See . See changes