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 ffee47d Add flags of instance, endpoint and normal for metrics command (#76) ffee47d is described below commit ffee47d2e83d26e5a31b329e938e1ad845828624 Author: Hoshea Jiang <fgk...@gmail.com> AuthorDate: Wed Nov 25 23:52:44 2020 +0800 Add flags of instance, endpoint and normal for metrics command (#76) * Fix outdated doc Co-authored-by: kezhenxu94 <kezhenx...@163.com> --- README.md | 47 +++++++++++++++++----- commands/flags/metrics.go | 17 ++++++++ commands/interceptor/scope.go | 2 +- commands/metrics/aggregation/topn.go | 2 +- commands/metrics/linear/linear-metrics.go | 7 +++- commands/metrics/linear/multiple-linear-metrics.go | 34 +++++++--------- commands/metrics/list/list-metrics.go | 5 ++- commands/metrics/single/single-metrics.go | 12 ++++-- docs/How-to-release.md | 6 +-- 9 files changed, 88 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 57a4a3a..1b51908 100644 --- a/README.md +++ b/README.md @@ -160,12 +160,15 @@ Ascii Graph, like coloring in terminal, so please use `json` or `yaml` instead. <details> -<summary>metrics linear [--start=start-time] [--end=end-time] --name=metrics-name --service=service-name</summary> +<summary>metrics linear [--start=start-time] [--end=end-time] --name=metrics-name --service=service-name [--instance=instance-name] [--endpoint=endpoint-name] [--isNormal=true/false]</summary> | option | description | default | | :--- | :--- | :--- | | `--name` | Metrics name, defined in [OAL](https://github.com/apache/skywalking/blob/master/oap-server/server-bootstrap/src/main/resources/oal/core.oal). | | `--service` | The name of the service. | "" | +| `--instance` | The name of the service instance. | "" | +| `--endpoint` | The name of the endpoint. | "" | +| `--isNormal` | Set the service to normal or unnormal. | `true` | | `--start` | See [Common options](#common-options) | See [Common options](#common-options) | | `--end` | See [Common options](#common-options) | See [Common options](#common-options) | @@ -175,13 +178,16 @@ Ascii Graph, like coloring in terminal, so please use `json` or `yaml` instead. <details> -<summary>metrics multiple-linear [--start=start-time] [--end=end-time] --name=metrics-name [--service=service-name] [--num=number-of-linear-metrics]</summary> +<summary>metrics multiple-linear [--start=start-time] [--end=end-time] --name=metrics-name [--service=service-name] [--num=number-of-linear-metrics] [--instance=instance-name] [--endpoint=endpoint-name] [--isNormal=true/false]</summary> | option | description | default | | :--- | :--- | :--- | | `--name` | Metrics name that ends with `_percentile`, defined in [OAL](https://github.com/apache/skywalking/blob/master/oap-server/server-bootstrap/src/main/resources/oal/core.oal), such as `all_percentile`, etc. | | `--service` | The name of the service, when scope is `All`, no name is required. | "" | -| `--num` | Number of the linear metrics to fetch | `5` | +| `--labels` | The labels you need to query | `0,1,2,3,4` | +| `--instance` | The name of the service instance. | "" | +| `--endpoint` | The name of the endpoint. | "" | +| `--isNormal` | Set the service to normal or unnormal. | `true` | | `--start` | See [Common options](#common-options) | See [Common options](#common-options) | | `--end` | See [Common options](#common-options) | See [Common options](#common-options) | @@ -191,12 +197,15 @@ Ascii Graph, like coloring in terminal, so please use `json` or `yaml` instead. <details> -<summary>metrics single [--start=start-time] [--end=end-time] --name=metrics-name --service=service-name</summary> +<summary>metrics single [--start=start-time] [--end=end-time] --name=metrics-name --service=service-name [--instance=instance-name] [--endpoint=endpoint-name] [--isNormal=true/false]</summary> | option | description | default | | :--- | :--- | :--- | | `--name` | Metrics name, defined in [OAL](https://github.com/apache/skywalking/blob/master/oap-server/server-bootstrap/src/main/resources/oal/core.oal), such as `service_sla`, etc. | | `--service` | The name of the service. | "" | +| `--instance` | The name of the service instance. | "" | +| `--endpoint` | The name of the endpoint. | "" | +| `--isNormal` | Set the service to normal or unnormal. | `true` | | `--start` | See [Common options](#common-options) | See [Common options](#common-options) | | `--end` | See [Common options](#common-options) | See [Common options](#common-options) | @@ -206,7 +215,7 @@ Ascii Graph, like coloring in terminal, so please use `json` or `yaml` instead. <details> -<summary>metrics top 5 [--start=start-time] [--end=end-time] --name=metrics-name [--service=parent-service] [--order=DES]</summary> +<summary>metrics top 5 [--start=start-time] [--end=end-time] --name=metrics-name [--service=parent-service] [--order=DES] [--isNormal=true/false]</summary> | option | description | default | | :--- | :--- | :--- | @@ -214,6 +223,7 @@ Ascii Graph, like coloring in terminal, so please use `json` or `yaml` instead. | `--name` | Metrics name, defined in [OAL](https://github.com/apache/skywalking/blob/master/oap-server/server-bootstrap/src/main/resources/oal/core.oal), such as `service_sla`, etc. | | `--service` | The name of the parent service, could be null if query the global top N. | "" | | `--order` | The order of metrics, `DES` or `ASC`. |`DES`| +| `--isNormal` | Set the service to normal or unnormal. | `true` | | `--start` | See [Common options](#common-options) | See [Common options](#common-options) | | `--end` | See [Common options](#common-options) | See [Common options](#common-options) | @@ -389,7 +399,7 @@ otherwise, <summary>Query a linear metrics graph for an instance</summary> ```shell -$ ./bin/swctl --display=graph metrics linear --name=service_instance_resp_time --service "load balancer1.system" +$ ./bin/swctl --display=graph metrics linear --name=service_instance_resp_time --service "projectC.business-zone" --instance "5ca1e1be91064db6880abac4648667ff@192.168.252.13" ``` ![](http://skywalking.apache.org/screenshots/cli/metrics-linear.png) @@ -407,19 +417,34 @@ $ ./bin/swctl instance ls --service-name=projectC | jq '.[] | select(.name == "p <summary>Query a single metrics value for a specific endpoint</summary> ```shell -$ ./bin/swctl service ls projectC | jq '.[0].id' | xargs ./bin/swctl endpoint ls --service-id | jq '.[] | [.id] | join(",")' | xargs ./bin/swctl metrics single --name endpoint_cpm --ids -[{"id":"22","value":116}] +export SERVICE_NAME=projectC.business-zone +export ENDPOINT=/projectC/{value} +export METRICS_NAME=endpoint_cpm +./bin/swctl metrics single --name ${METRICS_NAME} --service ${SERVICE_NAME} --endpoint ${ENDPOINT} +``` + +Result: + +``` +23 ``` </details> <details> -<summary>Query metrics single values for all endpoints of service of id 3</summary> +<summary>Query metrics single values for all endpoints of service `projectC.business-zone`</summary> ```shell -$ ./bin/swctl service ls projectC | jq '.[0].id' | xargs ./bin/swctl endpoint ls --service-id | jq '.[] | [.id] | join(",")' | xargs ./bin/swctl metrics single --name endpoint_cpm --end='2019-12-02 2137' --ids -[{"id":"3","value":116}] +export SERVICE_NAME=projectC.business-zone +export METRICS_NAME=endpoint_cpm +./bin/swctl endpoint ls --service-id=$(./bin/swctl service ls "$SERVICE_NAME" | jq -r '.[0].id') | jq -r '.[].name' | xargs ./bin/swctl metrics single --name "${METRICS_NAME}" --service "${SERVICE_NAME}" --endpoint +``` + +Result: + +``` +23 ``` </details> diff --git a/commands/flags/metrics.go b/commands/flags/metrics.go index b1bcfb2..151c4ae 100644 --- a/commands/flags/metrics.go +++ b/commands/flags/metrics.go @@ -34,4 +34,21 @@ var MetricsFlags = []cli.Flag{ Value: "", Required: false, }, + cli.StringFlag{ + Name: "instance", + Usage: "the name of service instance", + Value: "", + Required: false, + }, + cli.StringFlag{ + Name: "endpoint", + Usage: "the name of endpoint", + Value: "", + Required: false, + }, + cli.BoolTFlag{ + Name: "isNormal", + Usage: "set the service to normal or unnormal", + Required: false, + }, } diff --git a/commands/interceptor/scope.go b/commands/interceptor/scope.go index d7c84e8..6ecd7bc 100644 --- a/commands/interceptor/scope.go +++ b/commands/interceptor/scope.go @@ -33,7 +33,7 @@ func ParseScope(name string) schema.Scope { ret = schema.ScopeServiceInstanceRelation } else if strings.HasPrefix(name, "service_instance") { ret = schema.ScopeServiceInstance - } else if strings.HasPrefix(name, "service_") { + } else if strings.HasPrefix(name, "service_") || strings.HasPrefix(name, "database_") { ret = schema.ScopeService } else if strings.HasPrefix(name, "endpoint_relation") { ret = schema.ScopeEndpointRelation diff --git a/commands/metrics/aggregation/topn.go b/commands/metrics/aggregation/topn.go index 183ec05..0745691 100644 --- a/commands/metrics/aggregation/topn.go +++ b/commands/metrics/aggregation/topn.go @@ -61,7 +61,7 @@ var TopN = cli.Command{ step := ctx.Generic("step").(*model.StepEnumValue).Selected metricsName := ctx.String("name") - normal := true + normal := ctx.BoolT("isNormal") scope := interceptor.ParseScope(metricsName) order := ctx.Generic("order").(*model.OrderEnumValue).Selected topN := 5 diff --git a/commands/metrics/linear/linear-metrics.go b/commands/metrics/linear/linear-metrics.go index a684781..36711c3 100644 --- a/commands/metrics/linear/linear-metrics.go +++ b/commands/metrics/linear/linear-metrics.go @@ -50,7 +50,9 @@ var Single = cli.Command{ metricsName := ctx.String("name") serviceName := ctx.String("service") - normal := true + normal := ctx.BoolT("isNormal") + instanceName := ctx.String("instance") + endpointName := ctx.String("endpoint") scope := interceptor.ParseScope(metricsName) if serviceName == "" { @@ -72,7 +74,8 @@ var Single = cli.Command{ Scope: scope, ServiceName: &serviceName, Normal: &normal, - ServiceInstanceName: &serviceName, + ServiceInstanceName: &instanceName, + EndpointName: &endpointName, }, }, duration) diff --git a/commands/metrics/linear/multiple-linear-metrics.go b/commands/metrics/linear/multiple-linear-metrics.go index 9c8bd3b..e9ded0d 100644 --- a/commands/metrics/linear/multiple-linear-metrics.go +++ b/commands/metrics/linear/multiple-linear-metrics.go @@ -19,6 +19,7 @@ package linear import ( "fmt" + "strings" "github.com/apache/skywalking-cli/commands/flags" "github.com/apache/skywalking-cli/commands/interceptor" @@ -39,11 +40,11 @@ var Multiple = cli.Command{ flags.DurationFlags, flags.MetricsFlags, []cli.Flag{ - cli.IntFlag{ - Name: "num", - Usage: "`num`, the number of linear metrics to query, (default: 5)", + cli.StringFlag{ + Name: "labels", + Usage: "the labels you need to query", Required: false, - Value: 5, + Value: "0,1,2,3,4", }, }, ), @@ -58,23 +59,16 @@ var Multiple = cli.Command{ metricsName := ctx.String("name") serviceName := ctx.String("service") - normal := true - numOfLinear := ctx.Int("num") + normal := ctx.BoolT("isNormal") + instanceName := ctx.String("instance") + endpointName := ctx.String("endpoint") + labels := ctx.String("labels") scope := interceptor.ParseScope(metricsName) if serviceName == "" && scope != schema.ScopeAll { return fmt.Errorf("the name of service should be specified when metrics' scope is not `All`") } - if numOfLinear > 5 || numOfLinear < 1 { - numOfLinear = 5 - } - - var labels []string - for i := 0; i < numOfLinear; i++ { - labels = append(labels, fmt.Sprintf("%d", i)) - } - duration := schema.Duration{ Start: start, End: end, @@ -84,11 +78,13 @@ var Multiple = cli.Command{ metricsValuesArray := metrics.MultipleLinearIntValues(ctx, schema.MetricsCondition{ Name: metricsName, Entity: &schema.Entity{ - Scope: scope, - ServiceName: &serviceName, - Normal: &normal, + Scope: scope, + ServiceName: &serviceName, + Normal: &normal, + ServiceInstanceName: &instanceName, + EndpointName: &endpointName, }, - }, labels, duration) + }, strings.Split(labels, ","), duration) reshaped := utils.MetricsValuesArrayToMap(duration, metricsValuesArray) return display.Display(ctx, &displayable.Displayable{Data: reshaped}) diff --git a/commands/metrics/list/list-metrics.go b/commands/metrics/list/list-metrics.go index f163fb7..8b22349 100644 --- a/commands/metrics/list/list-metrics.go +++ b/commands/metrics/list/list-metrics.go @@ -26,8 +26,9 @@ import ( ) var Command = cli.Command{ - Name: "list", - Usage: "List metrics that could be queried", + Name: "list", + ShortName: "ls", + Usage: "List metrics that could be queried", Flags: []cli.Flag{ cli.StringFlag{ Name: "regex", diff --git a/commands/metrics/single/single-metrics.go b/commands/metrics/single/single-metrics.go index 2d92cca..d407fa4 100644 --- a/commands/metrics/single/single-metrics.go +++ b/commands/metrics/single/single-metrics.go @@ -49,7 +49,9 @@ var Command = cli.Command{ metricsName := ctx.String("name") serviceName := ctx.String("service") - normal := true + normal := ctx.BoolT("isNormal") + instanceName := ctx.String("instance") + endpointName := ctx.String("endpoint") scope := interceptor.ParseScope(metricsName) if serviceName == "" { @@ -68,9 +70,11 @@ var Command = cli.Command{ metricsValue := metrics.IntValues(ctx, schema.MetricsCondition{ Name: metricsName, Entity: &schema.Entity{ - Scope: scope, - ServiceName: &serviceName, - Normal: &normal, + Scope: scope, + ServiceName: &serviceName, + Normal: &normal, + ServiceInstanceName: &instanceName, + EndpointName: &endpointName, }, }, duration) diff --git a/docs/How-to-release.md b/docs/How-to-release.md index 6980e71..db56647 100644 --- a/docs/How-to-release.md +++ b/docs/How-to-release.md @@ -215,11 +215,9 @@ Vote result should follow these: Website: http://skywalking.apache.org/ SkyWalking CLI Resources: -- Issue: https://github.com/apache/skywalking/issues + - Issue: https://github.com/apache/skywalking/issues - Mailing list: d...@skywalking.apache.org - Documents: https://github.com/apache/skywalking-cli/blob/$VERSION/README.md The Apache SkyWalking Team -``` - - + ```