From 9b3d68acbd3503cf799a0dd4058d8743a75650e7 Mon Sep 17 00:00:00 2001 From: zhaoxiangchun <1422928955@qq.com> Date: Wed, 25 Aug 2021 10:00:02 +0800 Subject: [PATCH] fix(monitor):fix monitor query top 5 --- .../alerting/conditions/metricquery.go | 19 +++++++++++++------ pkg/monitor/models/unifiedmonitor.go | 2 +- pkg/monitor/tsdb/driver/influxdb/influxdb.go | 1 + 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/pkg/monitor/alerting/conditions/metricquery.go b/pkg/monitor/alerting/conditions/metricquery.go index 622d6fec14..ebe3020c52 100644 --- a/pkg/monitor/alerting/conditions/metricquery.go +++ b/pkg/monitor/alerting/conditions/metricquery.go @@ -83,15 +83,11 @@ func (query *MetricQueryCondition) ExecuteQuery() (*mq.Metrics, error) { Series: make(tsdb.TimeSeriesSlice, 0), Metas: queryResult.metas, } - if len(query.QueryCons[0].ResType) == 0 || - strings.HasPrefix(query.QueryCons[0].ResType, monitor.EXT_PREFIX) { + if query.noCheckSeries() { metrics.Series = queryResult.series return &metrics, nil } - //allResources, err := query.QueryCons[0].GetQueryResources() - //if err != nil { - // return nil, errors.Wrap(err, "MetricQueryCondition GetQueryResources err") - //} + for _, serie := range queryResult.series { isLatestOfSerie, resource := query.QueryCons[0].serieIsLatestResource(nil, serie) if !isLatestOfSerie { @@ -103,6 +99,17 @@ func (query *MetricQueryCondition) ExecuteQuery() (*mq.Metrics, error) { return &metrics, nil } +func (query *MetricQueryCondition) noCheckSeries() bool { + if len(query.QueryCons[0].ResType) == 0 || + strings.HasPrefix(query.QueryCons[0].ResType, monitor.EXT_PREFIX) { + return true + } + if len(query.QueryCons[0].Query.Model.GroupBy) == 0 { + return true + } + return false +} + func (c *MetricQueryCondition) executeQuery(context *alerting.EvalContext, timeRange *tsdb.TimeRange) (*queryResult, error) { ds, err := models.DataSourceManager.GetSource(c.QueryCons[0].Query.DataSourceId) if err != nil { diff --git a/pkg/monitor/models/unifiedmonitor.go b/pkg/monitor/models/unifiedmonitor.go index aea796b127..7bb1ec2c4d 100644 --- a/pkg/monitor/models/unifiedmonitor.go +++ b/pkg/monitor/models/unifiedmonitor.go @@ -447,7 +447,7 @@ func checkQueryGroupBy(query *monitor.AlertQuery, inputQuery *monitor.MetricInpu if len(query.Model.GroupBy) != 0 { return } - if query.Model.Database == monitor.METRIC_DATABASE_METER && inputQuery.Unit { + if query.Model.Database == monitor.METRIC_DATABASE_METER || inputQuery.Unit { return } metricMeasurement, _ := MetricMeasurementManager.GetCache().Get(query.Model.Measurement) diff --git a/pkg/monitor/tsdb/driver/influxdb/influxdb.go b/pkg/monitor/tsdb/driver/influxdb/influxdb.go index 22da7f5d29..4c4997e35b 100644 --- a/pkg/monitor/tsdb/driver/influxdb/influxdb.go +++ b/pkg/monitor/tsdb/driver/influxdb/influxdb.go @@ -88,6 +88,7 @@ func (e *InfluxdbExecutor) Query(ctx context.Context, dsInfo *tsdb.DataSource, t // return nil, err //} + log.Debugf("sql: %s", rawQuery) db := dsInfo.Database if db == "" { db = tsdbQuery.Queries[0].Database