This is an automated email from the ASF dual-hosted git repository.
wusheng 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 67cbc89 Adapt alarm and MQE query API (#210)
67cbc89 is described below
commit 67cbc89dd7b214d5791321a7ca992f940cb586ba
Author: mrproliu <[email protected]>
AuthorDate: Tue Dec 31 16:37:28 2024 +0800
Adapt alarm and MQE query API (#210)
---
CHANGES.md | 3 +
assets/graphqls/alarm/alarms.graphql | 22 +++++++
.../tagAutocompleteKeys.graphql} | 19 +-----
.../tagAutocompleteValues.graphql} | 19 +-----
assets/graphqls/metrics/ExecuteExpression.graphql | 3 +
dist/LICENSE | 2 +-
go.mod | 2 +-
go.sum | 4 +-
internal/commands/alarm/alarm.go | 2 +
internal/commands/alarm/autopleteKeys.go | 67 +++++++++++++++++++
internal/commands/alarm/autopleteValues.go | 76 ++++++++++++++++++++++
pkg/graphql/alarm/alarm.go | 23 +++++++
12 files changed, 204 insertions(+), 38 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 44eb92e..fa7d53e 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -9,6 +9,9 @@ Release Notes.
* Add the sub-command `profiling async` for async-profiler query API by
@zhengziyi0117 in https://github.com/apache/skywalking-cli/pull/203
* Support the owner in MQE response by using [10.2 MQE query
protocol](https://github.com/apache/skywalking-query-protocol/pull/141) by
@zhengziyi0117 in https://github.com/apache/skywalking-cli/pull/203
+* Add the sub-command `alarm autocomplete-keys` and `alarm
auto-complete-values` for alarm query API by @mrproliu in
https://github.com/apache/skywalking-cli/pull/210
+* Adapt the alarm message query API by @mrproliu in
https://github.com/apache/skywalking-cli/pull/210
+* Add the owner field in the `metrics exec` query API by @mrproliu in
https://github.com/apache/skywalking-cli/pull/210
### Bug Fixes
diff --git a/assets/graphqls/alarm/alarms.graphql
b/assets/graphqls/alarm/alarms.graphql
index d6370e5..da2cbbe 100644
--- a/assets/graphqls/alarm/alarms.graphql
+++ b/assets/graphqls/alarm/alarms.graphql
@@ -21,6 +21,7 @@ query ($duration: Duration!, $scope: Scope, $keyword: String,
$paging: Paginatio
startTime
scope
id
+ name
message
tags {
key, value
@@ -39,6 +40,27 @@ query ($duration: Duration!, $scope: Scope, $keyword:
String, $paging: Paginatio
uuid
layer
}
+ snapshot {
+ expression
+ metrics {
+ name
+ results {
+ metric {
+ labels {
+ key value
+ }
+ }
+ values {
+ id
+ value
+ traceID
+ owner {
+ scope serviceID serviceName normal
serviceInstanceID serviceInstanceName endpointID endpointName
+ }
+ }
+ }
+ }
+ }
}
}
}
diff --git a/assets/graphqls/metrics/ExecuteExpression.graphql
b/assets/graphqls/alarm/tagAutocompleteKeys.graphql
similarity index 65%
copy from assets/graphqls/metrics/ExecuteExpression.graphql
copy to assets/graphqls/alarm/tagAutocompleteKeys.graphql
index a03f378..ae0f52d 100644
--- a/assets/graphqls/metrics/ExecuteExpression.graphql
+++ b/assets/graphqls/alarm/tagAutocompleteKeys.graphql
@@ -15,21 +15,6 @@
# specific language governing permissions and limitations
# under the License.
-query ($expression: String!, $entity: Entity!, $duration: Duration!) {
- result: execExpression(expression: $expression, entity: $entity, duration:
$duration) {
- type
- results {
- metric {
- labels {
- key value
- }
- }
- values {
- id
- value
- traceID
- }
- }
- error
- }
+query ($duration: Duration!) {
+ result: queryAlarmTagAutocompleteKeys(duration: $duration)
}
diff --git a/assets/graphqls/metrics/ExecuteExpression.graphql
b/assets/graphqls/alarm/tagAutocompleteValues.graphql
similarity index 65%
copy from assets/graphqls/metrics/ExecuteExpression.graphql
copy to assets/graphqls/alarm/tagAutocompleteValues.graphql
index a03f378..9ba9f6f 100644
--- a/assets/graphqls/metrics/ExecuteExpression.graphql
+++ b/assets/graphqls/alarm/tagAutocompleteValues.graphql
@@ -15,21 +15,6 @@
# specific language governing permissions and limitations
# under the License.
-query ($expression: String!, $entity: Entity!, $duration: Duration!) {
- result: execExpression(expression: $expression, entity: $entity, duration:
$duration) {
- type
- results {
- metric {
- labels {
- key value
- }
- }
- values {
- id
- value
- traceID
- }
- }
- error
- }
+query ($tagKey: String!, $duration: Duration!) {
+ result: queryAlarmTagAutocompleteValues(tagKey: $tagKey, duration:
$duration)
}
diff --git a/assets/graphqls/metrics/ExecuteExpression.graphql
b/assets/graphqls/metrics/ExecuteExpression.graphql
index a03f378..04d89be 100644
--- a/assets/graphqls/metrics/ExecuteExpression.graphql
+++ b/assets/graphqls/metrics/ExecuteExpression.graphql
@@ -28,6 +28,9 @@ query ($expression: String!, $entity: Entity!, $duration:
Duration!) {
id
value
traceID
+ owner {
+ scope serviceID serviceName normal serviceInstanceID
serviceInstanceName endpointID endpointName
+ }
}
}
error
diff --git a/dist/LICENSE b/dist/LICENSE
index 1e90e05..1e35250 100644
--- a/dist/LICENSE
+++ b/dist/LICENSE
@@ -213,7 +213,7 @@ The text of each license is also included at
licenses/license-[project].txt.
k8s.io/utils v0.0.0-20210802155522-efc7438f0176 Apache-2.0
sigs.k8s.io/controller-runtime v0.10.0 Apache-2.0
sigs.k8s.io/structured-merge-diff/v4 v4.1.2 Apache-2.0
- skywalking.apache.org/repo/goapi v0.0.0-20241129131257-944118bb91b8
Apache-2.0
+ skywalking.apache.org/repo/goapi v0.0.0-20241231024338-a68ffc997f46
Apache-2.0
========================================================================
BSD-2-Clause licenses
diff --git a/go.mod b/go.mod
index e98246d..af7daee 100644
--- a/go.mod
+++ b/go.mod
@@ -18,7 +18,7 @@ require (
gopkg.in/yaml.v2 v2.4.0
k8s.io/apimachinery v0.22.1
sigs.k8s.io/controller-runtime v0.10.0
- skywalking.apache.org/repo/goapi v0.0.0-20241129131257-944118bb91b8
+ skywalking.apache.org/repo/goapi v0.0.0-20241231024338-a68ffc997f46
)
require (
diff --git a/go.sum b/go.sum
index bf5055a..9197db1 100644
--- a/go.sum
+++ b/go.sum
@@ -879,5 +879,5 @@ sigs.k8s.io/structured-merge-diff/v4 v4.1.2
h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3
sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod
h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
-skywalking.apache.org/repo/goapi v0.0.0-20241129131257-944118bb91b8
h1:JkgizChUyT1mobFo2I3lI8+qsQU22i3FdxR0BSFC0uw=
-skywalking.apache.org/repo/goapi v0.0.0-20241129131257-944118bb91b8/go.mod
h1:+n8BMuS8eRdzdnGh15ElRGBXPi0eYZSs2TKySBDmRTE=
+skywalking.apache.org/repo/goapi v0.0.0-20241231024338-a68ffc997f46
h1:Lb9cumKH17PWZSs6BKT91dbwJAl1jCvYO7EQMM9yFTw=
+skywalking.apache.org/repo/goapi v0.0.0-20241231024338-a68ffc997f46/go.mod
h1:+n8BMuS8eRdzdnGh15ElRGBXPi0eYZSs2TKySBDmRTE=
diff --git a/internal/commands/alarm/alarm.go b/internal/commands/alarm/alarm.go
index ac25b40..88dc766 100644
--- a/internal/commands/alarm/alarm.go
+++ b/internal/commands/alarm/alarm.go
@@ -26,5 +26,7 @@ var Command = &cli.Command{
Usage: "Alarm related sub-command",
Subcommands: []*cli.Command{
listCommand,
+ autocompleteKeysCommand,
+ autocompleteValuesCommand,
},
}
diff --git a/internal/commands/alarm/autopleteKeys.go
b/internal/commands/alarm/autopleteKeys.go
new file mode 100644
index 0000000..6a9b081
--- /dev/null
+++ b/internal/commands/alarm/autopleteKeys.go
@@ -0,0 +1,67 @@
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package alarm
+
+import (
+ "github.com/urfave/cli/v2"
+
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/internal/flags"
+ "github.com/apache/skywalking-cli/internal/model"
+ "github.com/apache/skywalking-cli/pkg/display"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
+ "github.com/apache/skywalking-cli/pkg/graphql/alarm"
+
+ api "skywalking.apache.org/repo/goapi/query"
+)
+
+var autocompleteKeysCommand = &cli.Command{
+ Name: "autocomplete-keys",
+ Aliases: []string{"ks"},
+ Usage: "Query autocomplete Keys",
+ UsageText: `Query autocomplete keys
+
+Examples:
+1. Query autocomplete keys:
+$ swctl alarm autocomplete-keys
+`,
+ Flags: flags.Flags(
+ flags.DurationFlags,
+ ),
+ Before: interceptor.BeforeChain(
+ interceptor.DurationInterceptor,
+ ),
+ Action: func(ctx *cli.Context) error {
+ start := ctx.String("start")
+ end := ctx.String("end")
+ step := ctx.Generic("step")
+
+ duration := api.Duration{
+ Start: start,
+ End: end,
+ Step: step.(*model.StepEnumValue).Selected,
+ }
+
+ autocompleteKeys, err := alarm.TagAutocompleteKeys(ctx,
duration)
+ if err != nil {
+ return err
+ }
+
+ return display.Display(ctx, &displayable.Displayable{Data:
autocompleteKeys, Condition: duration})
+ },
+}
diff --git a/internal/commands/alarm/autopleteValues.go
b/internal/commands/alarm/autopleteValues.go
new file mode 100644
index 0000000..8876e41
--- /dev/null
+++ b/internal/commands/alarm/autopleteValues.go
@@ -0,0 +1,76 @@
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package alarm
+
+import (
+ "github.com/urfave/cli/v2"
+
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/internal/flags"
+ "github.com/apache/skywalking-cli/internal/model"
+ "github.com/apache/skywalking-cli/pkg/display"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
+ "github.com/apache/skywalking-cli/pkg/graphql/alarm"
+
+ api "skywalking.apache.org/repo/goapi/query"
+)
+
+var autocompleteValuesCommand = &cli.Command{
+ Name: "autocomplete-values",
+ Aliases: []string{"vs"},
+ Usage: "Query autocomplete Values",
+ UsageText: `Query autocomplete values
+
+Examples:
+1. Query autocomplete values:
+$ swctl alarm autocomplete-values --key=tagKey
+`,
+ Flags: flags.Flags(
+ flags.DurationFlags,
+ []cli.Flag{
+ &cli.StringFlag{
+ Name: "key",
+ Usage: "autocomplete tag key",
+ Required: true,
+ },
+ },
+ ),
+ Before: interceptor.BeforeChain(
+ interceptor.DurationInterceptor,
+ ),
+ Action: func(ctx *cli.Context) error {
+ start := ctx.String("start")
+ end := ctx.String("end")
+ step := ctx.Generic("step")
+
+ tagKey := ctx.String("key")
+
+ duration := api.Duration{
+ Start: start,
+ End: end,
+ Step: step.(*model.StepEnumValue).Selected,
+ }
+
+ autocompleteValues, err := alarm.TagAutocompleteValues(ctx,
duration, tagKey)
+ if err != nil {
+ return err
+ }
+
+ return display.Display(ctx, &displayable.Displayable{Data:
autocompleteValues, Condition: tagKey})
+ },
+}
diff --git a/pkg/graphql/alarm/alarm.go b/pkg/graphql/alarm/alarm.go
index 3ac6def..87d6ad3 100644
--- a/pkg/graphql/alarm/alarm.go
+++ b/pkg/graphql/alarm/alarm.go
@@ -52,3 +52,26 @@ func Alarms(ctx *cli.Context, condition *ListAlarmCondition)
(api.Alarms, error)
return response["result"], err
}
+
+func TagAutocompleteKeys(ctx *cli.Context, duration api.Duration) ([]string,
error) {
+ var response map[string][]string
+
+ request :=
graphql.NewRequest(assets.Read("graphqls/alarm/tagAutocompleteKeys.graphql"))
+ request.Var("duration", duration)
+
+ err := client.ExecuteQuery(ctx, request, &response)
+
+ return response["result"], err
+}
+
+func TagAutocompleteValues(ctx *cli.Context, duration api.Duration, key
string) ([]string, error) {
+ var response map[string][]string
+
+ request :=
graphql.NewRequest(assets.Read("graphqls/alarm/tagAutocompleteValues.graphql"))
+ request.Var("duration", duration)
+ request.Var("tagKey", key)
+
+ err := client.ExecuteQuery(ctx, request, &response)
+
+ return response["result"], err
+}