-
Notifications
You must be signed in to change notification settings - Fork 67
/
topology.graphqls
148 lines (138 loc) · 5.09 KB
/
topology.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# 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.
# The overview topology of the whole application cluster or services,
type Topology {
nodes: [Node!]!
calls: [Call!]!
debuggingTrace: DebuggingTrace
}
# The instance topology based on the given serviceIds
type ServiceInstanceTopology {
nodes: [ServiceInstanceNode!]!
calls: [Call!]!
debuggingTrace: DebuggingTrace
}
# The endpoint topology
type EndpointTopology {
nodes: [EndpointNode!]!
calls: [Call!]!
debuggingTrace: DebuggingTrace
}
# The process topology
type ProcessTopology {
nodes: [ProcessNode!]!
calls: [Call!]!
debuggingTrace: DebuggingTrace
}
# Node in Topology
type Node {
# The service ID of the node.
id: ID!
# The literal name of the #id.
name: String!
# The type name may be
# 1. The service provider/middleware tech, such as: Tomcat, SpringMVC
# 2. Conjectural Service, e.g. MySQL, Redis, Kafka
type: String
# It is a conjecture node or real node, to represent a service or endpoint.
isReal: Boolean!
# The layers of the service.
layers: [String!]!
}
# Node in ServiceInstanceTopology
type ServiceInstanceNode {
# The instance id of each node,
id: ID!
# The literal name of the #id. Instance Name.
name: String!
# Service id
serviceId: ID!
# The literal name of the #serviceId.
serviceName: String!
# [Deprecated]
# No type for service instance topology.
type: String
# It is a conjecture node or real node, to represent an instance.
isReal: Boolean!
}
# Node in EndpointTopology
type EndpointNode {
# The instance id of each node,
id: ID!
# The literal name of the #id. Endpoint Name
name: String!
# Service id
serviceId: ID!
# The literal name of the #serviceId.
serviceName: String!
# [Deprecated]
# No type for service instance topology.
type: String
# It is a conjuecture node or real node, to represent an instance.
isReal: Boolean!
}
# Node in ProcessTopology
type ProcessNode {
# The process id of each node.
id: ID!
# Service id
serviceId: ID!
# The literal name of the #serviceId.
serviceName: String!
# Service Instance id
serviceInstanceId: ID!
# The literal name of the #serviceInstanceId.
serviceInstanceName: String!
# The name of the process
name: String!
# It's a virtual node or real node.
# A unreal node means that the current node is not a process belonging to this instance, but interacting with the processes belonging to the instance.
isReal: Boolean!
}
# The Call represents a directed distributed call,
# from the `source` to the `target`.
type Call {
source: ID!
# The protocol and tech stack used at source side in this distributed call
# No value in instance topology and endpoint dependency.
sourceComponents: [ID!]!
target: ID!
# The protocol and tech stack used at target side in this distributed call
# No value in instance topology and endpoint dependency.
targetComponents: [ID!]!
id: ID!
# The detect Points of this distributed call.
detectPoints: [DetectPoint!]!
}
# Param, if debug is true will enable the query tracing and return DebuggingTrace in the result.
extend type Query {
# Query the global topology
# When layer is specified, the topology of this layer would be queried
getGlobalTopology(duration: Duration!, layer: String, debug: Boolean): Topology
# Query the topology, based on the given service
getServiceTopology(serviceId: ID!, duration: Duration!, debug: Boolean): Topology
# Query the topology, based on the given services.
# `#getServiceTopology` could be replaced by this.
getServicesTopology(serviceIds: [ID!]!, duration: Duration!, debug: Boolean): Topology
# Query the instance topology, based on the given clientServiceId and serverServiceId
getServiceInstanceTopology(clientServiceId: ID!, serverServiceId: ID!, duration: Duration!, debug: Boolean): ServiceInstanceTopology
# Query the topology, based on the given endpoint
getEndpointTopology(endpointId: ID!, duration: Duration!): Topology
# v2 of getEndpointTopology
getEndpointDependencies(endpointId: ID!, duration: Duration!, debug: Boolean): EndpointTopology
# Query the topology, based on the given instance
getProcessTopology(serviceInstanceId: ID!, duration: Duration!, debug: Boolean): ProcessTopology
}