-
Notifications
You must be signed in to change notification settings - Fork 67
/
continuous-profiling.graphqls
109 lines (97 loc) · 3.44 KB
/
continuous-profiling.graphqls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# 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.
# Set policy configuration
input ContinuousProfilingPolicyCreation {
# service of the policy
serviceId: ID!
# target of the policy
targets: [ContinuousProfilingPolicyTargetCreation!]!
}
input ContinuousProfilingPolicyTargetCreation {
targetType: ContinuousProfilingTargetType!
checkItems: [ContinuousProfilingPolicyItemCreation!]!
}
# Policy item of continuous profiling
input ContinuousProfilingPolicyItemCreation {
# define the monitor type to collect metrics
type: ContinuousProfilingMonitorType!
# threshold of policy, which decide by the monitor type
threshold: String!
# the length of time to evaluate the metrics
period: Int!
# how many times after the metrics match the threshold, will trigger profiling
count: Int!
# the URI path/regex filter when monitor the HTTP related types
uriList: [String!]
uriRegex: String
}
enum ContinuousProfilingTargetType {
# eBPF On CPU Profiling
ON_CPU,
# eBPF Off CPU Profiling
OFF_CPU,
# eBPF Network Profiling
NETWORK
}
type ContinuousProfilingSetResult {
# TRUE if the policy is set successfully
status: Boolean!
# error reason when status == FALSE
errorReason: String
}
type ContinuousProfilingPolicyTarget {
type: ContinuousProfilingTargetType!
checkItems: [ContinuousProfilingPolicyItem!]!
triggeredCount: Int!
lastTriggerTimestamp: Long
}
type ContinuousProfilingPolicyItem {
type: ContinuousProfilingMonitorType!
threshold: String!
period: Int!
count: Int!
uriList: [String!]
uriRegex: String
}
# The Continuous Profiling monitoring instance
type ContinuousProfilingMonitoringInstance {
id: ID!
name: String!
attributes: [Attribute!]!
triggeredCount: Int!
lastTriggerTimestamp: Long
# monitoring process list under the monitoring instance
processes: [ContinuousProfilingMonitoringProcess!]!
}
# The Continuous Profiling monitoring process
type ContinuousProfilingMonitoringProcess {
id: ID!
name: String!
detectType: String!
labels: [String!]!
triggeredCount: Int!
lastTriggerTimestamp: Long
}
extend type Mutation {
# set the continuous profiling policy
setContinuousProfilingPolicy(request: ContinuousProfilingPolicyCreation!): ContinuousProfilingSetResult!
}
extend type Query {
# query all continuous profiling task through service
queryContinuousProfilingServiceTargets(serviceId: ID!): [ContinuousProfilingPolicyTarget!]!
# query all continuous profiling monitoring instances through service and policy
queryContinuousProfilingMonitoringInstances(serviceId: ID!, target: ContinuousProfilingTargetType!): [ContinuousProfilingMonitoringInstance!]!
}