From 3d7748d9f8a8386b575ee71a4e752c48f007bb8c Mon Sep 17 00:00:00 2001 From: Chris Cowan Date: Thu, 14 Jan 2021 02:48:59 -0700 Subject: [PATCH] Elasticsearch: Use minimum interval for alerts (#30049) The current backend code doesn't honor the minimum interval set in the UI for alerts using the Elasticsearch data source. This means that the data the alerts are triggering against will never match the data in the visualization if auto is used in the date histogram as interval. This fixes the problem to make sure that date histogram auto interval is set according to min interval set in UI for the query or fallback to data source min interval setting. Fixes #22082 Co-authored-by: Marcus Efraimsson --- pkg/tsdb/elasticsearch/time_series_query.go | 2 +- pkg/tsdb/elasticsearch/time_series_query_test.go | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/tsdb/elasticsearch/time_series_query.go b/pkg/tsdb/elasticsearch/time_series_query.go index 64f6654b32f..a20c827f342 100644 --- a/pkg/tsdb/elasticsearch/time_series_query.go +++ b/pkg/tsdb/elasticsearch/time_series_query.go @@ -313,7 +313,7 @@ func (p *timeSeriesQueryParser) parse(tsdbQuery *tsdb.TsdbQuery) ([]*Query, erro return nil, err } alias := model.Get("alias").MustString("") - interval := strconv.FormatInt(q.IntervalMs, 10) + "ms" + interval := model.Get("interval").MustString("") queries = append(queries, &Query{ TimeField: timeField, diff --git a/pkg/tsdb/elasticsearch/time_series_query_test.go b/pkg/tsdb/elasticsearch/time_series_query_test.go index d58e83b7e7c..58bb5556060 100644 --- a/pkg/tsdb/elasticsearch/time_series_query_test.go +++ b/pkg/tsdb/elasticsearch/time_series_query_test.go @@ -865,6 +865,7 @@ func TestTimeSeriesQueryParser(t *testing.T) { "timeField": "@timestamp", "query": "@metric:cpu", "alias": "{{@hostname}} {{metric}}", + "interval": "10m", "metrics": [ { "field": "@value", @@ -921,6 +922,7 @@ func TestTimeSeriesQueryParser(t *testing.T) { So(q.TimeField, ShouldEqual, "@timestamp") So(q.RawQuery, ShouldEqual, "@metric:cpu") So(q.Alias, ShouldEqual, "{{@hostname}} {{metric}}") + So(q.Interval, ShouldEqual, "10m") So(q.Metrics, ShouldHaveLength, 2) So(q.Metrics[0].Field, ShouldEqual, "@value")