fix(monitor): delete default group by and mean aggregator (#21115)

This commit is contained in:
Zexi Li
2024-08-29 10:03:37 +08:00
committed by GitHub
parent 7c891bbbb9
commit ecef940442
5 changed files with 46 additions and 24 deletions
+1 -1
View File
@@ -66,7 +66,7 @@ require (
github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74
github.com/vmihailenco/msgpack v4.0.4+incompatible
github.com/xuri/excelize/v2 v2.7.1
github.com/zexi/influxql-to-metricsql v0.0.7
github.com/zexi/influxql-to-metricsql v0.0.8
go.etcd.io/etcd/api/v3 v3.5.0
go.etcd.io/etcd/client/v3 v3.5.0
golang.org/x/crypto v0.8.0
+2
View File
@@ -758,6 +758,8 @@ github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPR
github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
github.com/zexi/influxql-to-metricsql v0.0.7 h1:t2Kp6neknnOnszNl3mLteK4dSmXWglfI1JYUtRWTmyQ=
github.com/zexi/influxql-to-metricsql v0.0.7/go.mod h1:PyRRM+3Zrzzig6J4okYLeSv+/d+5GaL5ccBaUKQABNs=
github.com/zexi/influxql-to-metricsql v0.0.8 h1:DIzXVffcpWGgW6AHdK8exHXKyh6dFNXuBrYdFStyFIQ=
github.com/zexi/influxql-to-metricsql v0.0.8/go.mod h1:PyRRM+3Zrzzig6J4okYLeSv+/d+5GaL5ccBaUKQABNs=
go.etcd.io/etcd/api/v3 v3.5.0 h1:GsV3S+OfZEOCNXdtNkBSR7kgLobAa/SO6tCxRa0GAYw=
go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
go.etcd.io/etcd/client/pkg/v3 v3.5.0 h1:2aQv6F436YnN7I4VbI8PPYrBhu+SmrTaADcf8Mi/6PU=
+10 -8
View File
@@ -390,7 +390,7 @@ func setDefaultValue(query *monitor.AlertQuery, inputQuery *monitor.MetricQueryI
metricMeasurement, _ := MetricMeasurementManager.GetCache().Get(query.Model.Measurement)
checkQueryGroupBy(query, inputQuery)
//checkQueryGroupBy(query, inputQuery)
if len(inputQuery.Interval) != 0 {
query.Model.GroupBy = append(query.Model.GroupBy,
@@ -430,10 +430,10 @@ func setDefaultValue(query *monitor.AlertQuery, inputQuery *monitor.MetricQueryI
if len(sel) > 1 {
continue
}
sel = append(sel, monitor.MetricQueryPart{
/*sel = append(sel, monitor.MetricQueryPart{
Type: "mean",
Params: []string{},
})
})*/
query.Model.Selects[i] = sel
}
var projectId, domainId string
@@ -498,11 +498,13 @@ func checkQueryGroupBy(query *monitor.AlertQuery, inputQuery *monitor.MetricQuer
if len(tagId) == 0 || (len(inputQuery.Slimit) != 0 && len(inputQuery.Soffset) != 0) {
tagId = "*"
}
query.Model.GroupBy = append(query.Model.GroupBy,
monitor.MetricQueryPart{
Type: "field",
Params: []string{tagId},
})
if tagId != "" {
query.Model.GroupBy = append(query.Model.GroupBy,
monitor.MetricQueryPart{
Type: "field",
Params: []string{tagId},
})
}
}
func fillSerieTags(series *monitor.TimeSeriesSlice) {
+32 -14
View File
@@ -19,6 +19,7 @@ const UNION_RESULT_NAME = "__union_result__"
const (
CALL_TOP = "top"
CALL_PERCENTILE = "percentile"
CALL_SUM = "sum"
)
var MUL_ARGS_AGGREGATOR MulArgsAggregator = []string{CALL_TOP, CALL_PERCENTILE}
@@ -259,18 +260,37 @@ func (m promQL) generateExpr(
result = getAggrExpr(aggrOps, result)
//fmt.Printf("=====m.GroupByWildcard: %v, %#v\n", m.groupByWildcard, result)
//fmt.Printf("=====m.GroupByWildcard: %v, %#v, aggrOps: %#v\n", m.groupByWildcard, result, aggrOps)
if len(groups) != 0 && !m.groupByWildcard {
expr := &promql.AggregateExpr{
Op: promql.ItemAvg,
Expr: result,
shouldSkipAggr := func(opName string) bool {
switch opName {
case CALL_PERCENTILE, CALL_TOP, "last":
return true
}
if len(groups) != 0 {
expr.Grouping = groups
}
result = expr
return false
}
if len(aggrOps) != 0 {
op := promql.ItemAvg
opName := aggrOps[0].Name
if !shouldSkipAggr(opName) {
switch opName {
case CALL_SUM:
op = promql.ItemSum
}
expr := &promql.AggregateExpr{
Op: op,
Expr: result,
}
if len(groups) != 0 {
expr.Grouping = groups
}
if !m.groupByWildcard {
result = expr
}
}
}
return result, nil
}
@@ -305,20 +325,18 @@ func getAggrExpr(ops []*AggrOperator, expr promql.Expr) promql.Expr {
case "abs":
// https://prometheus.io/docs/prometheus/latest/querying/functions/#abs
expr = newAggrExpr("abs", promql.ValueTypeVector, promql.ValueTypeVector, restExpr)
case "sum":
expr = newAggrExpr("sum", promql.ValueTypeVector, promql.ValueTypeVector, restExpr)
case "mean":
// https://docs.victoriametrics.com/MetricsQL.html#avg_over_time
expr = newAggrExpr("avg_over_time", promql.ValueTypeMatrix, promql.ValueTypeVector, restExpr)
case "last":
// https://docs.victoriametrics.com/MetricsQL.html#last_over_time
expr = newAggrExpr("last_over_time", promql.ValueTypeMatrix, promql.ValueTypeVector, restExpr)
case "count":
// use count, not use 'count_over_time' https://docs.victoriametrics.com/MetricsQL.html#count_over_time
expr = newAggrExpr("count", promql.ValueTypeMatrix, promql.ValueTypeVector, restExpr)
case "stddev":
// https://prometheus.io/docs/prometheus/latest/querying/functions/#aggregation_over_time
expr = newAggrExpr("stddev_over_time", promql.ValueTypeMatrix, promql.ValueTypeVector, restExpr)
case "count":
// use count, not use 'count_over_time' https://docs.victoriametrics.com/MetricsQL.html#count_over_time
expr = newAggrExpr("count", promql.ValueTypeMatrix, promql.ValueTypeVector, restExpr)
case "median":
// https://docs.victoriametrics.com/MetricsQL.html#median_over_time
expr = newAggrExpr("median_over_time", promql.ValueTypeMatrix, promql.ValueTypeVector, restExpr)
+1 -1
View File
@@ -983,7 +983,7 @@ github.com/xuri/nfp
# github.com/yusufpapurcu/wmi v1.2.2
## explicit; go 1.16
github.com/yusufpapurcu/wmi
# github.com/zexi/influxql-to-metricsql v0.0.7
# github.com/zexi/influxql-to-metricsql v0.0.8
## explicit; go 1.18
github.com/zexi/influxql-to-metricsql/converter
github.com/zexi/influxql-to-metricsql/converter/translator