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

sort: 102 weight: 102 title: CHANGELOG for the year 2021 menu: docs: parent: 'victoriametrics' weight: 102 aliases: /CHANGELOG_2021.html Released at 2021-12-20 Update notes: deduplication logic was slightly changed on the release, which may cause extra for already existing data parts for installations with `-dedup.minScrapeInterval` flag value greater than 0. This process is intentionally limited by one CPU core, but still can result into increase of CPU usage until merges are finished. We recommend updating in "off-peak" time when load on the VictoriaMetrics is on its minimum. FEATURE: : add multi-level downsampling support. See and . FEATURE: : add ability to analyze the correlation between two queries on a single graph. Just click `+Query` button, enter the second query in the newly appeared input field and press `Ctrl+Enter`. Results for both queries should be displayed simultaneously on the same graph. Every query has its own vertical scale, which is displayed on the left and the right side of the graph. Lines for the second query are dashed. See . FEATURE: : add ability to override the interval between returned datapoints. By default it is automatically calculated depending on the selected time range and horizontal resolution of the graph. Now it is possible to override it with custom values. This may be useful during data exploration and debugging. FEATURE: accept optional `extra_filters or . See . FEATURE: : allow specifying `http` and `https` urls in `-auth.config` command-line flag. See . Thanks for @TFM93 . FEATURE: : allow specifying `http` and `https` urls in the following command-line flags: `-promscrape.config`, `-remoteWrite.relabelConfig` and `-remoteWrite.urlRelabelConfig`. FEATURE: vminsert: allow specifying `http` and `https` urls in `-relabelConfig` command-line flag. FEATURE: vminsert: add `-maxLabelValueLen` command-line flag for the ability to configure the maximum length of label value. See . FEATURE: preserve the order of time series passed to function. This allows implementing series paging via `limitoffset(limit, offset, sortby_label(...))`. See and issues. FEATURE: automaticall convert `(value1|...|valueN)` into `{value1,...,valueN}` inside `graphite` pseudo-label. This allows using inside `graphite` pseudo-label. For example, `{graphite=~"foo.($bar)"}` is expanded to `{graphite=~"foo.{x,y}"}` if both `x` and `y` are selected for `$bar` template variable. See for details. FEATURE: add function. It works the same as , but leaves the original time series names, so it can be used in queries, which match multiple time series names: `timestampwithname({foo="bar"} for more context. FEATURE: add , and functions, which don't take into account the previous sample before the given lookbehind window specified in square brackets. These functions may be used when the Prometheus behaviour for `changes()`, `increase()` and `delta()` functions is needed to be preserved. VictoriaMetrics uses slightly different behaviour for `changes()`, `increase()` and `delta()` functions by default - see for details. See . BUGFIX: fix `unaligned 64-bit atomic operation` panic on 32-bit architectures, which has been introduced in v1.70.0. See . BUGFIX: : restore the ability to use `$labels.alertname` in labels templating. See . BUGFIX: : add missing `query` caption to the input field for the query. See . BUGFIX: : fix navigation over query history with `Ctrl+up/down` and fix zoom relatively to the cursor position. See . BUGFIX: deduplicate samples more thoroughly if is enabled. Previously some duplicate samples may be left on disk for time series with high churn rate. This may result in bigger storage space requirements. BUGFIX: : follow up to 5 redirects when `follow_redirects: true` is set for a particular scrape config. Previously only a single redirect was performed in this case. It is expected these redirects are performed to the original hostname. See . BUGFIX: de-duplicate data exported via by default if is

The de-duplication can be disabled by passing `reducememusage=1` query arg to `/api/v1/export/csv`. See . BUGFIX: : properly store to old Prometheus versions. See . Released at 2021-12-02 FEATURE: : add ability to pass arbitrary query args to `-datasource.url` on a per-group basis via `params` option. See . FEATURE: add `now()` function to MetricsQL. This function returns the current timestamp in seconds. See . FEATURE: vmauth: allow using optional `name` field in configs. This field is then used as `username` label value for `vmauthuserrequests_total` metric. See . FEATURE: vmagent: export `vmpersistentqueuereaddurationsecondstotal` and `vmpersistentqueuewritedurationsecondstotal` metrics, which can be used for detecting persistent queue saturation with `rate(vmpersistentqueuewritedurationseconds_total) > 0.9` alerting rule. FEATURE: export `vmfilestreamreaddurationsecondstotal` and `vmfilestreamwritedurationsecondstotal` metrics, which can be used for detecting persistent disk saturation with `rate(vmfilestreamreaddurationseconds_total) > 0.9` alerting rule. FEATURE: export `vmcachesizemaxbytes` metrics, which show capacity for various caches. These metrics can be used for determining caches with reach its capacity with `vmcachesizebytes / vmcachesizemax_bytes > 0.9` query. FEATURE: , : add `-s3ForcePathStyle` command-line flag, which can be used for making backups to . See . FEATURE: : improve data migration from OpenTSDB. See . Thanks to @johnseekins . FEATURE: suppress `connection reset by peer` errors when remote client resets TCP connection to VictoriaMetrics / vmagent while ingesting the data via InfluxDB line protocol, Graphite protocol or OpenTSDB protocol. This error is expected, so there is no need in logging it. FEATURE: : store the display type in URL, so it isn't lost when copy-pasting the URL. See . FEATURE: vmalert: make `-notifier.url` command-line flag optional. This flag can be omitted if `vmalert` is used solely for recording rules and doesn't evaluate alerting rules. See . FEATURE: , : export internal metrics at `http://vmbackup:8420/metrics` and `http://vmrestore:8421/metrics` for better visibility of the backup/restore process. FEATURE: allow trailing whitespace after the timestamp when . See . FEATURE: expose `/-/healthy` and `/-/ready` endpoints as Prometheus does. This is needed for improving integration with third-party solutions, which rely on these endpoints. See . BUGFIX: vmagent: prevent from scraping duplicate targets if `-promscrape.dropOriginalLabels` command-line flag is set. See . Thanks to @guidao for the fix. BUGFIX: vmstorage : added missing `vmtenantusedtenantbytes` metric, which shows the approximate per-tenant disk usage. See and . BUGFIX: vmauth: properly take into account the value passed to `-maxIdleConnsPerBackend` command-line flag. See . BUGFIX: vmagent: fix . BUGFIX: vmalert: fix in enterprise version. BUGFIX: consistently return zero from function applied to a constant time series. Previously it could return small non-zero values in this case. BUGFIX: : properly resume downloading for partially downloaded big files. Previously such files were re-downloaded from the beginning after the interrupt. Now only the remaining parts of the file are downloaded. This allows saving network bandwidth. See . BUGFIX: : do not store the last query across vmui page reloads. See . BUGFIX: : fix `Cannot read properties of undefined` error at table view. See . Released at 2021-11-08 FEATURE: vmalert: allow groups with empty rules list like Prometheus does. See . FEATURE: vmalert: allow groups with default `tenant` in `-clusterMode`. Default `tenant` values can be specified via `-defaultTenant.prometheus` and `-defaultTenant.graphite`. See . FEATURE: vmagent: add `collapse` and `expand` buttons per each group of targets with the same `job_name` at `http://vmagent:8429/targets` page. FEATURE: automatically detect timestamp precision (ns, us, ms or s) for the data ingested into VictoriaMetrics via . FEATURE: vmagent: add ability to protect `/config` page with auth key via `-configAuthKey` command-line flag. This page may contain sensitive config information, so it may be good to restrict access to this

See . FEATURE: vmagent: hide passwords and auth tokens at `/config` page like Prometheus does. See . FEATURE: vmagent: add `-promscrape.maxResponseHeadersSize` command-line flag for tuning the maximum HTTP response headers size for Prometheus scrape targets. FEATURE: vmagent: send data to multiple configured remote storage systems in parallel (e.g. when multiple `-remoteWrite.url` flag values are specified). This should improve data ingestion speed. FEATURE: vmagent: add `-remoteWrite.maxRowsPerBlock` command-line flag for tuning the number of samples to send to remote storage per each block. Bigger values may improve data ingestion performance at the cost of higher memory usage. FEATURE: vmagent: distribute Kafka messages among all the partitions when . FEATURE: add function for extracting the given groups from Graphite metric names. FEATURE: add function for calculating the actual lifetime of the time series with possible gaps. See . FEATURE: add function, which can be used for implementing simple paging over big number of time series. See . BUGFIX: vmagent: reduce the increased memory usage when scraping targets with big number of metrics which periodically change. The memory usage has been increased in v1.68.0 after vmagent started generating staleness markers in . See . BUGFIX: vmagent: properly display `proxy_url` config option at `http://vmagent:8429/config` page. See . BUGFIX: fix tests for Apple M1. See . Released at 2021-10-22 FEATURE: vmagent: expose `-promscrape.config` contents at `/config` page as Prometheus does. See . FEATURE: vmagent: add `show original labels` button per each scrape target displayed at `http://vmagent:8429/targets` page. This should improve debuggability for service discovery and relabeling issues similar to . See . FEATURE: vmagent: shard targets among cluster nodes after the relabeling is applied. This should guarantee that targets with the same set of labels go to the same `vmagent` node in the cluster. See . FEATURE: vmagent: atomatically switch to if the response from the given target exceeds the command-line flag value `-promscrape.minResponseSizeForStreamParse`. This should reduce memory usage when `vmagent` scrapes targets with non-uniform response sizes (this is the case in Kubernetes monitoring). FEATURE: vmagent: send Prometheus-like staleness marks in . Previously staleness marks wern't sent in stream parsing mode. See for details. FEATURE: vmagent: properly calculate `scrapeseriesadded` metric for targets in . Previously it was set to 0 in stream parsing mode. See . FEATURE: vmagent: expose `promscrapeserieslimitmaxseries` and `promscrapeserieslimitcurrentseries` metrics at `http://vmagent:8429/metrics` for scrape targets with the . FEATURE: vmagent: return error if `samplelimit` or `serieslimit` options are set when is enabled, since these limits cannot be applied in stream parsing mode. FEATURE: vmalert: add `-remoteRead.disablePathAppend` command-line flag, which allows specifying the full `-remoteRead.url`. If `-remoteRead.disablePathAppend` is set, then `vmalert` doesn't add `/api/v1/query` suffix to `-remoteRead.url`. FEATURE: add trigonometric functions, which are going to be added in : , , , , , , , , , . Also add `atan2` binary operator. See . FEATURE: consistently return the same set of time series from function. This improves the usability of periodically refreshed graphs. FEATURE: : varios UX improvements. See and . FEATURE: : add ability to specify HTTP headers, which will be sent in requests to backends. See . FEATURE: add `/flags` page to all the VictoriaMetrics components. This page contains command-line flags passed to the component. FEATURE: allow using tab separators additionally to whitespace separators when . Such separators are . BUGFIX: vmstorage: fix `unaligned 64-bit atomic operation` panic on 32-bit architectures (arm and 386). The panic has been introduced in v1.67.0. BUGFIX: vmalert, vmauth: prevent from frequent closing of TCP connections established to backends under high

This should reduce the number of TCP sockets in `TIME_WAIT` state at `vmalert` and `vmauth` under high load. See . BUGFIX: vmalert: correctly calculate alert ID including extra labels. Previously, ID for alert entity was generated without alertname or groupname. This led to collision, when multiple alerting rules within the same group producing same labelsets. E.g. expr: `sum(metric1) by (job) > 0` and expr: `sum(metric2) by (job) > 0` could result into same labelset `job: "job"`. The bugfix adds all extra labels right after receiving response from the datasource. See . BUGFIX: vmalert: fix links in . See . BUGFIX: vmagent: set `honor_timestamps: true` by default in if this options isn't set explicitly. This aligns the behaviour with Prometheus. BUGFIX: vmagent: group scrape targets by the original job names at `http://vmagent:8429/targets` page like Prometheus does. Previously they were grouped by the job name after relabeling, which may result in unexpected empty target groups. See . BUGFIX: : fix importing boolean fields from InfluxDB line protocol. See . Released at 2021-10-08 FEATURE: add ability to accept metrics from and . See . This option simplifies the migration path from DataDog to VictoriaMetrics. See also . FEATURE: vmagent : add support for data reading and writing from/to . See . FEATURE: vmui: switch to and add ability to naturally scroll and zoom graphs. See . Thanks to @Loori-R. FEATURE: vmstorage: stop accepting new data if `-storageDataPath` directory contains less than `-storage.minFreeDiskSpaceBytes` of free space. This should prevent from `out of disk space` crashes. See . FEATURE: calculate quantiles in the same way as Prometheus does in such functions as and . Previously results from VictoriaMetrics could be slightly different than results from Prometheus. See and issues. FEATURE: add `rollupscrapeinterval(m, which returns `min`, `max` and `avg` values for the interval between samples for `m` on the given lookbehind window `d`. FEATURE: add `topklast(k, q)` and `bottomklast(k, q)` functions to , which return up to `k` time series from `q` with the maximum / minimum last value on the graph. BUGFIX: align behavior of the queries `a or on (labels) b`, `a and on (labels) b` and `a unless on (labels) b` where `b` has multiple time series with the given `labels` to Prometheus behavior. See . BUGFIX: vmagent: fix `openstacksdconfig` service discovery when both `domainname` and `projectid` config options are set. See . BUGFIX: return proper values (zeroes) from and functions when the lookbehind window in square brackets contains only a single sample. Previously the sample value was incorrectly returned in this case. BUGFIX: vminsert: fix uneven distribution of time series among storage nodes in . See . Released at 2021-09-23 FEATURE: vmagent: add `vmpromscrapemaxscrapesizeexceedederrors_total` metric for counting of the failed scrapes due to the exceeded response size (the response size limit can be configured via `-promscrape.maxScrapeSize` command-line flag). See . BUGFIX: vmalert: properly reload rule groups if only the `interval` config option is changed. See . BUGFIX: properly handle `{name=~"prefix(suffix1|suffix2)",other_label="..."}` queries. They may return unexpected empty responses since v1.66.0. See . Released at 2021-09-22 FEATURE: add `-cluster` and/or `-enterprise` suffixes to `shortversion` label at `vmapp_version` metric exposed at `/metrics` page of every VictoriaMetrics component. See . BUGFIX: vmselect: fix accessing . The access has been broken in v1.66.0, because `/graphite/` path prefix accidentally clashed with `/graph*` path prefix used for VictoriaMetrics UI (aka `vmui`). BUGFIX: fix parsing `regex: <boolornumber>` in relabeling rules (for example, `regex: true` or `regex: 123`). The bug has been introduced in v1.66.0. Released at 2021-09-20 FEATURE: vmalert: add web UI with the list of alerting groups, alerts and alert statuses. See . FEATURE: vmalert: add

command-line flag, which could be used for limiting the auto-resolve duration for the alerting rule. By default it is limited to 3x evaluation interval. This could be too high for big evaluation intervals. See . FEATURE: vmalert: add support for Bearer token authorization for `-datasource.url`, `-remoteRead.url` and `-remoteWrite.url`. See . FEATURE: vmagent: send stale markers for disappeared metrics like Prometheus does. Previously stale markers were sent only when the scrape target disappears or when it becomes temporarily unavailable. See for details. FEATURE: vmagent: add ability to set `serieslimit` option for a particular scrape target via `serieslimit` label. This allows setting the limit on the number of time series on a per-target basis. See for details. FEATURE: vmagent: add ability to set `streamparse` option for a particular scrape target via `streamparse` label. This allows managing the stream parsing mode on a per-target basis. See for details. FEATURE: vmagent: add ability to set `scrapeinterval` and `scrapetimeout` options for a particular target via `scrape_interval` and `scrape_timeout` labels in the same way as Prometheus 2.30 does. See . FEATURE: vmagent: generate `scrapetimeoutseconds` metric per each scrape target, so the target saturation could be calculated with `scrapedurationseconds / scrapetimeoutseconds`. See the corresponding . FEATURE: vmagent: reduce CPU usage when calculating the number of newly added series per scrape (this number is sent to remote storage in `scrapeseriesadded` metric). FEATURE: vmagent: reduce CPU usage when applying `serieslimit` to scrape targets with constant set of metrics. See more information about `serieslimit` . FEATURE: vminsert: disable rerouting by default when a few of `vmstorage` nodes start accepting data at lower speed than the rest of `vmstorage` nodes. This should improve VictoriaMetrics cluster stability during rolling restarts and during spikes in . The rerouting can be enabled by passing `-disableRerouting=false` command-line flag to `vminsert`. FEATURE: vmauth: do not put invalid auth tokens into log by default due to security reasons. The logging can be returned back by passing `-logInvalidAuthTokens` command-line flag to `vmauth`. Requests with invalid auth tokens are counted at `vmagenthttprequesterrorstotal{reason="invalidauthtoken"}` metric exposed by `vmauth` at `/metrics` page. FEATURE: add new relabeling actions: `keepmetrics` and `dropmetrics`. This simplifies metrics filtering by metric names. See for more details. FEATURE: allow splitting long `regex` in relabeling filters into an array of shorter regexps, which can be put into multiple lines for better readability and maintainability. See for more details. FEATURE: optimize performance for queries with regexp filters on metric name like `{name=~"metric1|...|metricN"}`. See from @faceair. FEATURE: vmui: use Prometheus-compatible query args, so `vmui` could be accessed from graph editor in Grafana. See . Thanks to @Loori-R. FEATURE: vmselect: automatically add missing port to `-storageNode` hostnames. For example, `-storageNode=vmstorage1,vmstorage2` is automatically translated to `-storageNode=vmstorage1:8401,vmstorage2:8401`. This simplifies . FEATURE: vminsert: automatically add missing port to `-storageNode` hostnames. For example, `-storageNode=vmstorage1,vmstorage2` is automatically translated to `-storageNode=vmstorage1:8400,vmstorage2:8400`. This simplifies . FEATURE: add function to . It calculates for groups of points with identical timestamps across multiple time series. FEATURE: add function to . It returns time series with peaks outside the multiplied by `tolerance`. FEATURE: add `histogram_quantiles("phiLabel", phi1, ..., phiN, buckets)` function to . It calculates the given `phi`-quantiles over the given `buckets` and returns time series per each quantile with the corresponding `{phiLabel="phi*"}` label. FEATURE: add `quantiles_over_time("phiLabel", phi1, ..., phiN, series_selector. It calculates the given `phi`-quantiles over raw samples selected by `series_selector` on the given lookbehind window `d`. It returns time series per each quantile with the corresponding `{phiLabel="phi*"}` label. FEATURE: : do not ask for `-eula` flag if `-version` flag is passed to enteprise app. See

BUGFIX: properly handle queries with multiple filters matching empty labels such as `metric{label1=~"foo|",label2="bar|"}`. This filter must match the following series: `metric`, `metric{label1="foo"}`, `metric{label2="bar"}` and `metric{label1="foo",label2="bar"}`. Previously it was matching only `metric{label1="foo",label2="bar"}`. See . BUGFIX: vmselect: reset connection timeouts after each request to `vmstorage`. This should prevent from `cannot read data in 0.000 seconds: unexpected EOF` warning in logs. See . Thanks to @mxlxm . BUGFIX: keep metric name for time series returned from function, since the returned series don't change the meaning of the original series. See . BUGFIX: use Prometheus-compatible label value formatting for function. Previously big values could be improperly formatted, which could break query results, which rely on label value such as `... on(label) count_values("label", ...)`. BUGFIX: vmagent: properly use `https` scheme for wildcard TLS certificates for `role: ingress` targets in Kubernetes service discovery. See . BUGFIX: vmagent: support host networking mode for `dockersdconfig`. See . BUGFIX: fix non-repeatable results from `quantileovertime()` function when the number of input samples exceeds 1000. See . BUGFIX: vmagent: fix EC2 zone discovery when `filters` are specified in . See . Released at 2021-09-01 FEATURE: vmagent: add ability to read scrape configs from multiple files specified in `scrapeconfigfiles` section. See . FEATURE: vmagent: reduce memory usage and CPU usage when is enabled for metrics exported from the deleted or disappeared scrape targets. FEATURE: vmagent: add the ability to limit the number of unique time series scraped per each target. This can be done either globally via `-promscrape.seriesLimitPerTarget` command-line option or on per-target basis via `serieslimit` option at `scrapeconfig` section. See and . FEATURE: vmagent: discover `role: ingress` and `role: endpointslice` in via v1 API instead of v1beta1 API if Kubernetes supports it. This fixes service discovery in Kubernetes v1.22 and newer versions. See . FEATURE: take into account failed queries in `vmrequestduration_seconds` summary at `/metrics`. Previously only successful queries were taken into account. This could result in skewed summary. See . FEATURE: vmalert: add an official dashboard for vmalert. See . FEATURE: vmalert: add ability to set additional labels per group via `labels` config section. See . FEATURE: vmalert: add `-disableAlertgroupLabel` command-line flag for disabling the label with alert group name. This may be needed for proper deduplication in Alertmanager. See . FEATURE: update Go builder from v1.16.7 to v1.17.0. This improves data ingestion and query performance by up to 5% according to benchmarks. See . FEATURE: vmagent: expose `promscrapediscoveryhttperrorstotal` metric, which can be used for monitoring the number of failed discovery attempts per each `http_sd` config. FEATURE: do not reset response cache when a sample with old timestamp is ingested into VictoriaMetrics if `-search.disableAutoCacheReset` command-line option is set. See . FEATURE: add `quantiles("phiLabel", phi1, ..., phiN, q)` aggregate function to , which calculates the given `phi` quantiles over time series returned by `q`. See . BUGFIX: rename `sign` function to `sgn` in order to be consistent with PromQL. See . BUGFIX: vmagent: add `role: endpointslice` in in order to be consistent with Prometheus. Previously this role was supported with incorrect name: `role: endpointslices`. Now both `endpointslice` and `endpointslices` are supported. See . BUGFIX: improve the detection of the needed free space for background merge operation. This should prevent from possible out of disk space crashes during big merges. See . BUGFIX: vmauth: remove trailing slash from the full url before requesting it from the backend. See . BUGFIX: : fix timeout error when snapshot takes longer than 10 seconds. See . BUGFIX: properly parse OpenTSDB `put` messages with multiple spaces between message elements. See . Thanks to @envzhu for the

Released at 2021-08-19 FEATURE: add `bitmapand(q, mask)`, `bitmapor(q, mask)` and `bitmak_xor(q, mask)` functions to . These functions allow performing bitwise operations over data points in time series. See . FEATURE: vmalert: add `-remoteWrite.disablePathAppend` command-line flag, which can be used when custom `-remoteWrite.url` must be specified. For example, `./vmalert -disablePathAppend -remoteWrite.url='http://foo.bar/a/b/c?d=e'` would write data to `http://foo.bar/a/b/c?d=e` instead of `http://foo.bar/a/b/c?d=e/api/v1/write`. See . FEATURE: vmagent: add `-promscrape.noStaleMarkers` command-line flag for disabling sending Prometheus stale markers for metrics from disappeared scrape targets. This option may be used for reducing memory usage when scraping big number of metrics with big number of labels and when stale markers aren't needed. FEATURE: vmselect: add `-search.noStaleMarkers` command-line flag for disabling stale markers handling in queries. This may save some CPU time when the queried data doesn't contain stale markers. BUGFIX: vmagent: stop scrapers for deleted targets before starting scrapers for added targets. This should prevent from possible time series overlap when old targets are substituted by new targets (for example, during new deployment in Kubernetes). The overlap could lead to incorrect query results. See . BUGFIX: vmagent: send Prometheus stale markers for the previously scraped metrics on failed scrapes like Prometheus does. See . BUGFIX: upgrade base Docker image from Alpine 3.14.0 to Alpine 3.14.1 . This fixes potential security issues - see . BUGFIX: disable overriding the lookbehind window `[d]` at `lastovertime(m[d])` if `d` is smaller than the interval between samples, since users don't expect implicit overriding of explicitly set `[d]` in `lastovertime(m[d])`. Released at 2021-08-15 FEATURE: add support for Prometheus staleness markers. See . FEATURE: vmagent: automatically generate Prometheus staleness markers for the scraped metrics when scrape targets disappear in the same way as Prometheus does. See . FEATURE: add `presentovertime(m. FEATURE: vmagent: support multitenant writes according to . This allows using a single `vmagent` instance in front of VictoriaMetrics cluster for all the tenants. Thanks to @omarghader for . See . FEATURE: vmagent: add `metaec2availabilityzoneid` label to discovered Amazon EC2 targets. This label is available in Prometheus . FAETURE: vmagent: add `metagceinterfaceipv4<name>` labels to discovered GCE targets. These labels are available in Prometheus . FEATURE: add `-search.maxSamplesPerSeries` command-line flag for limiting the number of raw samples a single query can process per each time series. This option can protect from out of memory errors when a query processes tens of millions of raw samples per series. See . FEATURE: add `-search.maxSamplesPerQuery` command-line flag for limiting the number of raw samples a single query can process across all the time series. This option can protect from heavy queries, which select too big number of raw samples. Thanks to @jiangxinlingdu for . FEATURE: improve performance for queries that process big number of time series and/or samples on systems with big number of CPU cores. FEATURE: vmalert: expose `vmalertalertingruleslastevaluationsamples` and `vmalertrecordingruleslastevaluationsamples` metrics. See . FEATURE: vminsert: expose `vmrpcsenddurationsecondstotal` counter, which can be used for determining high saturation of every `vminsert -> vmstorage` link with an alerting query `rate(vmrpcsenddurationsecondstotal) > 0.9s`. This query triggers when the link is saturated by more than 90%. This usually means that more `vminsert` or `vmstorage` nodes must be added to the cluster in order to increase the total number of `vminsert -> vmstorage` links. FEATURE: vmagent: expose `vmagentremotewritesenddurationsecondstotal` counter, which can be used for determining high saturation of every connection to remote storage with an alerting query `rate(vmagentremotewritesenddurationsecondstotal) > 0.9s`. This query triggers when a connection is saturated by more than 90%. This usually means that

command-line flag must be increased in order to increase the number of connections per each remote storage. FEATURE: vmui: automatically fill Server URL field. See . BUGFIX: fix corner cases for queries on time ranges exceeding 40 days. Previously some series can be missing in query results. See . BUGFIX: vmselect: return dummy response at `/rules` page in the same way as for `/api/v1/rules` page. The `/rules` page is requested by Grafana 8. See for details. BUGFIX: vmbackup: automatically set default `us-east-1` S3 region if it is missing. This should simplify using S3-compatible services such as MinIO for backups. See . BUGFIX: vmselect: prevent from possible deadlock when multiple `target` query args are passed to . BUGFIX: return series with `a op b` labels and `N` values for `(a op b) default N` if `(a op b)` returns series with all NaN values. Previously such series were removed. BUGFIX: vmui: fix layout when the query selects more than 27 time series. See . BUGFIX: vmagent: restore highlighting in red for DOWN targets at `/targets` page. See . Released at 2021-07-15 FEATURE: reduce memory usage by up to 30% on production workloads. FEATURE: vmselect: embed into a single-node VictoriaMetrics and into `vmselect` component of cluster version. See . The web interface is available at the following paths: `/vmui/` for a single-node VictoriaMetrics `/select/<accountID>/vmui/` for `vmselect` at cluster version of VictoriaMetrics FEATURE: support durations anywhere in . For example, `sumovertime(m[1h]) / 1h` is a valid query, which is equivalent to `sumovertime(m[1h]) / 3600`. FEATURE: support durations without suffixes in . For example, `rate(m[3600])` is a valid query, which is equivalent to `rate(m[1h])`. FEATURE: export `vmselectrequestdurationseconds` and `vminsertrequestdurationseconds` at `/metrics` page. These histograms can be used for determining latency distribution and SLI/SLO for the served requests. For example, the following query would return the percent of queries that took less than 500ms during the last hour: `histogramshare(500ms, sum(rate(vmselectrequestdurationseconds_bucket[1h])) by (vmrange))`. FEATURE: vmagent: dynamically reload client TLS certificates from disk on every . This should allow using `vmagent` with . See . FEATURE: log http request path plus all the query args on errors during request processing. Previously only http request path was logged without query args, so it could be hard debugging such errors. FEATURE: add `isset` label to `flag` metrics. This allows determining explicitly set command-line flags with the query `flag{isset="true"}`. FEATURE: add ability to remove caches stored inside `<-storageDataPath>/cache` on startup if `resetcacheon_startup` file is present there. See . BUGFIX: vmagent: remove `{ %space %}` typo in `/targets` output. The typo has been introduced in v1.62.0. See . BUGFIX: vmagent: fix CSS styles on `/targets` page. See . BUGFIX: vmalert: accept Prometheus-like durations in `interval` config option inside `group` section. See . BUGFIX: properly update `vmmergeneedfreedisk_space` metric at `/metrics` page when there is no enough free disk space for performing optimal merges. See . Released at 2021-06-25 FEATURE: vmagent: add service discovery for Docker (aka ). See . FEATURE: vmagent: add service discovery for DigitalOcean (aka ). See . FEATURE: vmagent: change the default value for `-remoteWrite.queues` from 4 to `2 numCPUs`. This should reduce scrape duration for highly loaded vmagent, which scrapes tens of thousands of targets. See . FEATURE: vmagent: show the number of samples the target returns during the last scrape on `/targets` and `/api/v1/targets` pages. This should simplify debugging targets, which may return too big or too low number of samples. See . FEATURE: vmagent: show jobs with zero discovered targets on `/targets` page. This should help debugging improperly configured scrape configs. FEATURE: vmagent: support for http-based service discovery (aka ), which has been added since Prometheus 2.28. See

FEATURE: vmagent: support namespace in Consul serive discovery in the same way as Prometheus 2.28 does. See for details. FEATURE: vmagent: support generic auth configs in `consulsdconfigs` in the same way as Prometheus 2.28 does. See for details. FEATURE: : limit the number of samples per each imported JSON line. This should limit the memory usage at VictoriaMetrics side when importing time series with big number of samples. FEATURE: vmselect: log slow queries across all the `/api/v1/` handlers (aka ) if their execution duration exceeds `-search.logSlowQueryDuration`. This should simplify debugging slow requests to such handlers as `/api/v1/labels` or `/api/v1/series` additionally to `/api/v1/query` and `/api/v1/query_range`, which were logged in the previous releases. FEATURE: vminsert: sort the `-storageNode` list in order to guarantee the identical `series -> vmstorage` mapping across all the `vminsert` nodes. This should reduce resource usage (RAM, CPU and disk IO) at `vmstorage` nodes if `vmstorage` addresses are passed in random order to `vminsert` nodes. FEATURE: vmstorage: reduce memory usage on a system with many CPU cores under high ingestion rate. BUGFIX: prevent from adding new samples to deleted time series after the rotation of the inverted index (the rotation is performed once per `-retentionPeriod`). See for details. BUGFIX: vmstorage: reduce high disk write IO usage on systems with big number of CPU cores. The issue has been introduced in the release . See and for details. BUGFIX: vmstorage: prevent from incorrect stats collection when multiple concurrent queries execute the same tag filter. This may help reducing CPU usage under certain workloads. See . BUGFIX: vmselect: return the last timestamp for the max / min value from `tmaxovertime(m as most users expect. See also . BUGFIX: vmselect: return the expected value for `increasepure()` after a gap in a time series. Previously incorrect too big value could be returned after the gap from `increasepure()`. Released at 2021-06-11 BUGFIX: vmalert: fix recording rules, which were broken in v1.61.0. See . BUGFIX: reset the on-disk cache for mapping from the full metric name to an internal metric id (e.g. `metricname{labels} -> internalmetric_id`) after deleting metrics via . This should prevent from possible inconsistent state after unclean shutdown. This . Released at 2021-06-09 FEATURE: vmalert: add support for backfilling (aka replay) of recording and alerting rules. See and . FEATURE: vmalert: add a command-line flag `-rule.configCheckInterval` for automatic re-reading of `-rule` files without the need to send SIGHUP signal. See . FEATURE: vmagent: respect the `sample_limit` and `-promscrape.maxScrapeSize` values when scraping targets in . See . FEATURE: vmauth: add ability to specify mutliple `url_prefix` entries for balancing the load among multiple `vmselect` and/or `vminsert` nodes in a cluster. See . FEATURE: vminsert: add `-disableRerouting` command-line flag for forcibly disabling the rerouting. This should help resolving and issues. FEATURE: vminsert: reduce the probability of global re-routing storm if all the vmstorage nodes cannot keep up with the given ingestion rate for some time. This should improve cluster stability in such cases. See and issues. FEATURE: allow building VictoriaMetrics components for Solaris / SmartOS. See . FEATURE: vmagent: add ability to debug relabeling rules. See and . BUGFIX: reduce CPU usage by up to 2x during querying a database with big number of active daily time series. The issue has been introduced in `v1.59.0`. BUGFIX: vmagent: properly apply auth and tls configs in `eurekasdconfigs`. See . BUGFIX: vmauth: do not panic on aborted http requests. See . BUGFIX: properly generate `target` property for `Series(foo..bar)` responses returned from . Previously the `target` contained the expanded list of series for `foo..bar`, e.g.

Now VictoriaMetrics returns `sumSeries(foo.*.bar)` as a target in the same way as Graphite does. Released at 2021-05-24 FEATURE: add ability to limit the number of unique time series, which can be added to storage per hour and per day. This can help dealing with high cardinality and high churn rate issues. See . FEATURE: vmagent: add ability to limit the number of unique time series, which can be sent to remote storage systems per hour and per day. This can help dealing with high cardinality and high churn rate issues. See . FEATURE: vmalert: add ability to run alerting and recording rules for multiple tenants. See and . FEATURE: vminsert: add support for data ingestion via other `vminsert` nodes. This allows building multi-level data ingestion paths in VictoriaMetrics cluster by writing data from one level of `vminsert` nodes to another level of `vminsert` nodes. See and for details. FEATURE: vmagent: reload `bearertokenfile`, `credentialsfile` and `passwordfile` contents every second. This allows dynamically changing the contents of these files during target scraping and service discovery without the need to restart `vmagent`. See . FEATURE: vmalert: add a flag to control behaviour on startup for state restore errors. Such errors were returned and logged before as well. Now user can specify whether to just log these errors (`-remoteRead.ignoreRestoreErrors=true`) or to stop the process (`-remoteRead.ignoreRestoreErrors=false`). The latter is important when VM isn't ready yet to serve queries from vmalert and it needs to wait. See . FEATURE: vmalert: add ability to pass `round_digits` query arg to datasource via `-datasource.roundDigits` command-line flag. This can be used for limiting the number of decimal digits after the point in recording rule results. See . FEATURE: return `X-Server-Hostname` header in http responses of all the VictoriaMetrics components. This should simplify tracing the origin server behind a load balancer or behind auth proxy during troubleshooting. FEATURE: vmselect: allow to use 2x more memory for query processing at `vmselect` nodes in . This should allow processing heavy queries without the need to increase RAM size at `vmselect` nodes. FEATURE: add ability to filter `/api/v1/status/tsdb` output with arbitrary passed via `match and for details. FEATURE: automatically detect memory and cpu limits for VictoriaMetrics components running under environments such as . See . FEATURE: vmauth: allow `-auth.config` reloading via `/-/reload` http endpoint. See . FEATURE: add `timezoneoffset(tz)` function. It returns offset in seconds for the given timezone `tz` relative to UTC. This can be useful when combining with datetime-related functions. For example, `dayofweek(time()+timezoneoffset("America/LosAngeles"))` would return weekdays for `America/LosAngeles` time zone. Special `Local` time zone can be used for returning an offset for the time zone set on the host where VictoriaMetrics runs. See and for more details. FEATURE: vmagent: add support for OAuth2 authorization for scrape targets and service discovery in the same way as Prometheus does. See . FEATURE: vmagent: add support for OAuth2 authorization when writing data to `-remoteWrite.url`. See `-remoteWrite.oauth2.` config params in `/path/to/vmagent -help` output. FEATURE: vmalert: add ability to set `extrafilterlabels` at alerting and recording group configs. See . FEATURE: vmstorage: reduce memory usage by up to 30% when ingesting big number of active time series. BUGFIX: vmagent: do not retry scraping targets, which don't support HTTP. This should reduce CPU load and network usage at `vmagent` and at scrape target. See . BUGFIX: vmagent: fix possible race when refreshing `role: endpoints` and `role: endpointslices` scrape targets in `kubernetessdconfig`. Prevoiusly `pod` objects could be updated after the related `endpoints` object update. This could lead to missing scrape targets. See

BUGFIX: vmagent: properly spread scrape targets among `vmagent` replicas if `-promscrape.cluster.replicationFactor` exceeds 1. See . BUGFIX: vmagent: limit `scrapetimeout` by `scrapeinterval`. This guarantees that only a single sample is lost during the configured `scrape_interval` when scrape target responds slowly. See for details. BUGFIX: properly remove stale parts outside the configured retention if `-retentionPeriod` is smaller than one month. Previously stale parts could remain active for up to a month after they go outside the retention. BUGFIX: stop the process on panic errors, since such errors may leave the process in inconsistent state. Previously panics could be recovered, which could result in unexpected hard-to-debug further behavior of running process. BUGFIX: vminsert, vmagent: make sure data ingestion connections are closed before completing graceful shutdown. Previously the connection may remain open, which could result in trailing samples loss. BUGFIX: vmauth, vmalert: properly re-use HTTP keep-alive connections to backends and datasources. Previously only 2 keep-alive connections per backend could be re-used. Other connections were closed after the first request. See for details. BUGFIX: vmalert: fix false positive error `result contains metrics with the same labelset after applying rule labels`, which could be triggered when recording rules generate unique metrics. See . BUGFIX: vmctl: properly import InfluxDB rows if they have a field and a tag with identical names. See . BUGFIX: properly reload configs if `SIGHUP` signal arrives during service initialization. Previously such `SIGHUP` signal could be ingonred and configs weren't reloaded. BUGFIX: vmalert: properly import default rules from OpenShift. See . BUGFIX: reduce the probability of `the removal queue is full` panic when highly loaded VictoriaMetrics stores data on NFS. See . Released at 2021-05-01 FEATURE: improved new time series registration speed on systems with many CPU cores. See . Thanks to @waldoweng for the idea and . FEATURE: vmalert: use the same technique as Grafana for determining evaluation timestamps for recording rules. This should make consistent graphs for series generated by recording rules compared to graphs generated for queries from recording rules in Grafana. See . FEATURE: vmauth: add ability to set madatory query args in `urlprefix`. For example, `urlprefix: http://vm:8428/?extralabel=team=dev` would add `extralabel=team=dev` query arg to all the incoming requests. See for more details. FEATURE: vmctl: add OpenTSDB migration option. See more details . Thanks to @johnseekins! FEATURE: log metrics with dropped labels if the number of labels in the ingested metric exceeds `-maxLabelsPerTimeseries`. This should simplify debugging for this case. FEATURE: vmagent: list user-visible endpoints at `http://vmagent:8429/`. See . BUGFIX: vmagent: properly update `role: endpoints` and `role: endpointslices` scrape targets if the underlying service objects are updated in `kubernetessdconfig`. See . BUGFIX: vmagent: apply `scrape_timeout` on receiving the first response byte from `stream_parse: true` scrape targets. Previously it was applied to receiving and processing* the full response stream. This could result in false timeout errors when scrape target exposes millions of metrics as described . BUGFIX: vmagent: eliminate possible data race when obtaining value for the metric `vmpersistentqueuebytes_pending`. The data race could result in incorrect value for this metric. BUGFIX: vmstorage: remove empty directories on startup. Such directories can be left after unclean shutdown on NFS storage. Previously such directories could lead to crashloop until manually removed. See . Released at 2021-04-08 FEATURE: vminsert and vmagent: add `-sortLabels` command-line flag for sorting metric labels before pushing them to `vmstorage`. This should reduce the size of `MetricName -> internalseriesid` cache (aka `vmcachesize_bytes{type="storage/tsid"}`) when ingesting samples for the same time series with distinct order of labels. For example, `foo{k1="v1",k2="v2"}` and `foo{k2="v2",k1="v1"}` represent a single time

Labels sorting is disabled by default, since the majority of established exporters preserve the order of labels for the exported metrics. FEATURE: allow specifying label value alongside label name for the `others sum` time series returned from `topk_` and `bottomk*` functions from . For example, `topkavg(3, max(processresidentmemorybytes) by (instance), "instance=othersum")` would return top 3 series from `max(processresidentmemorybytes) by (instance)` plus a series containing the sum of other series. The `others sum` series will have `{instance="othersum"}` label. FEATURE: do not delete `dstlabel` when applying `labelcopy(q, "srclabel", "dstlabel")` and `labelmove(q, "srclabel", "dstlabel")` to series without `srclabel` and with non-empty `dst_label`. See more details at . FEATURE: update Go builder from `v1.16.2` to `v1.16.3`. This should fix . FEATURE: vmagent: add support for `followredirects` option to `scrapeconfigs` section in the same way as . FEATURE: vmagent: add support for `authorization` section in `-promscrape.config` in the same way as . FEATURE: vmagent: add support for socks5 proxy in `proxy_url` config option. See . FEATURE: vmagent: add support for `socks5 over tls` proxy in `proxyurl` config option. It can be set up with the following config: `proxyurl: "tls+socks5://proxy-addr:port"`. FEATURE: vmagent: reduce memory usage when `-remoteWrite.queues` is set to a big value. See . FEATURE: vmagent: add AWS IAM roles for tasks support for EC2 service discovery according to . FEATURE: vmagent: add support for `proxytlsconfig`, `proxyauthorization`, `proxybasicauth`, `proxybearertoken` and `proxybearertokenfile` options in `consulsdconfig`, `dockerswarmsdconfig` and `eurekasdconfig` sections. FEATURE: vmagent: pass `X-Prometheus-Scrape-Timeout-Seconds` header to scrape targets as Prometheus does. In this case scrape targets can limit the time needed for performing the scrape. See for details. FEATURE: vmagent: drop corrupted persistent queue files at `-remoteWrite.tmpDataPath` instead of throwing a fatal error. Corrupted files can appear after unclean shutdown of `vmagent` such as OOM kill or hardware reset. See . FEATURE: vmauth: add support for authorization via . See for details. FEATURE: publish `arm64` and `amd64` binaries for cluster version of VictoriaMetrics at . BUGFIX: properly handle `/api/v1/labels` and `/api/v1/label/<label_name>/values` queries on big `start ... end` time range. This should fix big resource usage when VictoriaMetrics is queried with v0.0.62 or newer versions. BUGFIX: do not break sort order for series returned from `topk`, `bottomk*` and `outliersk` functions. See . BUGFIX: vmagent: properly work with simple HTTP proxies which don't support `CONNECT` method. For example, . See . BUGFIX: vmagent: properly discover targets if multiple namespace selectors are put inside `kubernetessdconfig`. See . BUGFIX: vmagent: properly discover `role: endpoints` and `role: endpointslices` targets in `kubernetessdconfig`. See . BUGFIX: properly generate filename for `.tar.gz` archive inside `_checksums.txt` file posted at . See . Released at 2021-03-30 FEATURE: publish vmutils for `GOOS=arm` on . BUGFIX: prevent from possible incomplete query results after timed out query. BUGFIX: vmselect: remove `-search.storageTimeout` command-line flag, since it has the same meaning as `-search.maxQueryDuration`. See . BUGFIX: vminsert: return back `type` label to per-tenant metric `vmtenantinsertedrowstotal`. See . Released at 2021-03-29 FEATURE: optimize query performance by up to 10x on systems with many CPU cores. See . FEATURE: add the following metrics at `/metrics` page for every VictoraMetrics app: `processresidentmemoryanonbytes` - RSS share for memory allocated by the process itself. This share cannot be freed by the OS, so it must be taken into account by OOM killer. `processresidentmemoryfilebytes` - RSS share for page cache memory (aka memory-mapped files). This share can be freed by the OS at any time, so it must be ignored by OOM killer. `processresidentmemorysharedbytes` - RSS share for memory shared with other processes (aka shared memory). This share can be freed by the OS at any time, so it must be ignored by OOM

`processresidentmemorypeakbytes` - peak RSS usage for the process. `processvirtualmemorypeakbytes` - peak virtual memory usage for the process. FEATURE: accept and enforce `extralabel=<labelname>=<label_value>` query arg at . FEATURE: use InfluxDB field as metric name if measurement is empty and `-influxSkipSingleField` command-line is set. See . FEATURE: vmagent: add `-promscrape.consul.waitTime` command-line flag for tuning the maximum wait time for Consul service discovery. See . FEATURE: vmagent: add `vmpromscrapediscoverykubernetesstaleresourceversions_total` metric for monitoring the frequency of `too old resource version` errors during Kubernetes service discovery. FEATURE: single-node VictoriaMetrics: log metrics with timestamps older than `-search.cacheTimestampOffset` compared to the current time. See for details. BUGFIX: prevent from infinite loop on `{__graphite__="..."}` filters when a metric name contains ``, `{` or `[` chars. BUGFIX: prevent from infinite loop in `/metrics/find` and `/metrics/expand` when they match metric names or labels with ``, `{` or `[` chars. BUGFIX: do not merge duplicate time series during requests to `/api/v1/query`. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1141> BUGFIX: vmagent: properly handle `too old resource version` error messages from Kubernetes watch API. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1150> BUGFIX: vmagent: do not retry sending data blocks if remote storage returns `400 Bad Request` error. The number of dropped blocks due to such errors can be monitored with `vmagentremotewritepacketsdroppedtotal` metrics. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1149> BUGFIX: properly calculate `summarize` and `Series` functions in . Released at 2021-03-17 FEATURE: add the following functions to : `histogram_avg(buckets)` - returns the average value for the given buckets. `histogram_stdvar(buckets)` - returns standard variance for the given buckets. `histogram_stddev(buckets)` - returns standard deviation for the given buckets. FEATURE: export `vmavailablememorybytes` and `vmavailablecpucores` metrics, which show the number of available RAM and available CPU cores for VictoriaMetrics apps. FEATURE: export `vmindexsearchdurationseconds` histogram, which can be used for troubleshooting time series search performance. FEATURE: vmagent: add ability to replicate scrape targets among `vmagent` instances in the cluster with `-promscrape.cluster.replicationFactor` command-line flag. See . FEATURE: vmagent: accept `scrapeoffset` option at `scrapeconfig`. This option may be useful when scrapes must start at the specified offset of every scrape interval. See for details. FEATURE: vmagent: support `proxytlsconfig`, `proxybasicauth`, `proxybearertoken` and `proxybearertokenfile` options at `scrapeconfig` section for configuring proxies specified via `proxy_url`. See . FEATURE: vmauth: allow using regexp paths in `url_map`. See for details. FEATURE: accept `rounddigits` query arg at `/api/v1/query` and `/api/v1/queryrange` handlers. This option can be set at Prometheus datasource in Grafana for limiting the number of digits after the decimal point in response values. FEATURE: add `-influx.databaseNames` command-line flag, which can be used for accepting data from some Telegraf plugins such as . See . FEATURE: add `-logNewSeries` command-line flag, which can be used for debugging the source of time series churn rate. FEATURE: publish Windows builds for , , and at `vmutils-windows-.zip` archives at . FEATURE: listen for IPv6 UDP if `-enableTCP6` command-line flag is passed to VictoriaMetrics. See . BUGFIX: vmagent: prevent from high CPU usage bug during failing scrapes with small `scrape_timeout` (less than a few seconds). BUGFIX: vmagent: reduce memory usage when Kubernetes service discovery is used in big number of distinct scrape config jobs by sharing Kubernetes object cache. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1113> BUGFIX: vmagent: apply `samplelimit` only after `metricrelabelconfigs` are applied as Prometheus does. Previously the `samplelimit` was applied before metrics relabeling. BUGFIX: vmagent: properly apply `tlsconfig`, `basicauth` and `bearertoken` to proxy connections if `proxyurl` option is set. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1116> BUGFIX: vmagent: properly scrape targets via https proxy specified in `proxyurl` if `insecureskipverify` flag isn't set in `tlsconfig` section. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1116> BUGFUX: avoid `duplicate time series` error if `prometheus_buckets()` covers a time range with distinct set of

BUGFIX: prevent exponent overflow when processing extremely small values close to zero such as `2.964393875E-314`. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1114> BUGFIX: do not include datapoints with a timestamp `t-d` when returning results from `/api/v1/query?query=m[d]&time=t` as Prometheus does. BUGFIX: do not crash if a query contains `histogramovertime()` function name with uppercase chars. For example, `HistogramOverTime(m[5m])`. Released at 2021-03-03 BUGFIX: vmagent: fix a panic in Kubernetes service discovery when a target is filtered out with relabeling. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1107> BUGFIX: vmagent: fix Kubernetes service discovery for `role: ingress`. See <https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1110> Released at 2021-03-02 FEATURE: add `sign(q)` and `clamp(q, min, max)` functions, which are planned to be added in . The `lastovertime(m. FEATURE: vmagent: add `scrapealigninterval` config option, which can be used for aligning scrapes to the beginning of the configured interval. See for details. FEATURE: expose io-related metrics at `/metrics` page for every VictoriaMetrics component: `processioreadbytestotal` - the number of bytes read via io syscalls such as read and pread `processiowrittenbytestotal` - the number of bytes written via io syscalls such as write and pwrite `processioreadsyscallstotal` - the number of read syscalls such as read and pread `processiowritesyscallstotal` - the number of write syscalls such as write and pwrite `processiostoragereadbytes_total` - the number of bytes read from storage layer `processiostoragewrittenbytes_total` - the number of bytes written to storage layer FEATURE: vmagent: add ability to spread scrape targets among multiple `vmagent` instances. See and for details. FEATURE: vmagent: use watch API for Kubernetes service discovery. This should reduce load on Kubernetes API server when it tracks big number of objects (for example, 10K pods). This should also reduce the time needed for k8s targets discovery. See for details. FEATURE: vmagent: export `vmpromscrapetargetrelabelduration_seconds` metric, which can be used for monitoring the time spend on relabeling for discovered targets. FEATURE: vmagent: optimize performance for common cases. FEATURE: add `increase_pure(m for details. FEATURE: increase accuracy for `buckets_limit(limit, buckets)` results for small `limit` values. See for details. FEATURE: vmagent: initial support for Windows build with `CGO_ENABLED=0 GOOS=windows go build ./app/vmagent`. See and . FEATURE: vmagent: support WebIdentityToken auth in EC2 service discovery. See for details. FEATURE: vmalert: properly process query params in `-datasource.url` and `-remoteRead.url` command-line flags. See for details. BUGFIX: vmagent: properly apply `-remoteWrite.rateLimit` when `-remoteWrite.queues` is greater than 1. Previously there was a data race, which could prevent from proper rate limiting. BUGFIX: vmagent: properly perform graceful shutdown on `SIGINT` and `SIGTERM` signals. The graceful shutdown has been broken in `v1.54.0`. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1065> BUGFIX: reduce the probability of `duplicate time series` errors when querying Kubernetes metrics. BUGFIX: properly calculate `histogram_quantile()` over time series with only a single non-zero bucket with `{le="+Inf"}`. Previously `NaN` was returned, now the value for the last bucket before `{le="+Inf"}` is returned like Prometheus does. BUGFIX: vmselect: do not cache partial query results on timeout when receiving data from `vmstorage` nodes. See <https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1085> BUGFIX: properly handle `stale NFS file handle` error. BUGFIX: properly cache query results when `extralabel` query arg is used. Previously the cached results could clash for different `extralabel` values. See <https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1095> BUGFIX: fix `http: superfluous response.WriteHeader call` issue. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1078> BUGFIX: fix arm64 builds due to the issue in `github.com/golang/snappy`. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1074> BUGFIX: fix `index out of range [1024819115206086200] with length 27` panic, which could occur when `1e-9` value is passed to VictoriaMetrics histogram. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1096> BUGFIX: fix parsing for Graphite line with empty tags such as `foo; 123 456`. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1100> BUGFIX: unescape only `\\`, `\n` and `\"` in label names when parsing Prometheus text exposition format as Prometheus does. Previously other escape sequences could be improperly

Released at 2021-08-18 BUGFIX: properly handle queries containing a filter on metric name plus any number of negative filters and zero non-negative filters. For example, `nodecpuseconds_total{mode!="idle"}`. The bug was introduced in . Released at 2021-02-18 FEATURE: optimize searching for matching metrics for `metric{<labelfilters>}` queries if `<labelfilters>` contains at least a single filter. For example, the query `up{job="foobar"}` should find the matching time series much faster than previously. FEATURE: reduce execution times for `q1 <binary_op> q2` queries by executing `q1` and `q2` in parallel. FEATURE: switch from Go1.15 to for building prod binaries. FEATURE: single-node VictoriaMetrics now accepts requests to handlers with `/prometheus` and `/graphite` prefixes such as `/prometheus/api/v1/query`. This improves compatibility with . FEATURE: expose `processopenfds` and `processmaxfds` metrics. These metrics can be used for alerting when `processopenfds` reaches `processmaxfds`. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/402> and <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1037> FEATURE: vmalert: add `-datasource.appendTypePrefix` command-line option for querying both Prometheus and Graphite datasource in cluster version of VictoriaMetrics. See for details. FEATURE: vmauth: add ability to route requests from a single user to multiple destinations depending on the requested paths. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1064> FEATURE: remove dependency on external programs such as `cat`, `grep` and `cut` when detecting cpu and memory limits inside Docker or LXC container. FEATURE: vmagent: add `__meta_kubernetes_endpoints_label_`, `meta_kubernetes_endpoints_labelpresent_*`, `metakubernetesendpointsannotation` and `__meta_kubernetes_endpoints_annotationpresent_` labels for `role: endpoints` in Kubernetes service discovery. These labels where added in Prometheus 2.25. FEATURE: reduce the minimum supported retention period for inverted index (aka `indexdb`) from one month to one day. This should reduce disk space usage for `<-storageDataPath>/indexdb` folder if `-retentionPeriod` is set to values smaller than one month. FEATURE: vmselect: export per-tenant metrics `vmvmselecthttprequeststotal` and `vmvmselecthttprequestsdurationmstotal` . Other per-tenant metrics are available as a part of . See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/932> for details. BUGFIX: properly convert regexp tag filters containing escaped dots to non-regexp tag filters. For example, `{foo=~"bar\.baz"}` should be converted to `{foo="bar.baz"}`. Previously it was incorrectly converted to `{foo="bar\.baz"}`, which could result in missing time series for this tag filter. BUGFIX: do not spam error logs when discovering Docker Swarm targets without dedicated IP. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1028> . BUGFIX: properly embed timezone data into VictoriaMetrics apps. This should fix `-loggerTimezone` usage inside Docker containers. BUGFIX: properly build Docker images for non-amd64 architectures (arm, arm64, ppc64le, 386) on . Previously these images were incorrectly based on amd64 base image, so they didn't work. BUGFIX: vmagent: return back unsent block to the queue during graceful shutdown. Previously this block could be dropped if remote storage is unavailable during vmagent shutdown. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1065> . Released at 2021-02-03 BUGFIX: vmselect: fix the bug peventing from proper searching by Graphite filter with wildcards such as `{__graphite__="foo..bar"}`. Released at 2021-02-03 FEATURE: added to VictoriaMetrics release process. Now it is packaged in `vmutils-.tar.gz` archive on . Source code for `vmctl` tool has been moved from to . FEATURE: added `-loggerTimezone` command-line flag for adjusting time zone for timestamps in log messages. By default UTC is used. FEATURE: added `-search.maxStepForPointsAdjustment` command-line flag, which can be used for disabling adjustment for points returned by `/api/v1/query_range` handler if such points have timestamps closer than `-search.latencyOffset` to the current time. Such points may contain incomplete data, so they are substituted by the previous values for `step` query args smaller than one minute by default. FEATURE: vmselect: added ability to use Graphite-compatible filters in MetricsQL via `{__graphite__="foo..bar"}` syntax. This expression is equivalent to `{name=~"foo*[.]bar"}`, but it works faster and it is easier to use when migrating from Graphite to VictoriaMetrics. This feature deprecates the usage of `-search.treatDotsAsIsInRegexps` command-line flag. FEATURE: vmselect: added ability to set additional label filters, which must be applied during

Such label filters can be set via optional `extralabel` query arg, which is accepted by handlers. For example, the request to `/api/v1/queryrange?extralabel=tenantid=123&query=<query>` adds `{tenantid="123"}` label filter to the given `<query>`. It is expected that the `extralabel` query arg is automatically set by auth proxy sitting in front of VictoriaMetrics. if you need assistance with such a proxy. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1021> . FEATURE: vmalert: added `-datasource.queryStep` command-line flag for passing optional `step` query arg to `/api/v1/query` endpoint. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1025> FEATURE: vmalert: added ability to query Graphite datasource when evaluating alerting and recording rules. See for details. FEATURE: vmagent: added `-remoteWrite.roundDigits` command-line option for rounding metric values to the given number of decimal digits after the point before sending the metric to the corresponding `-remoteWrite.url`. This option can be used for improving data compression on the remote storage, because values with lower number of decimal digits can be compressed better than values with bigger number of decimal digits. FEATURE: vmagent: added `-remoteWrite.rateLimit` command-line flag for limiting data transfer rate to `-remoteWrite.url`. This may be useful when big amounts of buffered data is sent after temporarily unavailability of the remote storage. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1035> FEATURE: vmagent: export the following additional metrics, which may be useful during troubleshooting: `vmpromscrapescrapesfailedperurltotal` `vmpromscrapescrapesskippedbysamplelimitperurl_total` `vmpromscrapediscoveryrequeststotal` `vmpromscrapediscoveryretriestotal` `vmpromscrapescraperetriestotal` `vmpromscrapeservicediscoveryduration_seconds` FEATURE: vmselect: initial implementation for . BUGFIX: vmagent: reduce HTTP reconnection rate for scrape targets. Previously vmagent could errorneusly close HTTP keep-alive connections more frequently than needed. BUGFIX: vmagent: retry scrape and service discovery requests when the remote server closes HTTP keep-alive connection. Previously `disablekeepalive: true` option could be used under `scrapeconfigs` section when working with such servers. Released at 2021-01-13 FEATURE: provide a sample list of alerting rules for VictoriaMetrics components. It is available . FEATURE: disable final merge for data for the previous month at the beginning of new month, since it may result in high disk IO and CPU usage. Final merge can be enabled by setting `-finalMergeDelay` command-line flag to positive duration. FEATURE: add `tfirstovertime(m for returning timestamps for the first and the last data point in `m` over `d` duration. FEATURE: add ability to pass multiple labels to `sortbylabel()` and `sortbylabel_desc()` functions. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/992> . FEATURE: enforce at least TLS v1.2 when accepting HTTPS requests if `-tls`, `-tlsCertFile` and `-tlsKeyFile` command-line flags are set, because older TLS protocols such as v1.0 and v1.1 have been deprecated due to security vulnerabilities. FEATURE: support `extra_label` query arg for all HTTP-based . This query arg can be used for specifying extra labels which should be added for the ingested data. FEATURE: vmbackup: increase backup chunk size from 128MB to 1GB. This should reduce the number of Object storage API calls during backups by 8x. This may also reduce costs, since object storage API calls usually have non-zero costs. See <https://aws.amazon.com/s3/pricing/> and <https://cloud.google.com/storage/pricing#operations-pricing> . BUGFIX: properly parse escaped unicode chars in MetricsQL metric names, label names and function names. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/990> BUGFIX: override user-provided labels with labels set in `extra_label` query args during data ingestion over HTTP-based protocols. BUGFIX: vmagent: prevent from `dialing to the given TCP address time out` error when scraping big number of unavailable targets. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/987> BUGFIX: vmagent: properly show scrape duration on `/targets` page. Previously it was incorrectly shown as 0.000s. BUGFIX: vmagent: properly log errors when `-promscrape.streamParse` command-line flag is set. See <https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1009> BUGFIX: vmagent: properly suppress errors when both `-promscrape.suppressScrapeErrors` and `-promscrape.streamParse` command-line flags are set. See <https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1009> . BUGFIX: vmalert: return non-empty result in template func `query` stub to pass validation. See <https://github.com/VictoriaMetrics/VictoriaMetrics/issues/989> . BUGFIX: upgrade base image for Docker packages from Alpine 3.12.1 to Alpine 3.12.3 in order to fix potential security