diff --git a/pkg/tsdb/prometheus/models/query.go b/pkg/tsdb/prometheus/models/query.go index 741d6d4e8bc..384648bc837 100644 --- a/pkg/tsdb/prometheus/models/query.go +++ b/pkg/tsdb/prometheus/models/query.go @@ -156,6 +156,10 @@ func calculatePrometheusInterval( query backend.DataQuery, intervalCalculator intervalv2.Calculator, ) (time.Duration, error) { + // we need to compare the original query model after it is overwritten below to variables so that we can + // calculate the rateInterval if it is equal to $__rate_interval or ${__rate_interval} + originalQueryInterval := queryInterval + // If we are using variable for interval/step, we will replace it with calculated interval if isVariableInterval(queryInterval) { queryInterval = "" @@ -173,7 +177,8 @@ func calculatePrometheusInterval( adjustedInterval = calculatedInterval.Value } - if queryInterval == varRateInterval || queryInterval == varRateIntervalAlt { + // here is where we compare for $__rate_interval or ${__rate_interval} + if originalQueryInterval == varRateInterval || originalQueryInterval == varRateIntervalAlt { // Rate interval is final and is not affected by resolution return calculateRateInterval(adjustedInterval, timeInterval, intervalCalculator), nil } else { diff --git a/pkg/tsdb/prometheus/models/query_test.go b/pkg/tsdb/prometheus/models/query_test.go index ed48c1d0cfa..dd30c5f0b24 100644 --- a/pkg/tsdb/prometheus/models/query_test.go +++ b/pkg/tsdb/prometheus/models/query_test.go @@ -376,7 +376,6 @@ func TestParse(t *testing.T) { "format": "time_series", "intervalFactor": 1, "interval": "$__rate_interval", - "intervalMs": 60000, "refId": "A" }`, timeRange)