Commit Graph

328 Commits

Author SHA1 Message Date
Aliaksandr Valialkin
021ee53ba8
app/vminsert: improve re-routing logic in order to spread rows more evenly among the available storage nodes 2022-02-06 20:20:02 +02:00
Aliaksandr Valialkin
2cc5f2940f
vendor: update github.com/VictoriaMetrics/metricsql from v0.39.0 to v0.40.0 2022-02-01 17:43:09 +02:00
Aliaksandr Valialkin
04d6596298
app/vmselect/promql: optimize queries, which join on _info metrics.
Automatically add common filters from one side of binary operation
to the other side before sending the query to storage subsystem.

See https://grafana.com/blog/2021/08/04/how-to-use-promql-joins-for-more-effective-queries-of-prometheus-metrics-at-scale/
and https://www.robustperception.io/exposing-the-software-version-to-prometheus
2022-01-31 20:25:15 +02:00
Aliaksandr Valialkin
f3250307b1
vendor: make vendor-update 2022-01-31 12:46:44 +02:00
Aliaksandr Valialkin
0ac2a51682
vendor: update github.com/VictoriaMetrics/metricsql from v0.37.0 to v0.38.0
This adds more optimization cases for https://utcc.utoronto.ca/~cks/space/blog/sysadmin/PrometheusLabelNonOptimization

For example:

* Multi-level transform functions. For example, abs(round(foo{a="b"})) + bar{x="y"}
  is now optimized to abs(round(foo{a="b",x="y"})) + bar{a="b",x="y"}
* Binary operations with `on()`, `without()`, `group_left()` and `group_right()` modifiers.
  For example, foo{a="b"} on (a) + bar is now optimized to foo{a="b"} on (a) + bar{a="b"}
* Multi-level binary operations. For example, foo{a="b"} + bar{x="y"} + baz{z="q"}
  is now optimized to foo{a="b",x="y",z="q"} + bar{a="b",x="y",z="q"} + baz{a="b",x="y",z="q"}
* Aggregate functions. For example, sum(foo{a="b"}) by (c) + bar{c="d"}
  is now optimized to sum(foo{a="b",c="d"}) by (c) + bar{c="d"}
2022-01-27 19:04:45 +02:00
Aliaksandr Valialkin
dcf20c7aa1
vendor: make vendor-update 2022-01-27 13:22:23 +02:00
Aliaksandr Valialkin
53440226d6
vendor: make vendor-update 2022-01-23 13:15:37 +02:00
Aliaksandr Valialkin
e8706ce417
vendor: make vendor-update 2022-01-17 15:45:47 +02:00
Aliaksandr Valialkin
5a1e4a140f
app/vmselect/promql: implement keep_metric_names modifier for transform and rollup functions
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/949
2022-01-14 04:15:35 +02:00
Aliaksandr Valialkin
53c9a81f2b
app/vmselect/promql: add stale_samples_over_time() function 2022-01-14 01:49:24 +02:00
Aliaksandr Valialkin
653055b924
vendor: update github.com/valyala/gozstd from v1.15.0 to v1.15.1 2022-01-13 23:44:18 +02:00
Aliaksandr Valialkin
0580a58feb
app/vmselect/promql: add support for @ modifier
Add support for `@` modifier in MetricsQL according to https://prometheus.io/docs/prometheus/latest/querying/basics/#modifier

Extend the support with the following features:
* Allow using `@` modifier everywhere in the query. For example, `sum(foo) @ end()`
* Allow using arbitrary expression as `@` modifier. For example, `foo @ (end() - 1h)`
  returns `foo` value at `end - 1 hour` timestamp on the selected time range `[start ... end]`

Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1348
2022-01-13 22:15:19 +02:00
Aliaksandr Valialkin
972587e6f7
vendor: update github.com/valyala/gozstd from v1.14.2 to v1.15.0 2022-01-12 13:25:50 +02:00
Aliaksandr Valialkin
ad0c21ff26
vendor: make vendor-update 2022-01-11 10:16:01 +02:00
Aliaksandr Valialkin
f10b54a665
vendor: make vendor-update 2022-01-07 12:42:14 +02:00
Aliaksandr Valialkin
fcab2fc716
vendor: make vendor-update 2021-12-22 12:39:24 +02:00
Aliaksandr Valialkin
c018f47e81
go.mod: update minimum Go version from Go 1.16 to Go 1.17
VictoriaMetrics code uses features from Go 1.17, so the minimum Go version must be increased from Go 1.16 to Go 1.17

See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1987
2021-12-22 12:39:22 +02:00
Aliaksandr Valialkin
3396f08874
app/vmselect/promql: follow-up after 177e345d8a
* Document changes_prometheus(), increase_prometheus() and delta_prometheus() functions.
* Simplify their implementation
* Mention these functions in docs/CHANGELOG.md
2021-12-20 13:15:06 +02:00
Aliaksandr Valialkin
dfbd4ca2ab
vendor: make vendor-update 2021-12-20 12:12:14 +02:00
Aliaksandr Valialkin
c170841951
app/vmselect/promql: add timestamp_with_name(m[d]) function
This function works the same as `timestamp()`, but doesn't remove source time series names.

See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/949#issuecomment-995222388
2021-12-15 23:38:09 +02:00
Aliaksandr Valialkin
aa61a74c31
vendor: make vendor-update 2021-12-12 18:10:34 +02:00
Aliaksandr Valialkin
addae7fc6a
app/vmselect/promql: preserve the order of time series passed to limit_offset() function
Previously time series passed to `limit_offset()` were shuffled according to hash for their labels.
This was unexpected behaviour for most users.

