blob: 4c74bfe7888ed3db04943fea28cfdd9177dbf640 [file] [log] [blame]
# 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!]!
}
# The instance topology based on the given serviceIds
type ServiceInstanceTopology {
nodes: [ServiceInstanceNode!]!
calls: [Call!]!
}
# The endpoint topology
type EndpointTopology {
nodes: [EndpointNode!]!
calls: [Call!]!
}
type ProcessTopology {
nodes: [ProcessNode!]!
calls: [Call!]!
}
# 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!]!
}
extend type Query {
# Query the global topology
# When layer is specified, the topology of this layer would be queried
getGlobalTopology(duration: Duration!, layer: String): Topology
# Query the topology, based on the given service
getServiceTopology(serviceId: ID!, duration: Duration!): Topology
# Query the topology, based on the given services.
# `#getServiceTopology` could be replaced by this.
getServicesTopology(serviceIds: [ID!]!, duration: Duration!): Topology
# Query the instance topology, based on the given clientServiceId and serverServiceId
getServiceInstanceTopology(clientServiceId: ID!, serverServiceId: ID!, duration: Duration!): ServiceInstanceTopology
# Query the topology, based on the given endpoint
getEndpointTopology(endpointId: ID!, duration: Duration!): Topology
# v2 of getEndpointTopology
getEndpointDependencies(endpointId: ID!, duration: Duration!): EndpointTopology
# Query the topology, based on the given instance
getProcessTopology(serviceInstanceId: ID!, duration: Duration!): ProcessTopology
}