VictoriaMetrics/app/vmselect
Roman Khavronenko 6061464d80
app/vmselect: quantile func compatiblity with Prometheus (#1646)
* app/vmselect: `quantile` func compatiblity with Prometheus

The `quantile` func was previously calculated by https://github.com/valyala/histogram
package. The result of such calculation was always the closest real value to
requested quantile. While in Prometheus implementation interpolation is used.
Such difference may result into discrepancy in output between Prometheus and
VictoriaMetrics.

This commit adds a Prometheus-like `quantile` function. It also used by other
functions which depend on it, such as `quantiles`, `quantile_over_time`, `median` etc.

https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1625

Signed-off-by: hagen1778 <roman@victoriametrics.com>

* app/vmselect: `quantile` review fixes

* quantile functions were split into multiple to provide
different API for already sorted data;
* float64sPool is used for reducing allocations. Items in pool may have
different sizes, but defining a new pool was complicates due to name collisions;

Signed-off-by: hagen1778 <roman@victoriametrics.com>
2021-09-27 18:57:02 +03:00
..
bufferedwriter app/vmselect: stop /api/v1/export/* execution if client disconnects 2020-09-27 23:52:42 +03:00
deployment Rootless docker images by default (#358) 2020-03-27 21:18:32 +02:00
graphite app/vmselect/graphite: accept and enforce extra_label in all the Graphite APIs 2021-03-23 15:30:15 +02:00
graphiteql Graphite vmalert wip (#112) 2021-02-01 15:28:30 +02:00
multiarch deployment/docker: embed tzdata into prod Go app instead of installing it into base docker image 2021-02-12 04:56:27 +02:00
netstorage app/vmselect/promql: follow-up after 57b3320478 2021-09-24 01:25:04 +03:00
prometheus app/vmselect/prometheus: make more clear log messages for errors during sending data to remote clients 2021-09-16 13:35:37 +03:00
promql app/vmselect: quantile func compatiblity with Prometheus (#1646) 2021-09-27 18:57:02 +03:00
querystats app/vmselect: do not track queries with less than 1ms execution time at /api/v1/status/top_queries 2021-07-15 16:53:35 +03:00
searchutils app/vmselect: add -search.maxStatusRequestDuration command-line flag for limiting the duration of requests to /api/v1/status/* and /api/v1/series/count 2021-03-30 21:39:32 +03:00
vmui app/vmui: follow-up after 777ff75874 2021-09-15 17:41:00 +03:00
main.go app/vmselect: fix accessing /graphite/* endpoints 2021-09-21 14:06:18 +03:00
Makefile app/{vminsert,vmselect}: automatically add missing port in -storageNode lists passed to vminsert and vmselect 2021-09-15 18:04:30 +03:00
README.md app/vmselect: expose vmui at /vmselect/<accountID>/vmui/ instead of /vmselect/<accountID>/prometheus/vmui/ 2021-07-10 12:32:21 +03:00

vmselect performs the following tasks:

  • Splits incoming selects to tasks for vmstorage nodes and issues these tasks to all the vmstorage nodes in the cluster.

  • Merges responses from all the vmstorage nodes and returns a single response.

The vmui directory contains static contents built from app/vmui package with make vmui-update command. The vmui page is available at http://<vmselect>:8481/select/<accountID>/vmui/.