See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1920 and https://github.com/VictoriaMetrics/VictoriaMetrics/issues/951
2021-12-12 18:07:15 +02:00
Aliaksandr Valialkin
6af4c0ca95
vendor: make vendor-update 2021-12-06 09:59:06 +02:00
Aliaksandr Valialkin
246417601c
vendor: make vendor-update 2021-12-02 12:38:38 +02:00
Aliaksandr Valialkin
ab4be24397
app/vmstorage: export vm_cache_size_max_bytes metrics for determining capacity of various caches
The vm_cache_size_max_bytes metric can be used for determining caches which reach their capacity via the following query:

   vm_cache_size_bytes / vm_cache_size_max_bytes > 0.9
2021-12-02 10:30:01 +02:00
Aliaksandr Valialkin
3d20d229d0
vendor: make vendor-update 2021-11-29 12:36:56 +02:00
Aliaksandr Valialkin
aa6d11a33f
app/vmselect/promql: add now() function, which returns the current timestamp as a floating-point value in seconds 2021-11-17 16:42:11 +02:00
Aliaksandr Valialkin
ee64a88ba3
vendor: make vendor-update 2021-11-17 13:40:36 +02:00
Aliaksandr Valialkin
c6fa2eaa3b
vendor: make vendor-update 2021-11-14 14:05:11 +02:00
Aliaksandr Valialkin
1eb756fd11
app/vmselect/promql: arrange function names in the code in alphabetical order
This should simplify code maintenance in the future
2021-11-14 13:54:43 +02:00
Aliaksandr Valialkin
3a1ac218ba
app/vmselect/promql: add duration_over_time(m[d], max_interval) function
This function calculates the actual lifetime of the time series on the given lookbehdind window `d`

Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1780
2021-11-08 13:14:57 +02:00
Aliaksandr Valialkin
d59acb06c1
vendor: make vendor-update 2021-11-08 12:41:20 +02:00
Aliaksandr Valialkin
a102fca4ac
app/vmselect/promql: add limit_offset(limit, offset, q) function, which can be used for paging over big number of time series
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1778
2021-11-03 16:03:10 +02:00
Aliaksandr Valialkin
43bf0333eb
app/vmselect/promql: add label_graphite_group() function for extracting groups from Graphite metric names 2021-11-03 13:20:34 +02:00
Aliaksandr Valialkin
54f3f08874
vendor: make vendor-update 2021-11-01 16:08:01 +02:00
Aliaksandr Valialkin
d2b0c9556c
vendor: update github.com/VictoriaMetrics/metrics from v1.18.0 to v1.18.1 2021-11-01 16:08:00 +02:00
Aliaksandr Valialkin
99784b21c1
all: fix build issues and tests for Apple M1
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1653
2021-10-27 15:07:19 +03:00
Aliaksandr Valialkin
aece35158d
vendor: make vendor-update 2021-10-26 19:38:27 +03:00
Aliaksandr Valialkin
9e0a67cf13
go.mod: remove outdated replacement 2021-10-22 19:47:10 +03:00
Aliaksandr Valialkin
064abfba8c
vendor: make vendor-update 2021-10-22 19:28:27 +03:00
Aliaksandr Valialkin
79709e2586
vendor: return back the previous google.golang.org/genproto version, since the latest version leads to compile errors
The following errors:

    vendor/cloud.google.com/go/storage/storage.go:1447:53: o.GetCustomerEncryption().GetKeySha256 undefined (type *"google.golang.org/genproto/googleapis/storage/v2".Object_CustomerEncryption has no field or method GetKeySha256)
    vendor/cloud.google.com/go/storage/writer.go:439:10: q.GetCommittedSize undefined (type *"google.golang.org/genproto/googleapis/storage/v2".QueryWriteStatusResponse has no field or method GetCommittedSize)
2021-10-18 15:37:29 +03:00
Aliaksandr Valialkin
c92746bb01
vendor: make vendor-update 2021-10-18 15:23:46 +03:00
Aliaksandr Valialkin
f1803573c3
vendor: update github.com/valyala/gozstd from v1.13.0 to v1.14.1
This should reduce memory usage in vmagent when compressing large scrape responses in stream parsing mode
2021-10-16 19:14:07 +03:00
Aliaksandr Valialkin
4878fcedac
vendor: make vendor-update 2021-10-11 21:52:27 +03:00
Aliaksandr Valialkin
48c3668b3d
app/vmselect/promql: add atan2 binary operator, which is going to be added in Prometheus 2.31
See https://github.com/prometheus/prometheus/pull/9248
2021-10-11 21:17:23 +03:00
Aliaksandr Valialkin
20fa4b01cb
vendor: make vendor-update 2021-10-08 16:06:31 +03:00
Aliaksandr Valialkin
bb45d747ad
vendor: make vendor-update 2021-10-05 10:31:30 +03:00
Aliaksandr Valialkin
f434fcbbd7
vendor: make vendor-update 2021-09-30 17:54:45 +03:00
Aliaksandr Valialkin
ec6eb03d65
app/vmselect/promql: add topk_last and bottomk_last functions 2021-09-30 13:23:27 +03:00
Aliaksandr Valialkin
4b3951fd86
app/vmselect/promql: add rollup_scrape_interval(m[d]) function
It calculates the min, max and avg scrape intervals for m over the given lookbehind window d
2021-09-27 19:21:55 +03:00