mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-15 08:23:34 +01:00
app/vmselect: add -search.maxStalenessInterval
for tuning Prometheus data model closer to Influx-style data model
This commit is contained in:
parent
375d5483fa
commit
50555d89d3
@ -1,6 +1,7 @@
|
|||||||
package promql
|
package promql
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
"strings"
|
"strings"
|
||||||
@ -14,6 +15,10 @@ import (
|
|||||||
"github.com/valyala/histogram"
|
"github.com/valyala/histogram"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var maxStalenessInterval = flag.Duration("search.maxStalenessInterval", 0, "The maximum interval for staleness calculations. "+
|
||||||
|
"By default it is automatically calculated from the median interval between samples. This flag can be useful for tuning "+
|
||||||
|
"Prometheus data model closer to Influx-style data model. See https://prometheus.io/docs/prometheus/latest/querying/basics/#staleness for details")
|
||||||
|
|
||||||
var rollupFuncs = map[string]newRollupFunc{
|
var rollupFuncs = map[string]newRollupFunc{
|
||||||
// Standard rollup funcs from PromQL.
|
// Standard rollup funcs from PromQL.
|
||||||
// See funcs accepting range-vector on https://prometheus.io/docs/prometheus/latest/querying/functions/ .
|
// See funcs accepting range-vector on https://prometheus.io/docs/prometheus/latest/querying/functions/ .
|
||||||
@ -440,6 +445,11 @@ func (rc *rollupConfig) doInternal(dstValues []float64, tsm *timeseriesMap, valu
|
|||||||
dstValues = decimal.ExtendFloat64sCapacity(dstValues, len(rc.Timestamps))
|
dstValues = decimal.ExtendFloat64sCapacity(dstValues, len(rc.Timestamps))
|
||||||
|
|
||||||
scrapeInterval := getScrapeInterval(timestamps)
|
scrapeInterval := getScrapeInterval(timestamps)
|
||||||
|
if *maxStalenessInterval > 0 {
|
||||||
|
if si := maxStalenessInterval.Milliseconds(); scrapeInterval > si {
|
||||||
|
scrapeInterval = si
|
||||||
|
}
|
||||||
|
}
|
||||||
maxPrevInterval := getMaxPrevInterval(scrapeInterval)
|
maxPrevInterval := getMaxPrevInterval(scrapeInterval)
|
||||||
if rc.LookbackDelta > 0 && maxPrevInterval > rc.LookbackDelta {
|
if rc.LookbackDelta > 0 && maxPrevInterval > rc.LookbackDelta {
|
||||||
maxPrevInterval = rc.LookbackDelta
|
maxPrevInterval = rc.LookbackDelta
|
||||||
|
Loading…
Reference in New Issue
Block a user