From bed801b5fee006cbe60cf1249acf5d39b4f393fc Mon Sep 17 00:00:00 2001 From: Wu Sheng Date: Tue, 4 Sep 2018 11:28:28 +0800 Subject: [PATCH] Remove graphQL protocol. Integrated in query module of oap backend. --- apm-protocol/apm-ui-protocol/pom.xml | 41 ------ .../ui-graphql-v6/aggregation.graphqls | 45 ------ .../resources/ui-graphql-v6/alarm.graphqls | 36 ----- .../resources/ui-graphql-v6/common.graphqls | 93 ------------ .../resources/ui-graphql-v6/metadata.graphqls | 62 -------- .../resources/ui-graphql-v6/metric.graphqls | 61 -------- .../resources/ui-graphql-v6/topology.graphqls | 64 --------- .../resources/ui-graphql-v6/trace.graphqls | 118 ---------------- .../src/main/resources/ui-graphql/README.md | 41 ------ .../main/resources/ui-graphql/alarm.graphqls | 47 ------- .../ui-graphql/application-layer.graphqls | 64 --------- .../main/resources/ui-graphql/common.graphqls | 132 ------------------ .../main/resources/ui-graphql/config.graphqls | 54 ------- .../ui-graphql/overview-layer.graphqls | 76 ---------- .../ui-graphql/server-layer.graphqls | 61 -------- .../ui-graphql/service-layer.graphqls | 56 -------- .../main/resources/ui-graphql/trace.graphqls | 118 ---------------- .../apm/ui/protocol/GraphQLScriptTest.java | 58 -------- .../apm/ui/protocol/GraphQLv6ScriptTest.java | 56 -------- apm-protocol/pom.xml | 1 - 20 files changed, 1284 deletions(-) delete mode 100644 apm-protocol/apm-ui-protocol/pom.xml delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/aggregation.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/alarm.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/common.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/metadata.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/metric.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/topology.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/trace.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/README.md delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/alarm.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/application-layer.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/common.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/config.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/overview-layer.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/server-layer.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/service-layer.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/trace.graphqls delete mode 100644 apm-protocol/apm-ui-protocol/src/test/java/org/apache/skywalking/apm/ui/protocol/GraphQLScriptTest.java delete mode 100644 apm-protocol/apm-ui-protocol/src/test/java/org/apache/skywalking/apm/ui/protocol/GraphQLv6ScriptTest.java diff --git a/apm-protocol/apm-ui-protocol/pom.xml b/apm-protocol/apm-ui-protocol/pom.xml deleted file mode 100644 index a70fe76229..0000000000 --- a/apm-protocol/apm-ui-protocol/pom.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - apm-protocol - org.apache.skywalking - 6.0.0-alpha-SNAPSHOT - - 4.0.0 - - apm-ui-protocol - - - 7.0 - - - - - com.graphql-java - graphql-java - ${graphql-java.version} - - - diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/aggregation.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/aggregation.graphqls deleted file mode 100644 index 90ade733a3..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/aggregation.graphqls +++ /dev/null @@ -1,45 +0,0 @@ -# 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. - -# Match the metric by name, order by metric value(such as: avg, percent) -input TopNCondition { - name: String! - topN: Int! - order: Order! - # When the scope is ServiceInstance or Endpoint, - # most likely you need a secondary filter. - # Such as: - # 1. Get topN service instance in a given service id - # 2. Get topN endpoint in a given serivce id. - # Backend will decide the filter id meaning by Scope. - # - # Defintely, it is not required by default. - filterScope: Scope - filterId: Int -} - -type TopNEntity { - name: String! - id: ID! - value: Int! -} - -# The aggregation query is different with the metric query. -# All aggregation queries require backend or/and storage do aggregation in query time. -extend type Query { - # TopN is an aggregation query. - getTopN(condition: TopNCondition!): [TopNEntity!]! -} \ No newline at end of file diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/alarm.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/alarm.graphqls deleted file mode 100644 index 52d7d228f8..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/alarm.graphqls +++ /dev/null @@ -1,36 +0,0 @@ -# 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 trend alarm trigger times -type AlarmTrend { - numOfAlarm: [Int]! -} - -type AlarmMessage { - scope: Scope! - id: ID! - message: String! -} - -type Alarms { - msgs: [AlarmMessage!]! - total: Int! -} - -extend type Query { - getAlarmTrend(duration: Duration!): AlarmTrend! - getAlarm(duration: Duration!, scope: Scope, paging: Pagination!): Alarms -} \ No newline at end of file diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/common.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/common.graphqls deleted file mode 100644 index 258e2b42e9..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/common.graphqls +++ /dev/null @@ -1,93 +0,0 @@ -# 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. - -schema { - query: Query - mutation: Mutation -} - -#Root node -type Query { - version: String -} - -type Mutation { - version: String -} - -# The Duration defines the start and end time for each query operation. -# Fields: `start` and `end` -# represents the time span. And each of them matches the step. -# ref https://www.ietf.org/rfc/rfc3339.txt -# The time formats are -# `SECOND` step: yyyy-MM-dd HHmmss -# `MINUTE` step: yyyy-MM-dd HHmm -# `HOUR` step: yyyy-MM-dd HH -# `DAY` step: yyyy-MM-dd -# `MONTH` step: yyyy-MM -# Field: `step` -# represents the accurate time point. -# e.g. -# if step==HOUR , start=2017-11-08 09, end=2017-11-08 19 -# then -# metrics from the following time points expected -# 2017-11-08 9:00 -> 2017-11-08 19:00 -# there are 11 time points (hours) in the time span. -input Duration { - start: String! - end: String! - step: Step! -} - -enum Step { - MONTH - DAY - HOUR - MINUTE - SECOND -} - -enum Order { - ASC - DES -} - -input Pagination { - # pageNum starts in 1, the default is 1. - pageNum: Int - pageSize: Int! - # default false - needTotal: Boolean -} - -enum Language { - # For not language based agent, the language is impossible to tell. - UNKNOWN - JAVA - DOTNET - NODEJS - PYTHON - RUBY -} - -enum Scope { - SERVICE - SERVICE_INSTANCE - ENDPOINT - SERVICE_RELATION - SERVICE_INSTANCE_RELATION - ENDPOINT_RELATION -} \ No newline at end of file diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/metadata.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/metadata.graphqls deleted file mode 100644 index 8eff70c06c..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/metadata.graphqls +++ /dev/null @@ -1,62 +0,0 @@ -# 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. - -# Query the cluster brief based on the given duration -type ClusterBrief { - numOfService: Int! - numOfServiceInstance: Int! - numOfDatabase: Int! - numOfCache: Int! - numOfMQ: Int! -} - -type Service { - id: ID! - name: String! -} - -type ServiceInstance { - id: ID! - name: String! - attributes: [Attribute!]! - language: Language! -} - -type Attribute { - name: String! - value: String! -} - -type Endpoint { - id: ID! - name: String! -} - -extend type Query { - getGlobalBrief(duration: Duration!): ClusterBrief - - # Service related meta info. - getAllServices(duration: Duration!): [Service!]! - searchServices(duration: Duration!, keyword: String!): [Service!]! - - # Service intance query - getServiceInstances(duration: Duration!, id: ID!): [ServiceInstance!]! - - # Endpoint query - # Consider there are huge numbers of endpoint, - # must use endpoint owner's service id, keyword and limit filter to do query. - searchEndpoint(keyword: String!, serviceId: ID!, limit: Int!): [Endpoint!]! -} \ No newline at end of file diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/metric.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/metric.graphqls deleted file mode 100644 index 9f27d718c8..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/metric.graphqls +++ /dev/null @@ -1,61 +0,0 @@ -# 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. - -input MetricCondition { - # Metric name, which should be defined in OAL script - # Such as: - # Endpoint_avg = from(Endpoint.latency).avg() - # Then, `Endpoint_avg` - name: String! - # Id in this metric type. - # In the above case, the id should be endpoint id. - id: ID -} - -type LinearIntValues { - values: [KVInt!]! -} - -type KVInt { - id: ID! - # This is the value, the caller must understand the Unit. - # Such as: - # 1. If ask for cpm metric, the unit and result should be count. - # 2. If ask for response time (p99 or avg), the unit should be millisecond. - value: Int! -} - -type Thermodynamic { - # Each element in nodes represents a point in Thermodynamic Diagram - # And the element includes three values: - # 1) Time Bucket based on query duration - # 2) Response time index. - # Response time = [responseTimeStep * index, responseTimeStep * (index+1)) - # The last element: [Response Time * index, MAX) - # 3) The number of calls in this response time duration. - # - # Example: - # [ [0, 0, 10], [0, 1, 43], ...] - # These ^^^ two represent the left bottom element, and another element above it. - nodes: [[Long]!]! - axisYStep: Int! -} - - -extend type Query { - getLinearIntValues(metric: MetricCondition!, duration: Duration!): LinearIntValues - getThermodynamic(metric: MetricCondition!, duration: Duration!): Thermodynamic -} \ No newline at end of file diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/topology.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/topology.graphqls deleted file mode 100644 index 94c3052710..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/topology.graphqls +++ /dev/null @@ -1,64 +0,0 @@ -# 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!]! -} - -# Node in Topology -type Node { - # The global id of each node, - # 1. Service id - # 2. Endpoint id - 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 conjuecture node or real node, to represent a service or endpoint. - isReal: Boolean! -} - -# The Call represents a directed distributed call, -# from the `source` to the `target`. -type Call { - source: ID! - target: ID! - isAlert: Boolean - # The protocol and tech stack used in this distributed call - callType: String! - cpm: Long! - # Unit: millisecond - avgResponseTime: Long! -} - -enum NodeType { - SERVICE, - ENDPOINT, - USER -} - - -extend type Query { - # Query the global topolgoy - getGlobalTopology(duration: Duration!): Topology - # Query the topology, based on the given service - getServiceTopology(serviceId: ID!, duration: Duration!): Topology -} \ No newline at end of file diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/trace.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/trace.graphqls deleted file mode 100644 index 72ccf98033..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/trace.graphqls +++ /dev/null @@ -1,118 +0,0 @@ -# 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 list of traces -type TraceBrief { - traces: [BasicTrace!]! - total: Int! -} - -# Trace basic info -type BasicTrace { - segmentId: String! - operationNames: [String!]! - duration: Int! - start: String! - isError: Boolean - traceIds: [String!]! -} - -# Represent the conditions used for query TraceBrief -input TraceQueryCondition { - # The value of 0 means all application. - applicationId: Int - traceId: String - operationName: String - # The time range of traces started - queryDuration: Duration - # The mix time of trace - minTraceDuration: Int - # The max time of trace - maxTraceDuration: Int - traceState: TraceState! - queryOrder: QueryOrder! - paging: Pagination! -} - -enum TraceState { - ALL - SUCCESS - ERROR -} - -enum QueryOrder { - BY_START_TIME - BY_DURATION -} - -# The trace represents a distributed trace, includes all segments and spans. -type Trace { - spans: [Span!]! -} - -type Span { - traceId: ID! - segmentId: ID! - spanId: Int! - parentSpanId: Int! - refs: [Ref!]! - applicationCode: String! - startTime: Long! - endTime: Long! - operationName: String - # There are three span types: Local, Entry and Exit - type: String! - # Peer network id, e.g. host+port, ip+port - peer: String - component: String - isError: Boolean - # There are 5 layers: Unknown, Database, RPCFramework, Http, MQ and Cache - layer: String - tags: [KeyValue!]! - logs: [LogEntity!]! -} - -# Ref represents the link between the segment and its parents. -# The parent(ref) may not exists, which means batch process. -# The UI should display a list, representing the other trace IDs. -type Ref { - traceId: ID! - parentSegmentId: ID! - parentSpanId: Int! - # Ref type represents why did the ref happen. - # Include: 1) CrossProcess 2) CrossThread - type: RefType! -} - -enum RefType { - CROSS_PROCESS, - CROSS_THREAD -} - -type KeyValue { - key: String! - value: String -} - -type LogEntity { - time: Long! - data: [KeyValue!] -} - -extend type Query { - queryBasicTraces(condition: TraceQueryCondition): TraceBrief - queryTrace(traceId: ID!): Trace -} diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/README.md b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/README.md deleted file mode 100644 index 60ddb04aa9..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Abstract -**apm-ui-protocol** declares all services, using GraphQL API style, which provide by Collector UI module. - -## Services -### [Common](common.graphqls) - -Include common objects, which used in global - -### [Overview Layer Service](overview-layer.graphqls) - -Query data without specific application, server or service. It includes info for overview the whole cluster. - -### [Application Layer Service](application-layer.graphqls) - -Query application related data with specific application code. - -### [Server Layer Service](server-layer.graphqls) - -Query server related data with specific server id. - -### [Service Layer Service](service-layer.graphqls) - -Query service related data with specific service id - -### [Trace Service](trace.graphqls) - -Query trace by some conditions. - -### [Alarm Service](alarm.graphqls) - -Query alarm info. - -## Version -v1alpha1 - -### Versioning -Use URI Versioning, to follow the most straightforward approach, -though it does violate the principle that a URI should refer to a unique resource. - -e.g. -http://collector.host/graphql/v1alpha1 diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/alarm.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/alarm.graphqls deleted file mode 100644 index a475ceeee5..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/alarm.graphqls +++ /dev/null @@ -1,47 +0,0 @@ -# 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. - -type Alarm { - items: [AlarmItem!]! - total: Int! -} - -type AlarmItem { - id: ID! - # Typical include: Application Code + cause type. This is a short description. - title: String! - # Include all related info to trigger this alarm. - # such as: threshold, trigger value, relation(greater or lower), last time - content: String! - startTime: String! - alarmType: AlarmType! - causeType: CauseType! -} - -enum AlarmType { - APPLICATION, - SERVER, - SERVICE -} - -enum CauseType { - LOW_SUCCESS_RATE, - SLOW_RESPONSE -} - -extend type Query { - loadAlarmList(keyword: String, alarmType: AlarmType, duration:Duration!, paging: Pagination!): Alarm -} diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/application-layer.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/application-layer.graphqls deleted file mode 100644 index 0ee04fe56b..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/application-layer.graphqls +++ /dev/null @@ -1,64 +0,0 @@ -# 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. - -# ApplicationNode represents this node is under monitoring by agent. -type ApplicationNode implements Node { - id: ID! - name: String! - type: String - # Success rate of all incoming requests. - # Max value is 10000. - # 2 Digits after floating point in UI, need to division by 100. 10000 -> 100.00 - sla: Int! - # The number of incoming calls - cpm: Long! - # Unit: millisecond - avgResponseTime: Long! - # ref: http://www.apdex.org/ - # Max value is 100 - # 2 Digits after floating point in UI, need to division by 100. 100 -> 1.00 - apdex: Int! - # Whether the application alerts? - # Default value is false. - isAlarm: Boolean! - # The number of servers in the application code - numOfServer: Int! - # The number of servers alerting - numOfServerAlarm: Int! - # The number of services alerting - numOfServiceAlarm: Int! -} - -# The conjectural node generated by exit span -type ConjecturalNode implements Node { - id: ID! - name: String! - type: String -} - -type Application { - id: ID! - name: String! - # The number of servers in the application code - numOfServer: Int! -} - -extend type Query { - getAllApplication(duration: Duration!): [Application!]! - getApplicationTopology(applicationId: ID!, duration: Duration!): Topology - getSlowService(applicationId: ID!, duration: Duration!, topN: Int!): [ServiceMetric!]! - getServerThroughput(applicationId: ID!, duration: Duration!, topN: Int!): [AppServerInfo!]! -} diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/common.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/common.graphqls deleted file mode 100644 index f25cbe4315..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/common.graphqls +++ /dev/null @@ -1,132 +0,0 @@ -# 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. - -schema { - query: Query - mutation: Mutation -} - -#Root node -type Query { - version: String -} - -type Mutation { - version: String -} - -# The Duration defines the start and end time for each query operation. -# Fields: `start` and `end` -# represents the time span. And each of them matches the step. -# ref https://www.ietf.org/rfc/rfc3339.txt -# The time formats are -# `SECOND` step: yyyy-MM-dd HHmmss -# `MINUTE` step: yyyy-MM-dd HHmm -# `HOUR` step: yyyy-MM-dd HH -# `DAY` step: yyyy-MM-dd -# `MONTH` step: yyyy-MM -# Field: `step` -# represents the accurate time point. -# e.g. -# if step==HOUR , start=2017-11-08 09, end=2017-11-08 19 -# then -# metrics from the following time points expected -# 2017-11-08 9:00 -> 2017-11-08 19:00 -# there are 11 time points (hours) in the time span. -input Duration { - start: String! - end: String! - step: Step! -} - -enum Step { - MONTH - DAY - HOUR - MINUTE - SECOND -} - -input Pagination { - # pageNum starts in 1, the default is 1. - pageNum: Int - pageSize: Int! - # default false - needTotal: Boolean -} - -###################################### -# Common Metrics and Trends -###################################### -type ResponseTimeTrend { - trendList: [Int!] -} - -type ThroughputTrend { - trendList: [Int!]! -} - -type SLATrend { - trendList: [Int!]! -} - -# The overview topology of the whole application cluster or services, -type Topology { - nodes: [Node!]! - calls: [Call!]! -} - -# The base Node of all node types in topology -interface Node { - # The global id of each node, - # 1. `Application ID` represents application under monitoring - # 2. `Peer ID` string represents the conjectural dependency. - id: ID! - # Application Code or literal Peer - name: String! - # The type name - # 1. The most important component in the application, from service provider perspective. - # 2. Conjectural dependent component, e.g. MySQL, Redis, Kafka - type: String -} - -# Incoming request node, means User or outside system access the cluster from this. -type VisualUserNode implements Node { - id: ID! - # Constant, value = "User" - name: String! - # Constant, value = "USER" - type: String -} - -# The Call represents a directed distributed call, -# from the `source` to the `target`. -type Call { - source: ID! - target: ID! - isAlert: Boolean - # The protocol and tech stack used in this distributed call - callType: String! - cpm: Long! - # Unit: millisecond - avgResponseTime: Long! -} - -enum ValueType { - ALL, - RIGHT, - WRONG -} diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/config.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/config.graphqls deleted file mode 100644 index cc2fe91209..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/config.graphqls +++ /dev/null @@ -1,54 +0,0 @@ -# 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. - -input TTLConfigItem { - unit: Step! - value: Int! -} - -type ExistedTTLConfigs{ - ttl: [TTL!]! -} - -type TTL { - unit: Step! - value: Int! -} - -input AlarmThreshold { - type: AlarmType! - threshold: Int! - causeType: CauseType! -} - -type ExistedAlarmThresholds { - items: [ExistedAlarmThresholdItem!]! -} - -type ExistedAlarmThresholdItem { - threshold: Int! - causeType: CauseType! -} - -extend type Mutation { - setDataTTLConfigs(ttl: [TTLConfigItem!]!): Boolean! - setAlarmThreshold(thresholds: [AlarmThreshold!]!): Boolean! -} - -extend type Query { - queryAllDataTTLConfigs: ExistedTTLConfigs! - queryAlarmThresholds(alarmType: AlarmType): ExistedAlarmThresholds! -} \ No newline at end of file diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/overview-layer.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/overview-layer.graphqls deleted file mode 100644 index 4998a8b288..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/overview-layer.graphqls +++ /dev/null @@ -1,76 +0,0 @@ -# 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. - -# Query the cluster brief based on the given duration -type ClusterBrief { - numOfApplication: Int - numOfService: Int - numOfDatabase: Int - numOfCache: Int - numOfMQ: Int -} - -# Query the trend of alarm rate based on the given duration -type AlarmTrend { - numOfAlarmRate: [Int]! -} - -# Query all conjectural applications based on the given duration -# All applications here are not installed agent. -type ConjecturalAppBrief { - apps: [ConjecturalApp!]! -} - -# The basic info of the conjectural application, -# includes the type and num of same type application -type ConjecturalApp { - # The display name of the application - # e.g. MySQL, RocketMQ, Kafka, Nginx - name: String! - num: Int! -} - -type ApplicationThroughput { - applicationId: Int! - applicationCode: String - cpm: Int! -} - -type Thermodynamic { - # Each element in nodes represents a point in Thermodynamic Diagram - # And the element includes three values: - # 1) Time Bucket based on query duration - # 2) Response time index. - # Response time = [responseTimeStep * index, responseTimeStep * (index+1)) - # The last element: [Response Time * index, MAX) - # 3) The number of calls in this response time duration. - # - # Example: - # [ [0, 0, 10], [0, 1, 43], ...] - # These ^^^ two represent the left bottom element, and another element above it. - nodes: [[Long]!]! - responseTimeStep: Int! -} - -extend type Query { - getClusterTopology(duration: Duration!): Topology - getClusterBrief(duration: Duration!): ClusterBrief - getAlarmTrend(duration: Duration!): AlarmTrend - getConjecturalApps(duration: Duration!): ConjecturalAppBrief - getTopNSlowService(duration: Duration!, topN: Int!): [ServiceMetric!]! - getTopNApplicationThroughput(duration: Duration!, topN: Int!): [ApplicationThroughput!]! - getThermodynamic(duration: Duration!, type: ValueType!): Thermodynamic! -} diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/server-layer.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/server-layer.graphqls deleted file mode 100644 index abbffedc19..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/server-layer.graphqls +++ /dev/null @@ -1,61 +0,0 @@ -# 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 server info. -# At here, `Server` represents a process in OS, -# e.g. -# 1. Spring boot application -# 2. A Tomcat server instance -type AppServerInfo { - id: ID! - osName: String! - applicationId: Int! - applicationCode: String - cpm: Int! - host: String - pid: Int - ipv4: [String!]! -} - -type CPUTrend { - cost: [Int!]! -} - -# The gc trend represents the numbers and time of Garbage Collector execution -type GCTrend { - youngGCCount: [Int!]! - oldGCount: [Int!]! - youngGCTime: [Int!]! - oldGCTime: [Int!]! -} - -# The memory used and max limit in heap and noheap space. -type MemoryTrend { - heap: [Int!]! - maxHeap: [Int!]! - noheap: [Int!]! - maxNoheap: [Int!]! -} - -extend type Query { - searchServer(keyword: String!, duration: Duration!): [AppServerInfo!]! - getAllServer(applicationId: ID!, duration: Duration!): [AppServerInfo!]! - getServerResponseTimeTrend(serverId: ID!, duration: Duration!): ResponseTimeTrend - getServerThroughputTrend(serverId: ID!, duration: Duration!): ThroughputTrend - getCPUTrend(serverId: ID!, duration: Duration!): CPUTrend - getGCTrend(serverId: ID!, duration: Duration!): GCTrend - getMemoryTrend(serverId: ID!, duration: Duration!): MemoryTrend -} \ No newline at end of file diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/service-layer.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/service-layer.graphqls deleted file mode 100644 index 330328cf53..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/service-layer.graphqls +++ /dev/null @@ -1,56 +0,0 @@ -# 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. - -type ServiceNode implements Node { - id: ID! - name: String! - type: String - # Success rate of all incoming requests. - # Max value is 10000. - sla: Int! - # The number of incoming calls - calls: Long! - # The number of services alerting - numOfServiceAlarm: Int! -} - -type ServiceInfo { - id: ID! - name: String - applicationId: ID! - applicationName: String -} - -type ServiceMetric { - service: ServiceInfo! - # The unit is millisecond. - avgResponseTime: Int! - cpm: Int! -} - -type TraceItem { - time: String! - entry: String! - duration: Int! -} - -extend type Query { - searchService(keyword: String!, applicationId: ID!, topN: Int!): [ServiceInfo!]! - getServiceResponseTimeTrend(serviceId: ID!, duration: Duration!): ResponseTimeTrend - getServiceThroughputTrend(serviceId: ID!, duration: Duration!): ThroughputTrend - getServiceSLATrend(serviceId: ID!, duration: Duration!): SLATrend - getServiceTopology(serviceId: ID!, duration: Duration!): Topology -} diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/trace.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/trace.graphqls deleted file mode 100644 index 9bb30beead..0000000000 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/trace.graphqls +++ /dev/null @@ -1,118 +0,0 @@ -# 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 list of traces -type TraceBrief { - traces: [BasicTrace!]! - total: Int! -} - -# Trace basic info -type BasicTrace { - segmentId: String! - operationNames: [String!]! - duration: Int! - start: String! - isError: Boolean - traceIds: [String!]! -} - -# Represent the conditions used for query TraceBrief -input TraceQueryCondition { - # The value of 0 means all application. - applicationId: Int - traceId: String - operationName: String - # The time range of traces started - queryDuration: Duration - # The mix time of trace - minTraceDuration: Int - # The max time of trace - maxTraceDuration: Int - traceState: TraceState! - queryOrder: QueryOrder! - paging: Pagination! -} - -enum TraceState { - ALL - SUCCESS - ERROR -} - -enum QueryOrder { - BY_START_TIME - BY_DURATION -} - -# The trace represents a distributed trace, includes all segments and spans. -type Trace { - spans: [Span!]! -} - -type Span { - traceId: ID! - segmentId: ID! - spanId: Int! - parentSpanId: Int! - refs: [Ref!]! - applicationCode: String! - startTime: Long! - endTime: Long! - operationName: String - # There are three span types: Local, Entry and Exit - type: String! - # Peer network id, e.g. host+port, ip+port - peer: String - component: String - isError: Boolean - # There are 5 layers: Unknown, Database, RPCFramework, Http, MQ and Cache - layer: String - tags: [KeyValue!]! - logs: [LogEntity!]! -} - -# Ref represents the link between the segment and its parents. -# The parent(ref) may not exists, which means batch process. -# The UI should display a list, representing the other trace IDs. -type Ref { - traceId: ID! - parentSegmentId: ID! - parentSpanId: Int! - # Ref type represents why did the ref happen. - # Include: 1) CrossProcess 2) CrossThread - type: RefType! -} - -enum RefType { - CROSS_PROCESS, - CROSS_THREAD -} - -type KeyValue { - key: String! - value: String -} - -type LogEntity { - time: Long! - data: [KeyValue!] -} - -extend type Query { - queryBasicTraces(condition: TraceQueryCondition): TraceBrief - queryTrace(traceId: ID!): Trace -} diff --git a/apm-protocol/apm-ui-protocol/src/test/java/org/apache/skywalking/apm/ui/protocol/GraphQLScriptTest.java b/apm-protocol/apm-ui-protocol/src/test/java/org/apache/skywalking/apm/ui/protocol/GraphQLScriptTest.java deleted file mode 100644 index 5c93a8e93d..0000000000 --- a/apm-protocol/apm-ui-protocol/src/test/java/org/apache/skywalking/apm/ui/protocol/GraphQLScriptTest.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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. - * - */ - -package org.apache.skywalking.apm.ui.protocol; - -import graphql.schema.idl.EchoingWiringFactory; -import graphql.schema.idl.RuntimeWiring; -import graphql.schema.idl.SchemaGenerator; -import graphql.schema.idl.SchemaParser; -import graphql.schema.idl.TypeDefinitionRegistry; -import java.io.File; -import org.junit.Test; - -import static org.junit.Assert.assertTrue; - -public class GraphQLScriptTest { - - @Test - public void assertScriptFormat() { - SchemaParser schemaParser = new SchemaParser(); - SchemaGenerator schemaGenerator = new SchemaGenerator(); - - TypeDefinitionRegistry typeRegistry = new TypeDefinitionRegistry(); - typeRegistry.merge(schemaParser.parse(loadSchema("common.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("trace.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("overview-layer.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("application-layer.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("server-layer.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("service-layer.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("alarm.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("config.graphqls"))); - RuntimeWiring wiring = buildRuntimeWiring(); - assertTrue(schemaGenerator.makeExecutableSchema(typeRegistry, wiring).getAllTypesAsList().size() > 0); - } - - private File loadSchema(final String s) { - return new File(GraphQLScriptTest.class.getClassLoader().getResource("ui-graphql/" + s).getFile()); - } - - private RuntimeWiring buildRuntimeWiring() { - return RuntimeWiring.newRuntimeWiring().wiringFactory(new EchoingWiringFactory()).build(); - } -} diff --git a/apm-protocol/apm-ui-protocol/src/test/java/org/apache/skywalking/apm/ui/protocol/GraphQLv6ScriptTest.java b/apm-protocol/apm-ui-protocol/src/test/java/org/apache/skywalking/apm/ui/protocol/GraphQLv6ScriptTest.java deleted file mode 100644 index f3d7adf12e..0000000000 --- a/apm-protocol/apm-ui-protocol/src/test/java/org/apache/skywalking/apm/ui/protocol/GraphQLv6ScriptTest.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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. - * - */ - -package org.apache.skywalking.apm.ui.protocol; - -import graphql.schema.idl.EchoingWiringFactory; -import graphql.schema.idl.RuntimeWiring; -import graphql.schema.idl.SchemaGenerator; -import graphql.schema.idl.SchemaParser; -import graphql.schema.idl.TypeDefinitionRegistry; -import java.io.File; -import org.junit.Test; - -import static org.junit.Assert.assertTrue; - -public class GraphQLv6ScriptTest { - @Test - public void assertScriptFormat() { - SchemaParser schemaParser = new SchemaParser(); - SchemaGenerator schemaGenerator = new SchemaGenerator(); - - TypeDefinitionRegistry typeRegistry = new TypeDefinitionRegistry(); - typeRegistry.merge(schemaParser.parse(loadSchema("common.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("trace.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("metric.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("metadata.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("topology.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("alarm.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("aggregation.graphqls"))); - RuntimeWiring wiring = buildRuntimeWiring(); - assertTrue(schemaGenerator.makeExecutableSchema(typeRegistry, wiring).getAllTypesAsList().size() > 0); - } - - private File loadSchema(final String s) { - return new File(GraphQLScriptTest.class.getClassLoader().getResource("ui-graphql-v6/" + s).getFile()); - } - - private RuntimeWiring buildRuntimeWiring() { - return RuntimeWiring.newRuntimeWiring().wiringFactory(new EchoingWiringFactory()).build(); - } -} diff --git a/apm-protocol/pom.xml b/apm-protocol/pom.xml index fabe6f5419..0b59e5d955 100644 --- a/apm-protocol/pom.xml +++ b/apm-protocol/pom.xml @@ -30,6 +30,5 @@ apm-network - apm-ui-protocol \ No newline at end of file -- GitLab