You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ke...@apache.org on 2021/04/29 01:37:35 UTC

[skywalking-cli] branch master updated: fix `metrics top` can't infer the scope automatically (#94)

This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-cli.git


The following commit(s) were added to refs/heads/master by this push:
     new d06d1eb  fix `metrics top` can't infer the scope automatically (#94)
d06d1eb is described below

commit d06d1ebf565756885650061ddd2e1fe527417052
Author: Hoshea Jiang <fg...@gmail.com>
AuthorDate: Thu Apr 29 09:37:11 2021 +0800

    fix `metrics top` can't infer the scope automatically (#94)
---
 internal/commands/metrics/aggregation/topn.go |  7 ++++++-
 pkg/graphql/utils/parser.go                   | 20 +++++++++++++++++++-
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/internal/commands/metrics/aggregation/topn.go b/internal/commands/metrics/aggregation/topn.go
index 8d47c63..5092299 100644
--- a/internal/commands/metrics/aggregation/topn.go
+++ b/internal/commands/metrics/aggregation/topn.go
@@ -32,6 +32,7 @@ import (
 	"github.com/apache/skywalking-cli/pkg/display"
 	"github.com/apache/skywalking-cli/pkg/display/displayable"
 	"github.com/apache/skywalking-cli/pkg/graphql/metrics"
+	"github.com/apache/skywalking-cli/pkg/graphql/utils"
 )
 
 var TopN = cli.Command{
@@ -64,7 +65,7 @@ var TopN = cli.Command{
 
 		metricsName := ctx.String("name")
 		normal := ctx.BoolT("isNormal")
-		scope := ctx.Generic("scope").(*model.ScopeEnumValue).Selected
+		scope := utils.ParseScopeInTop(metricsName)
 		order := ctx.Generic("order").(*model.OrderEnumValue).Selected
 		topN := 5
 		parentService := ctx.String("service")
@@ -83,6 +84,10 @@ var TopN = cli.Command{
 			Step:  step,
 		}
 
+		if ctx.Bool("debug") {
+			logger.Log.Debugln(metricsName, scope, topN)
+		}
+
 		metricsValues, err := metrics.SortMetrics(ctx, api.TopNCondition{
 			Name:          metricsName,
 			ParentService: &parentService,
diff --git a/pkg/graphql/utils/parser.go b/pkg/graphql/utils/parser.go
index cf5ece9..037cedd 100644
--- a/pkg/graphql/utils/parser.go
+++ b/pkg/graphql/utils/parser.go
@@ -17,7 +17,11 @@
 
 package utils
 
-import api "skywalking.apache.org/repo/goapi/query"
+import (
+	api "skywalking.apache.org/repo/goapi/query"
+
+	"strings"
+)
 
 // ParseScope defines the scope based on the input parameters.
 func ParseScope(entity *api.Entity) api.Scope {
@@ -39,3 +43,17 @@ func ParseScope(entity *api.Entity) api.Scope {
 
 	return scope
 }
+
+// ParseScopeInTop defines the scope based on the metrics' name.
+// The scope can only be `Service` or `ServiceInstance` or `Endpoint`.
+func ParseScopeInTop(metricsName string) api.Scope {
+	scope := api.ScopeService
+
+	if strings.HasPrefix(metricsName, "service_instance") {
+		scope = api.ScopeServiceInstance
+	} else if strings.HasPrefix(metricsName, "endpoint") {
+		scope = api.ScopeEndpoint
+	}
+
+	return scope
+}