You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by wu...@apache.org on 2018/07/26 12:04:44 UTC
[incubator-skywalking] branch 6.0 updated: Init some graphQL
protocol
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch 6.0
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
The following commit(s) were added to refs/heads/6.0 by this push:
new 34a6c4d Init some graphQL protocol
34a6c4d is described below
commit 34a6c4dcf02a22beb0f24bca2ca7f57f843ab61a
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Thu Jul 26 20:04:37 2018 +0800
Init some graphQL protocol
---
.../main/resources/ui-graphql-v6/common.graphql | 70 ++++++++++++++++++++++
.../main/resources/ui-graphql-v6/metric.graphql | 66 ++++++++++++++++++++
.../main/resources/ui-graphql-v6/overview.graphql | 45 ++++++++++++++
.../main/resources/ui-graphql-v6/topology.graphql | 64 ++++++++++++++++++++
.../src/main/resources/ui-graphql-v6/trace.graphql | 0
5 files changed, 245 insertions(+)
diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/common.graphql b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/common.graphql
new file mode 100644
index 0000000..d1cf270
--- /dev/null
+++ b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/common.graphql
@@ -0,0 +1,70 @@
+# 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
+}
+
diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/metric.graphql b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/metric.graphql
new file mode 100644
index 0000000..c0de3a7
--- /dev/null
+++ b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/metric.graphql
@@ -0,0 +1,66 @@
+# 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
+ topN: TopN
+}
+
+# TopN filter
+input TopN {
+ n: Int!
+}
+
+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/overview.graphql b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/overview.graphql
new file mode 100644
index 0000000..6998658
--- /dev/null
+++ b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/overview.graphql
@@ -0,0 +1,45 @@
+# 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!
+}
+
+# Query the trend of alarm rate based on the given duration
+type AlarmTrend {
+ numOfAlarmRate: [Int]!
+}
+
+type Service {
+ id: ID!
+ name: String!
+}
+
+type ServiceInstance {
+
+}
+
+extend type Query {
+ getGlobalBrief(duration: Duration!): ClusterBrief
+ getAlarmTrend(duration: Duration!): AlarmTrend
+
+ getAllService(duration: Duration!): [Service!]!
+}
\ No newline at end of file
diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/topology.graphql b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/topology.graphql
new file mode 100644
index 0000000..94c3052
--- /dev/null
+++ b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/topology.graphql
@@ -0,0 +1,64 @@
+# 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.graphql b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql-v6/trace.graphql
new file mode 100644
index 0000000..e69de29