Skip to content

Commit

Permalink
Enable PromQL @ modifier, negative offset always (cortexproject#4927)
Browse files Browse the repository at this point in the history
Signed-off-by: songjiayang <songjiayang1@gmail.com>
  • Loading branch information
songjiayang committed Oct 25, 2022
1 parent 6249935 commit fa3a713
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 21 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -42,6 +42,7 @@
* [CHANGE] Drops support Prometheus 1.x rule format on configdb. #4826
* [CHANGE] Removes `-ingester.stream-chunks-when-using-blocks` experimental flag and stream chunks by default when `querier.ingester-streaming` is enabled. #4864
* [CHANGE] Compactor: Added `cortex_compactor_runs_interrupted_total` to separate compaction interruptions from failures
* [CHANGE] Enable PromQL `@` modifier, negative offset always. #4927
* [ENHANCEMENT] AlertManager: Retrying AlertManager Get Requests (Get Alertmanager status, Get Alertmanager Receivers) on next replica on error #4840
* [ENHANCEMENT] Querier/Ruler: Retry store-gateway in case of unexpected failure, instead of failing the query. #4532 #4839
* [ENHANCEMENT] Ring: DoBatch prioritize 4xx errors when failing. #4783
Expand Down
4 changes: 2 additions & 2 deletions docs/blocks-storage/querier.md
Expand Up @@ -136,9 +136,9 @@ querier:
# CLI flag: -querier.query-store-for-labels-enabled
[query_store_for_labels_enabled: <boolean> | default = false]

# Enable the @ modifier in PromQL.
# Deprecated: Enable the @ modifier in PromQL always.
# CLI flag: -querier.at-modifier-enabled
[at_modifier_enabled: <boolean> | default = false]
[at_modifier_enabled: <boolean> | default = true]

# Enable returning samples stats per steps in query response.
# CLI flag: -querier.per-step-stats-enabled
Expand Down
4 changes: 2 additions & 2 deletions docs/configuration/config-file-reference.md
Expand Up @@ -814,9 +814,9 @@ The `querier_config` configures the Cortex querier.
# CLI flag: -querier.query-store-for-labels-enabled
[query_store_for_labels_enabled: <boolean> | default = false]

# Enable the @ modifier in PromQL.
# Deprecated: Enable the @ modifier in PromQL always.
# CLI flag: -querier.at-modifier-enabled
[at_modifier_enabled: <boolean> | default = false]
[at_modifier_enabled: <boolean> | default = true]

# Enable returning samples stats per steps in query response.
# CLI flag: -querier.per-step-stats-enabled
Expand Down
17 changes: 9 additions & 8 deletions pkg/cortex/modules.go
Expand Up @@ -533,14 +533,15 @@ func (t *Cortex) initRuler() (serv services.Service, err error) {
if t.Cfg.ExternalPusher != nil && t.Cfg.ExternalQueryable != nil {
rulerRegisterer := prometheus.WrapRegistererWith(prometheus.Labels{"engine": "ruler"}, prometheus.DefaultRegisterer)
engine := promql.NewEngine(promql.EngineOpts{
Logger: util_log.Logger,
Reg: rulerRegisterer,
ActiveQueryTracker: createActiveQueryTracker(t.Cfg.Querier, util_log.Logger),
MaxSamples: t.Cfg.Querier.MaxSamples,
Timeout: t.Cfg.Querier.Timeout,
LookbackDelta: t.Cfg.Querier.LookbackDelta,
EnablePerStepStats: t.Cfg.Querier.EnablePerStepStats,
EnableAtModifier: t.Cfg.Querier.AtModifierEnabled,
Logger: util_log.Logger,
Reg: rulerRegisterer,
ActiveQueryTracker: createActiveQueryTracker(t.Cfg.Querier, util_log.Logger),
MaxSamples: t.Cfg.Querier.MaxSamples,
Timeout: t.Cfg.Querier.Timeout,
LookbackDelta: t.Cfg.Querier.LookbackDelta,
EnablePerStepStats: t.Cfg.Querier.EnablePerStepStats,
EnableAtModifier: true,
EnableNegativeOffset: true,
NoStepSubqueryIntervalFn: func(int64) int64 {
return t.Cfg.Querier.DefaultEvaluationInterval.Milliseconds()
},
Expand Down
24 changes: 15 additions & 9 deletions pkg/querier/querier.go
Expand Up @@ -30,7 +30,9 @@ import (
seriesset "github.com/cortexproject/cortex/pkg/querier/series"
"github.com/cortexproject/cortex/pkg/tenant"
"github.com/cortexproject/cortex/pkg/util"
"github.com/cortexproject/cortex/pkg/util/flagext"
"github.com/cortexproject/cortex/pkg/util/limiter"
util_log "github.com/cortexproject/cortex/pkg/util/log"
"github.com/cortexproject/cortex/pkg/util/spanlogger"
"github.com/cortexproject/cortex/pkg/util/validation"
)
Expand Down Expand Up @@ -82,6 +84,9 @@ var (

// RegisterFlags adds the flags required to config this to the given FlagSet.
func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
//lint:ignore faillint Need to pass the global logger like this for warning on deprecated methods
flagext.DeprecatedFlag(f, "querier.at-modifier-enabled", "This flag is no longer functional; at-modifier is always enabled now.", util_log.Logger)

cfg.StoreGatewayClient.RegisterFlagsWithPrefix("querier.store-gateway-client", f)
f.IntVar(&cfg.MaxConcurrent, "querier.max-concurrent", 20, "The maximum number of concurrent queries.")
f.DurationVar(&cfg.Timeout, "querier.timeout", 2*time.Minute, "The timeout for a query.")
Expand All @@ -92,7 +97,7 @@ func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
f.IntVar(&cfg.MaxSamples, "querier.max-samples", 50e6, "Maximum number of samples a single query can load into memory.")
f.DurationVar(&cfg.QueryIngestersWithin, "querier.query-ingesters-within", 0, "Maximum lookback beyond which queries are not sent to ingester. 0 means all queries are sent to ingester.")
f.BoolVar(&cfg.QueryStoreForLabels, "querier.query-store-for-labels-enabled", false, "Query long-term store for series, label values and label names APIs. Works only with blocks engine.")
f.BoolVar(&cfg.AtModifierEnabled, "querier.at-modifier-enabled", false, "Enable the @ modifier in PromQL.")
f.BoolVar(&cfg.AtModifierEnabled, "querier.at-modifier-enabled", true, "Deprecated: Enable the @ modifier in PromQL always.")
f.BoolVar(&cfg.EnablePerStepStats, "querier.per-step-stats-enabled", false, "Enable returning samples stats per steps in query response.")
f.DurationVar(&cfg.MaxQueryIntoFuture, "querier.max-query-into-future", 10*time.Minute, "Maximum duration into the future you can query. 0 to disable.")
f.DurationVar(&cfg.DefaultEvaluationInterval, "querier.default-evaluation-interval", time.Minute, "The default evaluation interval or step size for subqueries.")
Expand Down Expand Up @@ -163,14 +168,15 @@ func New(cfg Config, limits *validation.Overrides, distributor Distributor, stor
})

engine := promql.NewEngine(promql.EngineOpts{
Logger: logger,
Reg: reg,
ActiveQueryTracker: createActiveQueryTracker(cfg, logger),
MaxSamples: cfg.MaxSamples,
Timeout: cfg.Timeout,
LookbackDelta: cfg.LookbackDelta,
EnablePerStepStats: cfg.EnablePerStepStats,
EnableAtModifier: cfg.AtModifierEnabled,
Logger: logger,
Reg: reg,
ActiveQueryTracker: createActiveQueryTracker(cfg, logger),
MaxSamples: cfg.MaxSamples,
Timeout: cfg.Timeout,
LookbackDelta: cfg.LookbackDelta,
EnablePerStepStats: cfg.EnablePerStepStats,
EnableAtModifier: true,
EnableNegativeOffset: true,
NoStepSubqueryIntervalFn: func(int64) int64 {
return cfg.DefaultEvaluationInterval.Milliseconds()
},
Expand Down

0 comments on commit fa3a713

Please sign in to comment.