v1.71.0 #
Released at 2021-12-20
Update notes: deduplication logic was slightly changed on the release, which may cause extra
background merges
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: VictoriaMetrics Enterprise : add multi-level downsampling support. See these docs and this feature request .
FEATURE: vmui : add ability to analyze the correlation between two queries on a single graph. Just click
+Querybutton, enter the second query in the newly appeared input field and pressCtrl+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 this pull request .FEATURE: vmui : 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[]=series_selectorquery args at Prometheus query APIs additionally toextra_labelquery args. This allows enforcing additional filters for all the Prometheus query APIs by using vmgateway or vmauth . See this feature request .FEATURE: vmauth : allow specifying
httpandhttpsurls in-auth.configcommand-line flag. See this pull request . Thanks for @TFM93 .FEATURE: vmagent : allow specifying
httpandhttpsurls in the following command-line flags:-promscrape.config,-remoteWrite.relabelConfigand-remoteWrite.urlRelabelConfig.FEATURE: vminsert: allow specifying
httpandhttpsurls in-relabelConfigcommand-line flag.FEATURE: vminsert: add
-maxLabelValueLencommand-line flag for the ability to configure the maximum length of label value. See this feature request .FEATURE: preserve the order of time series passed to limit_offset function. This allows implementing series paging via
limit_offset(limit, offset, sort_by_label(...)). See this and this issues.FEATURE: automatically convert
(value1|...|valueN)into{value1,...,valueN}inside__graphite__pseudo-label. This allows using Grafana multi-value template variables inside__graphite__pseudo-label. For example,{__graphite__=~"foo.($bar)"}is expanded to{__graphite__=~"foo.{x,y}"}if bothxandyare selected for$bartemplate variable. See these docs for details.FEATURE: add timestamp_with_name function. It works the same as timestamp , but leaves the original time series names, so it can be used in queries, which match multiple time series names:
timestamp_with_name({foo="bar"}[1h]). See this comment for more context.FEATURE: add changes_prometheus , increase_prometheus and delta_prometheus 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()anddelta()functions is needed to be preserved. VictoriaMetrics uses slightly different behaviour forchanges(),increase()anddelta()functions by default - see this article for details. See this issue .BUGFIX: fix
unaligned 64-bit atomic operationpanic on 32-bit architectures, which has been introduced in v1.70.0. See this issue .BUGFIX: vmalert : restore the ability to use
$labels.alertnamein labels templating. See this issue .BUGFIX: vmui : add missing
querycaption to the input field for the query. See this issue .BUGFIX: vmui : fix navigation over query history with
Ctrl+up/downand fix zoom relatively to the cursor position. See this pull request .BUGFIX: deduplicate samples more thoroughly if deduplication 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: vmagent : follow up to 5 redirects when
follow_redirects: trueis 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 this issue .BUGFIX: de-duplicate data exported via /api/v1/export/csv by default if deduplication is enabled. The de-duplication can be disabled by passing
reduce_mem_usage=1query arg to/api/v1/export/csv. See this issue .BUGFIX: vmalert : properly store historical data to old Prometheus versions. See this issue .
v1.70.0 #
Released at 2021-12-02
FEATURE: vmalert : add ability to pass arbitrary query args to
-datasource.urlon a per-group basis viaparamsoption. See this pull request .FEATURE: add
now()function to MetricsQL. This function returns the current timestamp in seconds. See these docs .FEATURE: vmauth: allow using optional
namefield in configs. This field is then used asusernamelabel value forvmauth_user_requests_totalmetric. See this feature request .FEATURE: vmagent: export
vm_persistentqueue_read_duration_seconds_totalandvm_persistentqueue_write_duration_seconds_totalmetrics, which can be used for detecting persistent queue saturation withrate(vm_persistentqueue_write_duration_seconds_total) > 0.9alerting rule.FEATURE: export
vm_filestream_read_duration_seconds_totalandvm_filestream_write_duration_seconds_totalmetrics, which can be used for detecting persistent disk saturation withrate(vm_filestream_read_duration_seconds_total) > 0.9alerting rule.FEATURE: export
vm_cache_size_max_bytesmetrics, which show capacity for various caches. These metrics can be used for determining caches with reach its capacity withvm_cache_size_bytes / vm_cache_size_max_bytes > 0.9query.FEATURE: vmbackup , vmrestore : add
-s3ForcePathStylecommand-line flag, which can be used for making backups to Aliyun OSS . See this pull request .FEATURE: vmctl : improve data migration from OpenTSDB. See this pull request . Thanks to @johnseekins .
FEATURE: suppress
connection reset by peererrors 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: vmui : store the display type in URL, so it isn’t lost when copy-pasting the URL. See this feature request .
FEATURE: vmalert: make
-notifier.urlcommand-line flag optional. This flag can be omitted ifvmalertis used solely for recording rules and doesn’t evaluate alerting rules. See this pull request .FEATURE: vmbackup , vmrestore : export internal metrics at
http://vmbackup:8420/metricsandhttp://vmrestore:8421/metricsfor better visibility of the backup/restore process.FEATURE: allow trailing whitespace after the timestamp when parsing Graphite plaintext lines . See this issue .
FEATURE: expose
/-/healthyand/-/readyendpoints as Prometheus does. This is needed for improving integration with third-party solutions, which rely on these endpoints. See this issue .BUGFIX: vmagent: prevent from scraping duplicate targets if
-promscrape.dropOriginalLabelscommand-line flag is set. See this issue . Thanks to @guidao for the fix.BUGFIX: vmstorage enterprise : added missing
vm_tenant_used_tenant_bytesmetric, which shows the approximate per-tenant disk usage. See these docs and this issue .BUGFIX: vmauth: properly take into account the value passed to
-maxIdleConnsPerBackendcommand-line flag. See this issue .BUGFIX: vmagent: fix reading data from Kafka .
BUGFIX: vmalert: fix replay mode in enterprise version.
BUGFIX: consistently return zero from deriv() function applied to a constant time series. Previously it could return small non-zero values in this case.
BUGFIX: vmrestore : 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 this issue .
BUGFIX: vmui : do not store the last query across vmui page reloads. See this issue .
BUGFIX: vmui : fix
Cannot read properties of undefinederror at table view. See this issue .
v1.69.0 #
Released at 2021-11-08
FEATURE: vmalert: allow groups with empty rules list like Prometheus does. See this pull request .
FEATURE: vmalert: allow groups with default
tenantin-clusterMode. Defaulttenantvalues can be specified via-defaultTenant.prometheusand-defaultTenant.graphite. See these docs .FEATURE: vmagent: add
collapseandexpandbuttons per each group of targets with the samejob_nameathttp://vmagent:8429/targetspage.FEATURE: automatically detect timestamp precision (ns, us, ms or s) for the data ingested into VictoriaMetrics via InfluxDB line protocol .
FEATURE: vmagent: add ability to protect
/configpage with auth key via-configAuthKeycommand-line flag. This page may contain sensitive config information, so it may be good to restrict access to this page. See this issue .FEATURE: vmagent: hide passwords and auth tokens at
/configpage like Prometheus does. See this issue .FEATURE: vmagent: add
-promscrape.maxResponseHeadersSizecommand-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.urlflag values are specified). This should improve data ingestion speed.FEATURE: vmagent: add
-remoteWrite.maxRowsPerBlockcommand-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 writing data to Kafka .
FEATURE: add label_graphite_group function for extracting the given groups from Graphite metric names.
FEATURE: add duration_over_time function for calculating the actual lifetime of the time series with possible gaps. See this feature request .
FEATURE: add limit_offset function, which can be used for implementing simple paging over big number of time series. See this feature request .
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 stream parse mode . See this issue .
BUGFIX: vmagent: properly display
proxy_urlconfig option athttp://vmagent:8429/configpage. See this issue .BUGFIX: fix tests for Apple M1. See this issue .
v1.68.0 #
Released at 2021-10-22
FEATURE: vmagent: expose
-promscrape.configcontents at/configpage as Prometheus does. See this feature request .FEATURE: vmagent: add
show original labelsbutton per each scrape target displayed athttp://vmagent:8429/targetspage. This should improve debuggability for service discovery and relabeling issues similar to this one . See this feature request .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
vmagentnode in the cluster. See this issue .FEATURE: vmagent: automatically switch to stream parsing mode if the response from the given target exceeds the command-line flag value
-promscrape.minResponseSizeForStreamParse. This should reduce memory usage whenvmagentscrapes targets with non-uniform response sizes (this is the case in Kubernetes monitoring).FEATURE: vmagent: send Prometheus-like staleness marks in stream parsing mode . Previously staleness marks weren’t sent in stream parsing mode. See these docs for details.
FEATURE: vmagent: properly calculate
scrape_series_addedmetric for targets in stream parsing mode . Previously it was set to 0 in stream parsing mode. See more details about this metric .FEATURE: vmagent: expose
promscrape_series_limit_max_seriesandpromscrape_series_limit_current_seriesmetrics athttp://vmagent:8429/metricsfor scrape targets with the enabled series limiter .FEATURE: vmagent: return error if
sample_limitorseries_limitoptions are set when stream parsing mode is enabled, since these limits cannot be applied in stream parsing mode.FEATURE: vmalert: add
-remoteRead.disablePathAppendcommand-line flag, which allows specifying the full-remoteRead.url. If-remoteRead.disablePathAppendis set, thenvmalertdoesn’t add/api/v1/querysuffix to-remoteRead.url.FEATURE: add trigonometric functions, which are going to be added in Prometheus 2.31 : acosh , asinh , atan , atanh , cosh , deg , rad , sinh , tan , tanh . Also add
atan2binary operator. See this pull request .FEATURE: consistently return the same set of time series from limitk function. This improves the usability of periodically refreshed graphs.
FEATURE: vmui : various UX improvements. See this pull request and these docs .
FEATURE: vmauth : add ability to specify HTTP headers, which will be sent in requests to backends. See this feature request .
FEATURE: add
/flagspage 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 ingesting data in Graphite plaintext protocol . Such separators are supported by Carbon-c-relay .
BUGFIX: vmstorage: fix
unaligned 64-bit atomic operationpanic 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 load. This should reduce the number of TCP sockets in
TIME_WAITstate atvmalertandvmauthunder high load. See this pull request .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) > 0and expr:sum(metric2) by (job) > 0could result into same labelsetjob: "job". The bugfix adds all extra labels right after receiving response from the datasource. See this pull request .BUGFIX: vmalert: fix links in Web UI . See this pull request .
BUGFIX: vmagent: set
honor_timestamps: trueby default in scrape configs 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/targetspage like Prometheus does. Previously they were grouped by the job name after relabeling, which may result in unexpected empty target groups. See this issue .BUGFIX: vmctl : fix importing boolean fields from InfluxDB line protocol. See this issue .
v1.67.0 #
Released at 2021-10-08
FEATURE: add ability to accept metrics from DataDog agent and DogStatsD . See these docs . This option simplifies the migration path from DataDog to VictoriaMetrics. See also this issue .
FEATURE: vmagent enterprise : add support for data reading and writing from/to Apache Kafka . See these docs .
FEATURE: vmui: switch to μPlot and add ability to naturally scroll and zoom graphs. See these docs . Thanks to @Loori-R.
FEATURE: vmstorage: stop accepting new data if
-storageDataPathdirectory contains less than-storage.minFreeDiskSpaceBytesof free space. This should prevent fromout of disk spacecrashes. See this feature request .FEATURE: calculate quantiles in the same way as Prometheus does in such functions as quantile_over_time and quantile . Previously results from VictoriaMetrics could be slightly different than results from Prometheus. See this and this issues.
FEATURE: add
rollup_scrape_interval(m[d])function to MetricsQL , which returnsmin,maxandavgvalues for the interval between samples formon the given lookbehind windowd.FEATURE: add
topk_last(k, q)andbottomk_last(k, q)functions to MetricsQL , which return up toktime series fromqwith the maximum / minimum last value on the graph.BUGFIX: align behavior of the queries
a or on (labels) b,a and on (labels) banda unless on (labels) bwherebhas multiple time series with the givenlabelsto Prometheus behavior. See this pull request .BUGFIX: vmagent: fix
openstack_sd_configservice discovery when bothdomain_nameandproject_idconfig options are set. See this issue .BUGFIX: return proper values (zeroes) from stddev_over_time and stdvar_over_time 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 multi-level cluster setup . See this issue .
v1.66.2 #
Released at 2021-09-23
FEATURE: vmagent: add
vm_promscrape_max_scrape_size_exceeded_errors_totalmetric for counting of the failed scrapes due to the exceeded response size (the response size limit can be configured via-promscrape.maxScrapeSizecommand-line flag). See this issue .BUGFIX: vmalert: properly reload rule groups if only the
intervalconfig option is changed. See this issue .BUGFIX: properly handle
{__name__=~"prefix(suffix1|suffix2)",other_label="..."}queries. They may return unexpected empty responses since v1.66.0. See this issue .
v1.66.1 #
Released at 2021-09-22
FEATURE: add
-clusterand/or-enterprisesuffixes toshort_versionlabel atvm_app_versionmetric exposed at/metricspage of every VictoriaMetrics component. See this issue .BUGFIX: vmselect: fix accessing Graphite APIs . The access has been broken in v1.66.0, because
/graphite/*path prefix accidentally clashed with/graph*path prefix used for VictoriaMetrics UI (akavmui).BUGFIX: fix parsing
regex: <bool_or_number>in relabeling rules (for example,regex: trueorregex: 123). The bug has been introduced in v1.66.0.
v1.66.0 #
Released at 2021-09-20
FEATURE: vmalert: add web UI with the list of alerting groups, alerts and alert statuses. See this pull request .
FEATURE: vmalert: add
-rule.maxResolveDurationcommand-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 this issue .FEATURE: vmalert: add support for Bearer token authorization for
-datasource.url,-remoteRead.urland-remoteWrite.url. See this issue .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 these docs for details.
FEATURE: vmagent: add ability to set
series_limitoption for a particular scrape target via__series_limit__label. This allows setting the limit on the number of time series on a per-target basis. See these docs for details.FEATURE: vmagent: add ability to set
stream_parseoption for a particular scrape target via__stream_parse__label. This allows managing the stream parsing mode on a per-target basis. See these docs for details.FEATURE: vmagent: add ability to set
scrape_intervalandscrape_timeoutoptions for a particular target via__scrape_interval__and__scrape_timeout__labels in the same way as Prometheus 2.30 does. See this pull request .FEATURE: vmagent: generate
scrape_timeout_secondsmetric per each scrape target, so the target saturation could be calculated withscrape_duration_seconds / scrape_timeout_seconds. See the corresponding pull request from Prometheus 2.30 .FEATURE: vmagent: reduce CPU usage when calculating the number of newly added series per scrape (this number is sent to remote storage in
scrape_series_addedmetric).FEATURE: vmagent: reduce CPU usage when applying
series_limitto scrape targets with constant set of metrics. See more information aboutseries_limithere .FEATURE: vminsert: disable rerouting by default when a few of
vmstoragenodes start accepting data at lower speed than the rest ofvmstoragenodes. This should improve VictoriaMetrics cluster stability during rolling restarts and during spikes in time series churn rate . The rerouting can be enabled by passing-disableRerouting=falsecommand-line flag tovminsert.FEATURE: vmauth: do not put invalid auth tokens into log by default due to security reasons. The logging can be returned back by passing
-logInvalidAuthTokenscommand-line flag tovmauth. Requests with invalid auth tokens are counted atvmagent_http_request_errors_total{reason="invalid_auth_token"}metric exposed byvmauthat/metricspage.FEATURE: add new relabeling actions:
keep_metricsanddrop_metrics. This simplifies metrics filtering by metric names. See these docs for more details.FEATURE: allow splitting long
regexin relabeling filters into an array of shorter regexps, which can be put into multiple lines for better readability and maintainability. See these docs for more details.FEATURE: optimize performance for queries with regexp filters on metric name like
{__name__=~"metric1|...|metricN"}. See this pull request from @faceair.FEATURE: vmui: use Prometheus-compatible query args, so
vmuicould be accessed from graph editor in Grafana. See this pull request . Thanks to @Loori-R.FEATURE: vmselect: automatically add missing port to
-storageNodehostnames. For example,-storageNode=vmstorage1,vmstorage2is automatically translated to-storageNode=vmstorage1:8401,vmstorage2:8401. This simplifies manual setup of VictoriaMetrics cluster .FEATURE: vminsert: automatically add missing port to
-storageNodehostnames. For example,-storageNode=vmstorage1,vmstorage2is automatically translated to-storageNode=vmstorage1:8400,vmstorage2:8400. This simplifies manual setup of VictoriaMetrics cluster .FEATURE: add mad(q) function to MetricsQL . It calculates Median absolute deviation for groups of points with identical timestamps across multiple time series.
FEATURE: add outliers_mad(tolerance, q) function to MetricsQL . It returns time series with peaks outside the Median absolute deviation multiplied by
tolerance.FEATURE: add
histogram_quantiles("phiLabel", phi1, ..., phiN, buckets)function to MetricsQL . It calculates the givenphi*-quantiles over the givenbucketsand returns time series per each quantile with the corresponding{phiLabel="phi*"}label.FEATURE: add
quantiles_over_time("phiLabel", phi1, ..., phiN, series_selector[d])function to MetricsQL . It calculates the givenphi*-quantiles over raw samples selected byseries_selectoron the given lookbehind windowd. It returns time series per each quantile with the corresponding{phiLabel="phi*"}label.FEATURE: enterprise : do not ask for
-eulaflag if-versionflag is passed to enterprise app. See this issue .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"}andmetric{label1="foo",label2="bar"}. Previously it was matching onlymetric{label1="foo",label2="bar"}. See this issue .BUGFIX: vmselect: reset connection timeouts after each request to
vmstorage. This should prevent fromcannot read data in 0.000 seconds: unexpected EOFwarning in logs. See this issue . Thanks to @mxlxm .BUGFIX: keep metric name for time series returned from rollup_candlestick function, since the returned series don’t change the meaning of the original series. See this issue .
BUGFIX: use Prometheus-compatible label value formatting for count_values 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
httpsscheme for wildcard TLS certificates forrole: ingresstargets in Kubernetes service discovery. See this issue .BUGFIX: vmagent: support host networking mode for
docker_sd_config. See this issue .BUGFIX: fix non-repeatable results from
quantile_over_time()function when the number of input samples exceeds 1000. See this issue .BUGFIX: vmagent: fix EC2 zone discovery when
filtersare specified in ec2_sc_config . See this issue .
v1.65.0 #
Released at 2021-09-01
FEATURE: vmagent: add ability to read scrape configs from multiple files specified in
scrape_config_filessection. See this issue .FEATURE: vmagent: reduce memory usage and CPU usage when Prometheus staleness tracking 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.seriesLimitPerTargetcommand-line option or on per-target basis viaseries_limitoption atscrape_configsection. See the updated docs on cardinality limiter and this issue .FEATURE: vmagent: discover
role: ingressandrole: endpointslicein kubernetes_sd_config via v1 API instead of v1beta1 API if Kubernetes supports it. This fixes service discovery in Kubernetes v1.22 and newer versions. See these docs .FEATURE: take into account failed queries in
vm_request_duration_secondssummary at/metrics. Previously only successful queries were taken into account. This could result in skewed summary. See this pull request .FEATURE: vmalert: add an official dashboard for vmalert. See these docs .
FEATURE: vmalert: add ability to set additional labels per group via
labelsconfig section. See this issue .FEATURE: vmalert: add
-disableAlertgroupLabelcommand-line flag for disabling the label with alert group name. This may be needed for proper deduplication in Alertmanager. See this issue .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 the release post for Go1.17 .
FEATURE: vmagent: expose
promscrape_discovery_http_errors_totalmetric, which can be used for monitoring the number of failed discovery attempts per eachhttp_sdconfig.FEATURE: do not reset response cache when a sample with old timestamp is ingested into VictoriaMetrics if
-search.disableAutoCacheResetcommand-line option is set. See this feature request .FEATURE: add
quantiles("phiLabel", phi1, ..., phiN, q)aggregate function to MetricsQL , which calculates the givenphi*quantiles over time series returned byq. See this feature request .BUGFIX: rename
signfunction tosgnin order to be consistent with PromQL. See this pull request from Prometheus .BUGFIX: vmagent: add
role: endpointslicein kubernetes_sd_config in order to be consistent with Prometheus. Previously this role was supported with incorrect name:role: endpointslices. Now bothendpointsliceandendpointslicesare supported. See the corresponding code in Prometheus .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 this issue .
BUGFIX: vmauth: remove trailing slash from the full url before requesting it from the backend. See this pull request .
BUGFIX: vmbackupmanager : fix timeout error when snapshot takes longer than 10 seconds. See this issue .
BUGFIX: properly parse OpenTSDB
putmessages with multiple spaces between message elements. See this issue . Thanks to @envzhu for the fix.
v1.64.1 #
Released at 2021-08-19
FEATURE: add
bitmap_and(q, mask),bitmap_or(q, mask)andbitmak_xor(q, mask)functions to MetricsQL . These functions allow performing bitwise operations over data points in time series. See this issue .FEATURE: vmalert: add
-remoteWrite.disablePathAppendcommand-line flag, which can be used when custom-remoteWrite.urlmust be specified. For example,./vmalert -disablePathAppend -remoteWrite.url='http://foo.bar/a/b/c?d=e'would write data tohttp://foo.bar/a/b/c?d=einstead ofhttp://foo.bar/a/b/c?d=e/api/v1/write. See this pull request .FEATURE: vmagent: add
-promscrape.noStaleMarkerscommand-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.noStaleMarkerscommand-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 this issue .
BUGFIX: vmagent: send Prometheus stale markers for the previously scraped metrics on failed scrapes like Prometheus does. See this article .
BUGFIX: upgrade base Docker image from Alpine 3.14.0 to Alpine 3.14.1 . This fixes potential security issues - see Alpine 3.14.1 release notes .
BUGFIX: disable overriding the lookbehind window
[d]atlast_over_time(m[d])ifdis smaller than the interval between samples, since users don’t expect implicit overriding of explicitly set[d]inlast_over_time(m[d]).
v1.64.0 #
Released at 2021-08-15
FEATURE: add support for Prometheus staleness markers. See this issue .
FEATURE: vmagent: automatically generate Prometheus staleness markers for the scraped metrics when scrape targets disappear in the same way as Prometheus does. See this issue .
FEATURE: add
present_over_time(m[d])function, which returns 1 ifmhas a least a single sample over the previous durationd. This function has been added also to Prometheus 2.29 .FEATURE: vmagent: support multitenant writes according to these docs . This allows using a single
vmagentinstance in front of VictoriaMetrics cluster for all the tenants. Thanks to @omarghader for the pull request . See this issue .FEATURE: vmagent: add
__meta_ec2_availability_zone_idlabel to discovered Amazon EC2 targets. This label is available in Prometheus starting from v2.29 .FEATURE: vmagent: add
__meta_gce_interface_ipv4_<name>labels to discovered GCE targets. These labels are available in Prometheus starting from v2.29 .FEATURE: add
-search.maxSamplesPerSeriescommand-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 this issue .FEATURE: add
-search.maxSamplesPerQuerycommand-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 the initial pull request .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
vmalert_alerting_rules_last_evaluation_samplesandvmalert_recording_rules_last_evaluation_samplesmetrics. See this issue .FEATURE: vminsert: expose
vm_rpc_send_duration_seconds_totalcounter, which can be used for determining high saturation of everyvminsert -> vmstoragelink with an alerting queryrate(vm_rpc_send_duration_seconds_total) > 0.9s. This query triggers when the link is saturated by more than 90%. This usually means that morevminsertorvmstoragenodes must be added to the cluster in order to increase the total number ofvminsert -> vmstoragelinks.FEATURE: vmagent: expose
vmagent_remotewrite_send_duration_seconds_totalcounter, which can be used for determining high saturation of every connection to remote storage with an alerting queryrate(vmagent_remotewrite_send_duration_seconds_total) > 0.9s. This query triggers when a connection is saturated by more than 90%. This usually means that-remoteWrite.queuescommand-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 this issue .
BUGFIX: fix corner cases for queries on time ranges exceeding 40 days. Previously some series can be missing in query results. See this issue .
BUGFIX: vmselect: return dummy response at
/rulespage in the same way as for/api/v1/rulespage. The/rulespage is requested by Grafana 8. See this issue for details.BUGFIX: vmbackup: automatically set default
us-east-1S3 region if it is missing. This should simplify using S3-compatible services such as MinIO for backups. See this issue .BUGFIX: vmselect: prevent from possible deadlock when multiple
targetquery args are passed to Graphite Render API .BUGFIX: return series with
a op blabels andNvalues for(a op b) default Nif(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 this issue .
BUGFIX: vmagent: restore highlighting in red for DOWN targets at
/targetspage. See this issue .
v1.63.0 #
Released at 2021-07-15
FEATURE: reduce memory usage by up to 30% on production workloads.
FEATURE: vmselect: embed vmui into a single-node VictoriaMetrics and into
vmselectcomponent of cluster version. See this feature request . The web interface is available at the following paths:/vmui/for a single-node VictoriaMetrics/select/<accountID>/vmui/forvmselectat cluster version of VictoriaMetrics
FEATURE: support durations anywhere in MetricsQL queries . For example,
sum_over_time(m[1h]) / 1his a valid query, which is equivalent tosum_over_time(m[1h]) / 3600.FEATURE: support durations without suffixes in MetricsQL queries . For example,
rate(m[3600])is a valid query, which is equivalent torate(m[1h]).FEATURE: export
vmselect_request_duration_secondsandvminsert_request_duration_secondsVictoriaMetrics histograms at/metricspage. 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:histogram_share(500ms, sum(rate(vmselect_request_duration_seconds_bucket[1h])) by (vmrange)).FEATURE: vmagent: dynamically reload client TLS certificates from disk on every mTLS connection . This should allow using
vmagentwith Istio service mesh . See this feature request .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
is_setlabel toflagmetrics. This allows determining explicitly set command-line flags with the queryflag{is_set="true"}.FEATURE: add ability to remove caches stored inside
<-storageDataPath>/cacheon startup ifreset_cache_on_startupfile is present there. See this feature request .BUGFIX: vmagent: remove
{ %space %}typo in/targetsoutput. The typo has been introduced in v1.62.0. See this issue .BUGFIX: vmagent: fix CSS styles on
/targetspage. See this issue .BUGFIX: vmalert: accept Prometheus-like durations in
intervalconfig option insidegroupsection. See this issue .BUGFIX: properly update
vm_merge_need_free_disk_spacemetric at/metricspage when there is no enough free disk space for performing optimal merges. See this issue .
v1.62.0 #
Released at 2021-06-25
FEATURE: vmagent: add service discovery for Docker (aka docker_sd_config ). See this pull request .
FEATURE: vmagent: add service discovery for DigitalOcean (aka digitalocean_sd_config ). See this feature request .
FEATURE: vmagent: change the default value for
-remoteWrite.queuesfrom 4 to2 * numCPUs. This should reduce scrape duration for highly loaded vmagent, which scrapes tens of thousands of targets. See this pull request .FEATURE: vmagent: show the number of samples the target returns during the last scrape on
/targetsand/api/v1/targetspages. This should simplify debugging targets, which may return too big or too low number of samples. See this feature request .FEATURE: vmagent: show jobs with zero discovered targets on
/targetspage. This should help debugging improperly configured scrape configs.FEATURE: vmagent: support for http-based service discovery (aka http_sd_config ), which has been added since Prometheus 2.28. See this feature request .
FEATURE: vmagent: support namespace in Consul service discovery in the same way as Prometheus 2.28 does. See this issue for details.
FEATURE: vmagent: support generic auth configs in
consul_sd_configsin the same way as Prometheus 2.28 does. See this issue for details.FEATURE: vmctl : 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 Prometheus query API ) if their execution duration exceeds-search.logSlowQueryDuration. This should simplify debugging slow requests to such handlers as/api/v1/labelsor/api/v1/seriesadditionally to/api/v1/queryand/api/v1/query_range, which were logged in the previous releases.FEATURE: vminsert: sort the
-storageNodelist in order to guarantee the identicalseries -> vmstoragemapping across all thevminsertnodes. This should reduce resource usage (RAM, CPU and disk IO) atvmstoragenodes ifvmstorageaddresses are passed in random order tovminsertnodes.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 this comment 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 v1.59.0 . See this commit and this comment 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 this issue .
BUGFIX: vmselect: return the last timestamp for the max / min value from
tmax_over_time(m[d])andtmin_over_time(m[d])MetricsQL functions as most users expect. See also this issue .BUGFIX: vmselect: return the expected value for
increase_pure()MetricsQL function after a gap in a time series. Previously incorrect too big value could be returned after the gap fromincrease_pure().
v1.61.1 #
Released at 2021-06-11
- BUGFIX: vmalert: fix recording rules, which were broken in v1.61.0. See this issue .
- BUGFIX: reset the on-disk cache for mapping from the full metric name to an internal metric id (e.g.
metric_name{labels} -> internal_metric_id) after deleting metrics via delete API . This should prevent from possible inconsistent state after unclean shutdown. This this issue .
v1.61.0 #
Released at 2021-06-09
FEATURE: vmalert: add support for backfilling (aka replay) of recording and alerting rules. See these docs and this feature request .
FEATURE: vmalert: add a command-line flag
-rule.configCheckIntervalfor automatic re-reading of-rulefiles without the need to send SIGHUP signal. See this issue .FEATURE: vmagent: respect the
sample_limitand-promscrape.maxScrapeSizevalues when scraping targets in stream parsing mode . See this pull request .FEATURE: vmauth: add ability to specify multiple
url_prefixentries for balancing the load among multiplevmselectand/orvminsertnodes in a cluster. See these docs .FEATURE: vminsert: add
-disableReroutingcommand-line flag for forcibly disabling the rerouting. This should help resolving this and this 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 this and this issues.
FEATURE: allow building VictoriaMetrics components for Solaris / SmartOS. See this issue .
FEATURE: vmagent: add ability to debug relabeling rules. See these docs and this issue .
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
eureka_sd_configs. See this pull request .BUGFIX: vmauth: do not panic on aborted http requests. See this issue .
BUGFIX: properly generate
targetproperty for*Series(foo.*.bar)responses returned from Graphite Render API . Previously thetargetcontained the expanded list of series forfoo.*.bar, e.g.sumSeries(foo.a.bar,foo.b.bar,...foo.z.bar). Now VictoriaMetrics returnssumSeries(foo.*.bar)as a target in the same way as Graphite does.
v1.60.0 #
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 these docs .
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 these docs .
FEATURE: vmalert: add ability to run alerting and recording rules for multiple tenants. See this issue and these docs .
FEATURE: vminsert: add support for data ingestion via other
vminsertnodes. This allows building multi-level data ingestion paths in VictoriaMetrics cluster by writing data from one level ofvminsertnodes to another level ofvminsertnodes. See these docs and this comment for details.FEATURE: vmagent: reload
bearer_token_file,credentials_fileandpassword_filecontents every second. This allows dynamically changing the contents of these files during target scraping and service discovery without the need to restartvmagent. See this issue .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 this issue .FEATURE: vmalert: add ability to pass
round_digitsquery arg to datasource via-datasource.roundDigitscommand-line flag. This can be used for limiting the number of decimal digits after the point in recording rule results. See this issue .FEATURE: return
X-Server-Hostnameheader 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
vmselectnodes in VictoriaMetrics cluster . This should allow processing heavy queries without the need to increase RAM size atvmselectnodes.FEATURE: add ability to filter
/api/v1/status/tsdboutput with arbitrary time series selectors passed viamatch[]query args. See these docs and this issue for details.FEATURE: automatically detect memory and cpu limits for VictoriaMetrics components running under cgroup v2 environments such as HashiCorp Nomad . See this issue .
FEATURE: vmauth: allow
-auth.configreloading via/-/reloadhttp endpoint. See this issue .FEATURE: add
timezone_offset(tz)function. It returns offset in seconds for the given timezonetzrelative to UTC. This can be useful when combining with datetime-related functions. For example,day_of_week(time()+timezone_offset("America/Los_Angeles"))would return weekdays forAmerica/Los_Angelestime zone. SpecialLocaltime zone can be used for returning an offset for the time zone set on the host where VictoriaMetrics runs. See this issue and MetricsQL docs for more details.FEATURE: vmagent: add support for OAuth2 authorization for scrape targets and service discovery in the same way as Prometheus does. See these docs .
FEATURE: vmagent: add support for OAuth2 authorization when writing data to
-remoteWrite.url. See-remoteWrite.oauth2.*config params in/path/to/vmagent -helpoutput.FEATURE: vmalert: add ability to set
extra_filter_labelsat alerting and recording group configs. See these docs .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
vmagentand at scrape target. See this issue .BUGFIX: vmagent: fix possible race when refreshing
role: endpointsandrole: endpointslicesscrape targets inkubernetes_sd_config. Previouslypodobjects could be updated after the relatedendpointsobject update. This could lead to missing scrape targets. See this issue .BUGFIX: vmagent: properly spread scrape targets among
vmagentreplicas if-promscrape.cluster.replicationFactorexceeds 1. See this pull request .BUGFIX: vmagent: limit
scrape_timeoutbyscrape_interval. This guarantees that only a single sample is lost during the configuredscrape_intervalwhen scrape target responds slowly. See this comment for details.BUGFIX: properly remove stale parts outside the configured retention if
-retentionPeriodis 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 reuse HTTP keep-alive connections to backends and datasources. Previously only 2 keep-alive connections per backend could be reused. Other connections were closed after the first request. See this issue 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 this issue .BUGFIX: vmctl: properly import InfluxDB rows if they have a field and a tag with identical names. See this issue .
BUGFIX: properly reload configs if
SIGHUPsignal arrives during service initialization. Previously suchSIGHUPsignal could be ignored and configs weren’t reloaded.BUGFIX: vmalert: properly import default rules from OpenShift. See this issue .
BUGFIX: reduce the probability of
the removal queue is fullpanic when highly loaded VictoriaMetrics stores data on NFS. See this issue .
v1.59.0 #
Released at 2021-05-01
FEATURE: improved new time series registration speed on systems with many CPU cores. See this issue . Thanks to @waldoweng for the idea and draft implementation .
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 this issue .
FEATURE: vmauth: add ability to set mandatory query args in
url_prefix. For example,url_prefix: http://vm:8428/?extra_label=team=devwould addextra_label=team=devquery arg to all the incoming requests. See the example for more details.FEATURE: vmctl: add OpenTSDB migration option. See more details here . 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 this issue .BUGFIX: vmagent: properly update
role: endpointsandrole: endpointslicesscrape targets if the underlying service objects are updated inkubernetes_sd_config. See this issue .BUGFIX: vmagent: apply
scrape_timeouton receiving the first response byte fromstream_parse: truescrape 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 here .BUGFIX: vmagent: eliminate possible data race when obtaining value for the metric
vm_persistentqueue_bytes_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 this issue .
v1.58.0 #
Released at 2021-04-08
FEATURE: vminsert and vmagent: add
-sortLabelscommand-line flag for sorting metric labels before pushing them tovmstorage. This should reduce the size ofMetricName -> internal_series_idcache (akavm_cache_size_bytes{type="storage/tsid"}) when ingesting samples for the same time series with distinct order of labels. For example,foo{k1="v1",k2="v2"}andfoo{k2="v2",k1="v1"}represent a single time series. 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 sumtime series returned fromtopk_*andbottomk_*functions from MetricsQL . For example,topk_avg(3, max(process_resident_memory_bytes) by (instance), "instance=other_sum")would return top 3 series frommax(process_resident_memory_bytes) by (instance)plus a series containing the sum of other series. Theothers sumseries will have{instance="other_sum"}label.FEATURE: do not delete
dst_labelwhen applyinglabel_copy(q, "src_label", "dst_label")andlabel_move(q, "src_label", "dst_label")to series withoutsrc_labeland with non-emptydst_label. See more details at MetricsQL docs .FEATURE: update Go builder from
v1.16.2tov1.16.3. This should fix these issues .FEATURE: vmagent: add support for
follow_redirectsoption toscrape_configssection in the same way as Prometheus 2.26 does .FEATURE: vmagent: add support for
authorizationsection in-promscrape.configin the same way as Prometheus 2.26 does .FEATURE: vmagent: add support for socks5 proxy in
proxy_urlconfig option. See this issue .FEATURE: vmagent: add support for
socks5 over tlsproxy inproxy_urlconfig option. It can be set up with the following config:proxy_url: "tls+socks5://proxy-addr:port".FEATURE: vmagent: reduce memory usage when
-remoteWrite.queuesis set to a big value. See this issue .FEATURE: vmagent: add AWS IAM roles for tasks support for EC2 service discovery according to these docs .
FEATURE: vmagent: add support for
proxy_tls_config,proxy_authorization,proxy_basic_auth,proxy_bearer_tokenandproxy_bearer_token_fileoptions inconsul_sd_config,dockerswarm_sd_configandeureka_sd_configsections.FEATURE: vmagent: pass
X-Prometheus-Scrape-Timeout-Secondsheader to scrape targets as Prometheus does. In this case scrape targets can limit the time needed for performing the scrape. See this comment for details.FEATURE: vmagent: drop corrupted persistent queue files at
-remoteWrite.tmpDataPathinstead of throwing a fatal error. Corrupted files can appear after unclean shutdown ofvmagentsuch as OOM kill or hardware reset. See this issue .FEATURE: vmauth: add support for authorization via bearer token . See the docs for details.
FEATURE: publish
arm64andamd64binaries for cluster version of VictoriaMetrics at releases page .BUGFIX: properly handle
/api/v1/labelsand/api/v1/label/<label_name>/valuesqueries on bigstart ... endtime range. This should fix big resource usage when VictoriaMetrics is queried with Promxy v0.0.62 or newer versions.BUGFIX: do not break sort order for series returned from
topk*,bottomk*andoutlierskMetricsQL functions. See this issue .BUGFIX: vmagent: properly work with simple HTTP proxies which don’t support
CONNECTmethod. For example, PushProx . See this issue .BUGFIX: vmagent: properly discover targets if multiple namespace selectors are put inside
kubernetes_sd_config. See this issue .BUGFIX: vmagent: properly discover
role: endpointsandrole: endpointslicestargets inkubernetes_sd_config. See this issue .BUGFIX: properly generate filename for
*.tar.gzarchive inside_checksums.txtfile posted at releases page . See this issue .
v1.57.1 #
Released at 2021-03-30
FEATURE: publish vmutils for
GOOS=armon releases page .BUGFIX: prevent from possible incomplete query results after timed out query.
BUGFIX: vmselect: remove
-search.storageTimeoutcommand-line flag, since it has the same meaning as-search.maxQueryDuration. See this issue .BUGFIX: vminsert: return back
typelabel to per-tenant metricvm_tenant_inserted_rows_total. See this issue .
v1.57.0 #
Released at 2021-03-29
FEATURE: optimize query performance by up to 10x on systems with many CPU cores. See this tweet .
FEATURE: add the following metrics at
/metricspage for every VictoriaMetrics app:process_resident_memory_anon_bytes- 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.process_resident_memory_file_bytes- 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.process_resident_memory_shared_bytes- 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 killer.process_resident_memory_peak_bytes- peak RSS usage for the process.process_virtual_memory_peak_bytes- peak virtual memory usage for the process.
FEATURE: accept and enforce
extra_label=<label_name>=<label_value>query arg at Graphite APIs .FEATURE: use InfluxDB field as metric name if measurement is empty and
-influxSkipSingleFieldcommand-line is set. See this issue .FEATURE: vmagent: add
-promscrape.consul.waitTimecommand-line flag for tuning the maximum wait time for Consul service discovery. See this issue .FEATURE: vmagent: add
vm_promscrape_discovery_kubernetes_stale_resource_versions_totalmetric for monitoring the frequency oftoo old resource versionerrors during Kubernetes service discovery.FEATURE: single-node VictoriaMetrics: log metrics with timestamps older than
-search.cacheTimestampOffsetcompared to the current time. See these docs for details.BUGFIX: prevent from infinite loop on
{__graphite__="..."}filters when a metric name contains*,{or[chars.BUGFIX: prevent from infinite loop in
/metrics/findand/metrics/expandGraphite Metrics API handlers 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/1141BUGFIX: vmagent: properly handle
too old resource versionerror messages from Kubernetes watch API. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1150BUGFIX: vmagent: do not retry sending data blocks if remote storage returns
400 Bad Requesterror. The number of dropped blocks due to such errors can be monitored withvmagent_remotewrite_packets_dropped_totalmetrics. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1149BUGFIX: properly calculate
summarizeand*Seriesfunctions in Graphite Render API .
v1.56.0 #
Released at 2021-03-17
FEATURE: add the following functions to MetricsQL :
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
vm_available_memory_bytesandvm_available_cpu_coresmetrics, which show the number of available RAM and available CPU cores for VictoriaMetrics apps.FEATURE: export
vm_index_search_duration_secondshistogram, which can be used for troubleshooting time series search performance.FEATURE: vmagent: add ability to replicate scrape targets among
vmagentinstances in the cluster with-promscrape.cluster.replicationFactorcommand-line flag. See these docs .FEATURE: vmagent: accept
scrape_offsetoption atscrape_config. This option may be useful when scrapes must start at the specified offset of every scrape interval. See these docs for details.FEATURE: vmagent: support
proxy_tls_config,proxy_basic_auth,proxy_bearer_tokenandproxy_bearer_token_fileoptions atscrape_configsection for configuring proxies specified viaproxy_url. See these docs .FEATURE: vmauth: allow using regexp paths in
url_map. See this issue for details.FEATURE: accept
round_digitsquery arg at/api/v1/queryand/api/v1/query_rangehandlers. 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.databaseNamescommand-line flag, which can be used for accepting data from some Telegraf plugins such as fluentd plugin . See this issue .FEATURE: add
-logNewSeriescommand-line flag, which can be used for debugging the source of time series churn rate.FEATURE: publish Windows builds for vmagent , vmalert , vmauth and vmctl at
vmutils-windows-*.ziparchives at releases page .FEATURE: listen for IPv6 UDP if
-enableTCP6command-line flag is passed to VictoriaMetrics. See this issue .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
sample_limitonly aftermetric_relabel_configsare applied as Prometheus does. Previously thesample_limitwas applied before metrics relabeling.BUGFIX: vmagent: properly apply
tls_config,basic_authandbearer_tokento proxy connections ifproxy_urloption is set. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1116BUGFIX: vmagent: properly scrape targets via https proxy specified in
proxy_urlifinsecure_skip_verifyflag isn’t set intls_configsection. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1116BUGFIX: avoid
duplicate time serieserror ifprometheus_buckets()covers a time range with distinct set of buckets.BUGFIX: prevent exponent overflow when processing extremely small values close to zero such as
2.964393875E-314. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1114BUGFIX: do not include datapoints with a timestamp
t-dwhen returning results from/api/v1/query?query=m[d]&time=tas Prometheus does.BUGFIX: do not crash if a query contains
histogram_over_time()function name with uppercase chars. For example,Histogram_Over_Time(m[5m]).
v1.55.1 #
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
v1.55.0 #
Released at 2021-03-02
FEATURE: add
sign(q)andclamp(q, min, max)functions, which are planned to be added in the upcoming Prometheus release . Thelast_over_time(m[d])function is already supported in MetricsQL .FEATURE: vmagent: add
scrape_align_intervalconfig option, which can be used for aligning scrapes to the beginning of the configured interval. See these docs for details.FEATURE: expose io-related metrics at
/metricspage for every VictoriaMetrics component:process_io_read_bytes_total- the number of bytes read via io syscalls such as read and preadprocess_io_written_bytes_total- the number of bytes written via io syscalls such as write and pwriteprocess_io_read_syscalls_total- the number of read syscalls such as read and preadprocess_io_write_syscalls_total- the number of write syscalls such as write and pwriteprocess_io_storage_read_bytes_total- the number of bytes read from storage layerprocess_io_storage_written_bytes_total- the number of bytes written to storage layer
FEATURE: vmagent: add ability to spread scrape targets among multiple
vmagentinstances. See these docs and this issue 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 this issue for details.
FEATURE: vmagent: export
vm_promscrape_target_relabel_duration_secondsmetric, which can be used for monitoring the time spend on relabeling for discovered targets.FEATURE: vmagent: optimize relabeling performance for common cases.
FEATURE: add
increase_pure(m[d])function to MetricsQL. It works the same asincrease(m[d])except of various edge cases. See this issue for details.FEATURE: increase accuracy for
buckets_limit(limit, buckets)results for smalllimitvalues. See MetricsQL docs for details.FEATURE: vmagent: initial support for Windows build with
CGO_ENABLED=0 GOOS=windows go build ./app/vmagent. See this and this issue .FEATURE: vmagent: support WebIdentityToken auth in EC2 service discovery. See this issue for details.
FEATURE: vmalert: properly process query params in
-datasource.urland-remoteRead.urlcommand-line flags. See this issue for details.BUGFIX: vmagent: properly apply
-remoteWrite.rateLimitwhen-remoteWrite.queuesis greater than 1. Previously there was a data race, which could prevent from proper rate limiting.BUGFIX: vmagent: properly perform graceful shutdown on
SIGINTandSIGTERMsignals. The graceful shutdown has been broken inv1.54.0. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1065BUGFIX: reduce the probability of
duplicate time serieserrors when querying Kubernetes metrics.BUGFIX: properly calculate
histogram_quantile()over time series with only a single non-zero bucket with{le="+Inf"}. PreviouslyNaNwas 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
vmstoragenodes. See https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1085BUGFIX: properly handle
stale NFS file handleerror.BUGFIX: properly cache query results when
extra_labelquery arg is used. Previously the cached results could clash for differentextra_labelvalues. See https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1095BUGFIX: fix
http: superfluous response.WriteHeader callissue. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1078BUGFIX: fix arm64 builds due to the issue in
github.com/golang/snappy. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1074BUGFIX: fix
index out of range [1024819115206086200] with length 27panic, which could occur when1e-9value is passed to VictoriaMetrics histogram. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1096BUGFIX: fix parsing for Graphite line with empty tags such as
foo; 123 456. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1100BUGFIX: unescape only
\\,\nand\"in label names when parsing Prometheus text exposition format as Prometheus does. Previously other escape sequences could be improperly unescaped.
v1.54.1 #
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,
node_cpu_seconds_total{mode!="idle"}. The bug was introduced in v1.54.0 .
v1.54.0 #
Released at 2021-02-18
FEATURE: optimize searching for matching metrics for
metric{<label_filters>}queries if<label_filters>contains at least a single filter. For example, the queryup{job="foobar"}should find the matching time series much faster than previously.FEATURE: reduce execution times for
q1 <binary_op> q2queries by executingq1andq2in parallel.FEATURE: switch from Go1.15 to Go1.16 for building prod binaries.
FEATURE: single-node VictoriaMetrics now accepts requests to handlers with
/prometheusand/graphiteprefixes such as/prometheus/api/v1/query. This improves compatibility with handlers from VictoriaMetrics cluster .FEATURE: expose
process_open_fdsandprocess_max_fdsmetrics. These metrics can be used for alerting whenprocess_open_fdsreachesprocess_max_fds. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/402 and https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1037FEATURE: vmalert: add
-datasource.appendTypePrefixcommand-line option for querying both Prometheus and Graphite datasource in cluster version of VictoriaMetrics. See these docs 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,grepandcutwhen detecting cpu and memory limits inside Docker or LXC container.FEATURE: vmagent: add
__meta_kubernetes_endpoints_label_*,__meta_kubernetes_endpoints_labelpresent_*,__meta_kubernetes_endpoints_annotation_*and__meta_kubernetes_endpoints_annotationpresent_*labels forrole: endpointsin 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>/indexdbfolder if-retentionPeriodis set to values smaller than one month.FEATURE: vmselect: export per-tenant metrics
vm_vmselect_http_requests_totalandvm_vmselect_http_requests_duration_ms_total. Other per-tenant metrics are available as a part of enterprise package . 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
-loggerTimezoneusage inside Docker containers.BUGFIX: properly build Docker images for non-amd64 architectures (arm, arm64, ppc64le, 386) on Docker hub . 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 .
v1.53.1 #
Released at 2021-02-03
- BUGFIX: vmselect: fix the bug preventing from proper searching by Graphite filter with wildcards such as
{__graphite__="foo.*.bar"}.
v1.53.0 #
Released at 2021-02-03
FEATURE: added vmctl tool to VictoriaMetrics release process. Now it is packaged in
vmutils-*.tar.gzarchive on the releases page . Source code forvmctltool has been moved from github.com/VictoriaMetrics/vmctl to github.com/VictoriaMetrics/VictoriaMetrics/app/vmctl .FEATURE: added
-loggerTimezonecommand-line flag for adjusting time zone for timestamps in log messages. By default UTC is used.FEATURE: added
-search.maxStepForPointsAdjustmentcommand-line flag, which can be used for disabling adjustment for points returned by/api/v1/query_rangehandler if such points have timestamps closer than-search.latencyOffsetto the current time. Such points may contain incomplete data, so they are substituted by the previous values forstepquery 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.treatDotsAsIsInRegexpscommand-line flag.FEATURE: vmselect: added ability to set additional label filters, which must be applied during queries. Such label filters can be set via optional
extra_labelquery arg, which is accepted by querying API handlers. For example, the request to/api/v1/query_range?extra_label=tenant_id=123&query=<query>adds{tenant_id="123"}label filter to the given<query>. It is expected that theextra_labelquery arg is automatically set by auth proxy sitting in front of VictoriaMetrics. Contact us if you need assistance with such a proxy. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1021 .FEATURE: vmalert: added
-datasource.queryStepcommand-line flag for passing optionalstepquery arg to/api/v1/queryendpoint. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1025FEATURE: vmalert: added ability to query Graphite datasource when evaluating alerting and recording rules. See these docs for details.
FEATURE: vmagent: added
-remoteWrite.roundDigitscommand-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.rateLimitcommand-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/1035FEATURE: vmagent: export the following additional metrics, which may be useful during troubleshooting:
vm_promscrape_scrapes_failed_per_url_totalvm_promscrape_scrapes_skipped_by_sample_limit_per_url_totalvm_promscrape_discovery_requests_totalvm_promscrape_discovery_retries_totalvm_promscrape_scrape_retries_totalvm_promscrape_service_discovery_duration_seconds
FEATURE: vmselect: initial implementation for Graphite Render API .
BUGFIX: vmagent: reduce HTTP reconnection rate for scrape targets. Previously vmagent could erroneously 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
disable_keepalive: trueoption could be used underscrape_configssection when working with such servers.
v1.52.0 #
Released at 2021-01-13
FEATURE: provide a sample list of alerting rules for VictoriaMetrics components. It is available here .
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
-finalMergeDelaycommand-line flag to positive duration.FEATURE: add
tfirst_over_time(m[d])andtlast_over_time(m[d])functions to MetricsQL for returning timestamps for the first and the last data point inmoverdduration.FEATURE: add ability to pass multiple labels to
sort_by_label()andsort_by_label_desc()functions. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/992 .FEATURE: enforce at least TLS v1.2 when accepting HTTPS requests if
-tls,-tlsCertFileand-tlsKeyFilecommand-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_labelquery arg for all HTTP-based data ingestion protocols . 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_labelquery args during data ingestion over HTTP-based protocols.BUGFIX: vmagent: prevent from
dialing to the given TCP address time outerror when scraping big number of unavailable targets. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/987BUGFIX: vmagent: properly show scrape duration on
/targetspage. Previously it was incorrectly shown as 0.000s.BUGFIX: vmagent: properly log errors when
-promscrape.streamParsecommand-line flag is set. See https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1009BUGFIX: vmagent: properly suppress errors when both
-promscrape.suppressScrapeErrorsand-promscrape.streamParsecommand-line flags are set. See https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1009 .BUGFIX: vmalert: return non-empty result in template func
querystub 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 issues. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1010
Previous releases #
See changes for older releases here .