mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 10:46:58 +08:00
fix(monitor): support victoria metrics bottom query (#22417)
This commit is contained in:
@@ -65,7 +65,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.1.0
|
||||
github.com/zexi/influxql-to-metricsql v0.1.1
|
||||
go.etcd.io/etcd/api/v3 v3.5.0
|
||||
go.etcd.io/etcd/client/v3 v3.5.0
|
||||
golang.org/x/crypto v0.19.0
|
||||
|
||||
@@ -794,6 +794,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.1.0 h1:gSXhnYEu16fHNs5e1NSdNYceKdlKjMijTHEpnnMVYN4=
|
||||
github.com/zexi/influxql-to-metricsql v0.1.0/go.mod h1:JlC5FY+6De9ZPxG47G5DOgva8P9X1VaKS4ExzCmhSCc=
|
||||
github.com/zexi/influxql-to-metricsql v0.1.1 h1:dXnVzlxVLuo88zGkDca7erEnmvprGWjzsBcs8qIoQGQ=
|
||||
github.com/zexi/influxql-to-metricsql v0.1.1/go.mod h1:JlC5FY+6De9ZPxG47G5DOgva8P9X1VaKS4ExzCmhSCc=
|
||||
github.com/zexi/promql/v2 v2.12.1 h1:crHKpULdLLsBZ9b78Rg6qQkugzlk6BHeCj93tw/F5RU=
|
||||
github.com/zexi/promql/v2 v2.12.1/go.mod h1:2UtzWZGmth95n2qdIZWpJ5yQ0cE5hEvz0dGsajI1Sqg=
|
||||
go.etcd.io/etcd/api/v3 v3.5.0 h1:GsV3S+OfZEOCNXdtNkBSR7kgLobAa/SO6tCxRa0GAYw=
|
||||
|
||||
+14
-4
@@ -18,13 +18,14 @@ const UNION_RESULT_NAME = "__union_result__"
|
||||
|
||||
const (
|
||||
CALL_TOP = "top"
|
||||
CALL_BOTTOM = "bottom"
|
||||
CALL_PERCENTILE = "percentile"
|
||||
CALL_SUM = "sum"
|
||||
CALL_MIN = "min"
|
||||
CALL_MAX = "max"
|
||||
)
|
||||
|
||||
var MUL_ARGS_AGGREGATOR MulArgsAggregator = []string{CALL_TOP, CALL_PERCENTILE}
|
||||
var MUL_ARGS_AGGREGATOR MulArgsAggregator = []string{CALL_TOP, CALL_PERCENTILE, CALL_BOTTOM}
|
||||
|
||||
type MulArgsAggregator []string
|
||||
|
||||
@@ -269,7 +270,7 @@ func (m promQL) generateExpr(
|
||||
|
||||
shouldSkipAggr := func(opName string) bool {
|
||||
switch opName {
|
||||
case CALL_PERCENTILE, CALL_TOP, "last":
|
||||
case CALL_PERCENTILE, CALL_TOP, CALL_BOTTOM, "last":
|
||||
return true
|
||||
}
|
||||
return false
|
||||
@@ -380,6 +381,15 @@ func getAggrExpr(ops []*AggrOperator, expr promql.Expr) promql.Expr {
|
||||
promql.Expressions{
|
||||
aggrOp.Args[0],
|
||||
restExpr})
|
||||
case CALL_BOTTOM:
|
||||
expr = newAggrExprWithArgs("bottomk_avg",
|
||||
[]promql.ValueType{
|
||||
promql.ValueTypeString,
|
||||
promql.ValueTypeMatrix,
|
||||
}, promql.ValueTypeVector,
|
||||
promql.Expressions{
|
||||
aggrOp.Args[0],
|
||||
restExpr})
|
||||
case CALL_PERCENTILE:
|
||||
expr = newAggrExprWithArgs("quantile_over_time",
|
||||
[]promql.ValueType{
|
||||
@@ -409,11 +419,11 @@ func getAggrOperator(op *influxql.Call) ([]*AggrOperator, error) {
|
||||
return nil, errors.Errorf("not supported aggregator: %s with args: %#v", op.String(), op.Args)
|
||||
}
|
||||
aggOp := newAggrOperatorByName(op.Name)
|
||||
if op.Name == CALL_TOP || op.Name == CALL_PERCENTILE {
|
||||
if op.Name == CALL_TOP || op.Name == CALL_BOTTOM || op.Name == CALL_PERCENTILE {
|
||||
numStr := op.Args[len(op.Args)-1].String()
|
||||
num, err := strconv.Atoi(numStr)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "parse top aggregator: %s", op)
|
||||
return nil, errors.Wrapf(err, "parse top/bottom aggregator: %s", op)
|
||||
}
|
||||
numFloat := float64(num)
|
||||
if op.Name == CALL_PERCENTILE {
|
||||
|
||||
Vendored
+1
-1
@@ -1033,7 +1033,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.1.0
|
||||
# github.com/zexi/influxql-to-metricsql v0.1.1
|
||||
## explicit; go 1.18
|
||||
github.com/zexi/influxql-to-metricsql/converter
|
||||
github.com/zexi/influxql-to-metricsql/converter/translator
|
||||
|
||||
Reference in New Issue
Block a user