From 3863c0d4ba66f57764f749d0be8af59297d14462 Mon Sep 17 00:00:00 2001 From: ismail simsek Date: Thu, 29 Dec 2022 17:22:30 +0100 Subject: [PATCH] [v9.2.x] Prometheus: Fix Instant query time calculation (#60821) Prometheus: Fix Instant query time calculation (#60815) * Use single point in time instead of doing time range calculation * Comment update (cherry picked from commit 15d32546ea315f8ccada85cd64c5b49d55b0d6ec) --- pkg/tsdb/prometheus/client/client.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkg/tsdb/prometheus/client/client.go b/pkg/tsdb/prometheus/client/client.go index 21e847afe0f..7661bf5fe59 100644 --- a/pkg/tsdb/prometheus/client/client.go +++ b/pkg/tsdb/prometheus/client/client.go @@ -51,11 +51,13 @@ func (c *Client) QueryRange(ctx context.Context, q *models.Query, headers http.H } func (c *Client) QueryInstant(ctx context.Context, q *models.Query, headers http.Header) (*http.Response, error) { - qs := map[string]string{"query": q.Expr} - tr := q.TimeRange() - if !tr.End.IsZero() { - qs["time"] = formatTime(tr.End) - } + // We do not need a time range here. + // Instant query evaluates at a single point in time. + // Using q.TimeRange is aligning the query range to step. + // Which causes a misleading time point. + // Instead of aligning we use time point directly. + // https://prometheus.io/docs/prometheus/latest/querying/api/#instant-queries + qs := map[string]string{"query": q.Expr, "time": formatTime(q.End)} u, err := c.createUrl("api/v1/query", qs) if err != nil {