Skip to content

Commit f3eed66

Browse files
authored
Support sub-commands for the cross-thread trace profiling (#178)
1 parent f3d3445 commit f3eed66

8 files changed

Lines changed: 69 additions & 102 deletions

File tree

CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ Release Notes.
3838
* Adapt the sub-command `metrics` for deprecate scope fron entity by @mrproliu in https://github.com/apache/skywalking-cli/pull/173
3939
* Add components in topology related sub-commands. @mrproliu in https://github.com/apache/skywalking-cli/pull/175
4040
* Add the sub-command `metrics nullable` for query the nullable metrics value. @mrproliu in https://github.com/apache/skywalking-cli/pull/176
41+
* Adapt the sub-command `profiling trace` for adapt the new trace profiling protocol. @mrproliu in https://github.com/apache/skywalking-cli/pull/177
4142

4243
0.10.0
4344
------------------

assets/graphqls/profiling/trace/GetTaskSegmentList.graphql renamed to assets/graphqls/profiling/trace/GetSegmentsProfileAnalyze.graphql

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
# specific language governing permissions and limitations
1616
# under the License.
1717

18-
query ($taskId: String!) {
19-
result: getProfileTaskSegmentList(taskID: $taskId) {
20-
segmentId
21-
endpointNames
22-
duration
23-
start
24-
isError
25-
traceIds
18+
query ($queries: [SegmentProfileAnalyzeQuery!]!) {
19+
result: getSegmentsProfileAnalyze(queries: $queries) {
20+
tip
21+
trees {
22+
elements {
23+
id parentId codeSignature duration durationChildExcluded count
24+
}
25+
}
2626
}
27-
}
27+
}

assets/graphqls/profiling/trace/GetProfileAnalyze.graphql renamed to assets/graphqls/profiling/trace/GetTaskSegmentsList.graphql

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,39 @@
1515
# specific language governing permissions and limitations
1616
# under the License.
1717

18-
query ($segmentId: String!, $timeRanges: [ProfileAnalyzeTimeRange!]!) {
19-
result: getProfileAnalyze(segmentId: $segmentId, timeRanges: $timeRanges) {
20-
trees {
21-
elements {
22-
id
23-
parentId
24-
codeSignature
25-
duration
26-
durationChildExcluded
27-
count
18+
query ($taskId: ID!) {
19+
result: getProfileTaskSegments(taskID: $taskId) {
20+
traceId
21+
instanceId
22+
instanceName
23+
endpointNames
24+
duration
25+
start
26+
spans {
27+
spanId
28+
parentSpanId
29+
segmentId
30+
refs {
31+
traceId parentSegmentId parentSpanId type
2832
}
33+
serviceCode
34+
serviceInstanceName
35+
startTime
36+
endTime
37+
endpointName
38+
type
39+
peer
40+
component
41+
isError
42+
layer
43+
tags {
44+
key value
45+
}
46+
logs {
47+
time
48+
data { key value }
49+
}
50+
profiled
2951
}
3052
}
31-
}
53+
}

internal/commands/profiling/trace/getProfileAnalyze.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,20 @@ var getProfiledAnalyzeCommand = &cli.Command{
3737
ArgsUsage: "[parameters...]",
3838
Flags: []cli.Flag{
3939
&cli.StringFlag{
40-
Name: "segment-id",
41-
Usage: "profiled segment id.",
40+
Name: "segment-ids",
41+
Usage: "profiled segment ids, multiple id split by ',': s1,s2",
4242
},
4343
&cli.StringFlag{
4444
Name: "time-ranges",
4545
Usage: "need to analyze time ranges in the segment: start-end,start-end",
4646
},
4747
},
4848
Action: func(ctx *cli.Context) error {
49-
segmentID := ctx.String("segment-id")
49+
segmentIDs := ctx.String("segment-ids")
50+
segmentIDList := strings.Split(segmentIDs, ",")
5051

5152
tagStr := ctx.String("time-ranges")
52-
var timeRanges []*api.ProfileAnalyzeTimeRange = nil
53+
var queries []*api.SegmentProfileAnalyzeQuery = nil
5354
if tagStr != "" {
5455
tagArr := strings.Split(tagStr, ",")
5556
for _, tag := range tagArr {
@@ -62,16 +63,25 @@ var getProfiledAnalyzeCommand = &cli.Command{
6263
if err != nil {
6364
return err
6465
}
65-
timeRanges = append(timeRanges, &api.ProfileAnalyzeTimeRange{Start: start, End: end})
66+
67+
// adding time range to each segments
68+
for _, segmentID := range segmentIDList {
69+
queries = append(queries, &api.SegmentProfileAnalyzeQuery{
70+
SegmentID: segmentID,
71+
TimeRange: &api.ProfileAnalyzeTimeRange{
72+
Start: start, End: end,
73+
},
74+
})
75+
}
6676
}
6777
}
6878

69-
analysis, err := profiling.GetTraceProfilingAnalyze(ctx, segmentID, timeRanges)
79+
analysis, err := profiling.GetTraceProfilingAnalyze(ctx, queries)
7080

7181
if err != nil {
7282
return err
7383
}
7484

75-
return display.Display(ctx, &displayable.Displayable{Data: analysis, Condition: segmentID})
85+
return display.Display(ctx, &displayable.Displayable{Data: analysis, Condition: segmentIDs})
7686
},
7787
}

internal/commands/profiling/trace/getProfiledSegment.go

Lines changed: 0 additions & 53 deletions
This file was deleted.

internal/commands/profiling/trace/getTaskSegmentList.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ import (
2828
var getTaskSegmentListCommand = &cli.Command{
2929
Name: "segment-list",
3030
Aliases: []string{"sl"},
31-
Usage: "Query profiling trace task segment list",
32-
UsageText: `Query profiling trace task segment list
31+
Usage: "Query profiling trace task segments list",
32+
UsageText: `Query profiling trace task segments list
3333
3434
Examples:
35-
1. Query profiled segment list
35+
1. Query profiled segments list
3636
$ swctl profiling trace segment-list --service-name=service-name --endpoint-name=endpoint`,
3737
Flags: []cli.Flag{
3838
&cli.StringFlag{

internal/commands/profiling/trace/trace.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ on https://github.com/apache/skywalking/blob/master/docs/en/guides/backend-profi
3333
getTaskListCommand,
3434
getTaskLogListCommand,
3535
getTaskSegmentListCommand,
36-
getProfiledSegmentCommand,
3736
getProfiledAnalyzeCommand,
3837
},
3938
}

pkg/graphql/profiling/trace.go

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -62,34 +62,22 @@ func GetTraceProfilingTaskLogList(ctx *cli.Context, taskID string) ([]*api.Profi
6262
return response["result"], err
6363
}
6464

65-
func GetTraceProfilingTaskSegmentList(ctx *cli.Context, taskID string) ([]*api.BasicTrace, error) {
66-
var response map[string][]*api.BasicTrace
65+
func GetTraceProfilingTaskSegmentList(ctx *cli.Context, taskID string) ([]*api.ProfiledTraceSegments, error) {
66+
var response map[string][]*api.ProfiledTraceSegments
6767

68-
request := graphql.NewRequest(assets.Read("graphqls/profiling/trace/GetTaskSegmentList.graphql"))
68+
request := graphql.NewRequest(assets.Read("graphqls/profiling/trace/GetTaskSegmentsList.graphql"))
6969
request.Var("taskId", taskID)
7070

7171
err := client.ExecuteQuery(ctx, request, &response)
7272

7373
return response["result"], err
7474
}
7575

76-
func GetTraceProfilingSegment(ctx *cli.Context, segmentID string) (api.ProfiledSegment, error) {
77-
var response map[string]api.ProfiledSegment
78-
79-
request := graphql.NewRequest(assets.Read("graphqls/profiling/trace/GetProfiledSegment.graphql"))
80-
request.Var("segmentId", segmentID)
81-
82-
err := client.ExecuteQuery(ctx, request, &response)
83-
84-
return response["result"], err
85-
}
86-
87-
func GetTraceProfilingAnalyze(ctx *cli.Context, segmentID string, timeRanges []*api.ProfileAnalyzeTimeRange) (api.ProfileAnalyzation, error) {
76+
func GetTraceProfilingAnalyze(ctx *cli.Context, queries []*api.SegmentProfileAnalyzeQuery) (api.ProfileAnalyzation, error) {
8877
var response map[string]api.ProfileAnalyzation
8978

90-
request := graphql.NewRequest(assets.Read("graphqls/profiling/trace/GetProfileAnalyze.graphql"))
91-
request.Var("segmentId", segmentID)
92-
request.Var("timeRanges", timeRanges)
79+
request := graphql.NewRequest(assets.Read("graphqls/profiling/trace/GetSegmentsProfileAnalyze.graphql"))
80+
request.Var("queries", queries)
9381

9482
err := client.ExecuteQuery(ctx, request, &response)
9583

0 commit comments

Comments
 (0)