feat: implement Profile in the dashboard (#19)

This commit is contained in:
Fine0830
2022-03-02 16:41:48 +08:00
committed by GitHub
parent 977ffbaf74
commit ca6d08827f
41 changed files with 2165 additions and 117 deletions

View File

@@ -0,0 +1,124 @@
/**
* Licensed to the 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.
* The 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.
*/
export const ProfileSegment = {
variable: "$segmentId: String",
query: `
segment: getProfiledSegment(segmentId: $segmentId) {
spans {
spanId
parentSpanId
serviceCode
startTime
endTime
endpointName
type
peer
component
isError
layer
tags {
key value
}
logs {
time
data {
key
value
}
}
}
}
`,
};
export const CreateProfileTask = {
variable: "$creationRequest: ProfileTaskCreationRequest",
query: `
task: createProfileTask(creationRequest: $creationRequest) {
id
errorReason
}
`,
};
export const GetProfileTaskList = {
variable: "$endpointName: String, $serviceId: ID",
query: `
taskList: getProfileTaskList(endpointName: $endpointName, serviceId: $serviceId) {
serviceId
endpointName
startTime
duration
minDurationThreshold
dumpPeriod
maxSamplingCount
id
logs {
id
instanceId
instanceName
operationType
operationTime
}
}
`,
};
export const GetProfileTaskSegmentList = {
variable: "$taskID: String",
query: `
segmentList: getProfileTaskSegmentList(taskID: $taskID) {
segmentId
endpointNames
start
duration
traceIds
isError
}
`,
};
export const GetProfileAnalyze = {
variable: "$segmentId: String!, $timeRanges: [ProfileAnalyzeTimeRange!]!",
query: `
analyze: getProfileAnalyze(segmentId: $segmentId, timeRanges: $timeRanges) {
tip
trees {
elements {
id
parentId
codeSignature
duration
durationChildExcluded
count
}
}
}
`,
};
export const GetProfileTaskLogs = {
variable: "$taskID: String",
query: `
taskLogs: getProfileTaskLogs(taskID: $taskID) {
id
instanceId
instanceName
operationTime
operationType
}
`,
};

View File

@@ -22,6 +22,7 @@ import * as dashboard from "./query/dashboard";
import * as topology from "./query/topology";
import * as trace from "./query/trace";
import * as log from "./query/log";
import * as profile from "./query/profile";
const query: { [key: string]: string } = {
...app,
@@ -30,6 +31,7 @@ const query: { [key: string]: string } = {
...topology,
...trace,
...log,
...profile,
};
class Graphql {
private queryData = "";

View File

@@ -0,0 +1,39 @@
/**
* Licensed to the 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.
* The 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.
*/
import {
ProfileSegment,
CreateProfileTask,
GetProfileTaskList,
GetProfileTaskSegmentList,
GetProfileAnalyze,
GetProfileTaskLogs,
} from "../fragments/profile";
export const queryProfileSegment = `query queryProfileSegment(${ProfileSegment.variable}) {${ProfileSegment.query}}`;
export const saveProfileTask = `mutation createProfileTask(${CreateProfileTask.variable}) {${CreateProfileTask.query}}`;
export const getProfileTaskList = `query getProfileTaskList(${GetProfileTaskList.variable}) {
${GetProfileTaskList.query}}`;
export const getProfileTaskSegmentList = `query getProfileTaskSegmentList(${GetProfileTaskSegmentList.variable}) {
${GetProfileTaskSegmentList.query}}`;
export const getProfileAnalyze = `query getProfileAnalyze(${GetProfileAnalyze.variable}) {${GetProfileAnalyze.query}}`;
export const getProfileTaskLogs = `query profileTaskLogs(${GetProfileTaskLogs.variable}) {${GetProfileTaskLogs.query}}`;