You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ke...@apache.org on 2021/05/26 05:10:17 UTC

[skywalking] branch ui/templates created (now 77c73a8)

This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a change to branch ui/templates
in repository https://gitbox.apache.org/repos/asf/skywalking.git.


      at 77c73a8  Add UI templates

This branch includes the following new commits:

     new 77c73a8  Add UI templates

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[skywalking] 01/01: Add UI templates

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch ui/templates
in repository https://gitbox.apache.org/repos/asf/skywalking.git

commit 77c73a87fc40c721536436b59342c617ba861883
Author: kezhenxu94 <ke...@apache.org>
AuthorDate: Wed May 26 13:09:38 2021 +0800

    Add UI templates
---
 .../src/main/resources/oal/tcp.oal                 |   8 +-
 .../topology-endpoint-dependency.yml               | 122 ++++++++++
 .../ui-initialized-templates/topology-instance.yml |   3 +-
 .../topology-service-dependency.yml                | 252 +++++++++++++++++++++
 .../topology-service-instance-dependency.yml       | 252 +++++++++++++++++++++
 .../ui-initialized-templates/topology-service.yml  | 167 ++++++++++++++
 .../core/query/enumeration/TemplateType.java       |   4 +-
 .../src/main/resources/query-protocol              |   2 +-
 8 files changed, 803 insertions(+), 7 deletions(-)

diff --git a/oap-server/server-bootstrap/src/main/resources/oal/tcp.oal b/oap-server/server-bootstrap/src/main/resources/oal/tcp.oal
index 006abd1..0ce8b6c 100644
--- a/oap-server/server-bootstrap/src/main/resources/oal/tcp.oal
+++ b/oap-server/server-bootstrap/src/main/resources/oal/tcp.oal
@@ -19,14 +19,14 @@
 // TCP services' metrics
 service_throughput_received = from(Service.tcpInfo.receivedBytes).filter(type == RequestType.TCP).longAvg();
 service_throughput_sent = from(Service.tcpInfo.sentBytes).filter(type == RequestType.TCP).longAvg();
-service_relation_client_received = from(ServiceRelation.tcpInfo.sentBytes).filter(type == RequestType.TCP).filter(detectPoint == DetectPoint.CLIENT).longAvg();
+service_relation_client_received = from(ServiceRelation.tcpInfo.receivedBytes).filter(type == RequestType.TCP).filter(detectPoint == DetectPoint.CLIENT).longAvg();
 service_relation_client_sent = from(ServiceRelation.tcpInfo.sentBytes).filter(type == RequestType.TCP).filter(detectPoint == DetectPoint.CLIENT).longAvg();
-service_relation_server_received = from(ServiceRelation.tcpInfo.sentBytes).filter(type == RequestType.TCP).filter(detectPoint == DetectPoint.SERVER).longAvg();
+service_relation_server_received = from(ServiceRelation.tcpInfo.receivedBytes).filter(type == RequestType.TCP).filter(detectPoint == DetectPoint.SERVER).longAvg();
 service_relation_server_sent = from(ServiceRelation.tcpInfo.sentBytes).filter(type == RequestType.TCP).filter(detectPoint == DetectPoint.SERVER).longAvg();
 
 service_instance_throughput_received = from(ServiceInstance.tcpInfo.receivedBytes).filter(type == RequestType.TCP).longAvg();
 service_instance_throughput_sent = from(ServiceInstance.tcpInfo.sentBytes).filter(type == RequestType.TCP).longAvg();
-service_instance_relation_client_received = from(ServiceInstanceRelation.tcpInfo.sentBytes).filter(type == RequestType.TCP).filter(detectPoint == DetectPoint.CLIENT).longAvg();
+service_instance_relation_client_received = from(ServiceInstanceRelation.tcpInfo.receivedBytes).filter(type == RequestType.TCP).filter(detectPoint == DetectPoint.CLIENT).longAvg();
 service_instance_relation_client_sent = from(ServiceInstanceRelation.tcpInfo.sentBytes).filter(type == RequestType.TCP).filter(detectPoint == DetectPoint.CLIENT).longAvg();
-service_instance_relation_server_received = from(ServiceInstanceRelation.tcpInfo.sentBytes).filter(type == RequestType.TCP).filter(detectPoint == DetectPoint.SERVER).longAvg();
+service_instance_relation_server_received = from(ServiceInstanceRelation.tcpInfo.receivedBytes).filter(type == RequestType.TCP).filter(detectPoint == DetectPoint.SERVER).longAvg();
 service_instance_relation_server_sent = from(ServiceInstanceRelation.tcpInfo.sentBytes).filter(type == RequestType.TCP).filter(detectPoint == DetectPoint.SERVER).longAvg();
diff --git a/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-endpoint-dependency.yml b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-endpoint-dependency.yml
new file mode 100644
index 0000000..82c80e6
--- /dev/null
+++ b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-endpoint-dependency.yml
@@ -0,0 +1,122 @@
+# 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.
+
+templates:
+  - name: "Topology Endpoint Relation"
+    type: "TOPOLOGY_ENDPOINT_RELATION"
+    configuration: |-
+      {
+        "http":[
+          {
+            "width":3,
+            "title":"Response Time",
+            "height":"200",
+            "entityType":"EndpointRelation",
+            "independentSelector":false,
+            "metricType":"REGULAR_VALUE",
+            "metricName":"endpoint_relation_resp_time",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"ms"
+          },
+          {
+            "width":3,
+            "title":"Load",
+            "height":"200",
+            "entityType":"EndpointRelation",
+            "independentSelector":false,
+            "metricType":"REGULAR_VALUE",
+            "metricName":"endpoint_relation_cpm",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"CPM - Calls Per Minutes"
+          },
+          {
+            "width":3,
+            "title":"Successful Rate",
+            "height":"200",
+            "entityType":"EndpointRelation",
+            "independentSelector":false,
+            "metricType":"REGULAR_VALUE",
+            "metricName":"endpoint_relation_sla",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"%",
+            "aggregation":"/",
+            "aggregationNum":"100"
+          },
+          {
+            "width":3,
+            "title":"Service Response Time Percentile",
+            "height":"200",
+            "entityType":"EndpointRelation",
+            "independentSelector":false,
+            "metricType":"LABELED_VALUE",
+            "metricName":"endpoint_relation_percentile",
+            "queryMetricType":"readLabeledMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"ms",
+            "metricLabels":"P50, P75, P90, P95, P99",
+            "labelsIndex":"0, 1, 2, 3, 4"
+          }
+        ],
+        "tcp":[
+          {
+            "width":3,
+            "title":"Response Time",
+            "height":"200",
+            "entityType":"EndpointRelation",
+            "independentSelector":false,
+            "metricType":"REGULAR_VALUE",
+            "metricName":"endpoint_relation_resp_time",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"ms"
+          },
+          {
+            "width":3,
+            "title":"Successful Rate",
+            "height":"200",
+            "entityType":"EndpointRelation",
+            "independentSelector":false,
+            "metricType":"REGULAR_VALUE",
+            "metricName":"endpoint_relation_sla",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"%",
+            "aggregation":"/",
+            "aggregationNum":"100"
+          },
+          {
+            "width":3,
+            "title":"Service Response Time Percentile",
+            "height":"200",
+            "entityType":"EndpointRelation",
+            "independentSelector":false,
+            "metricType":"LABELED_VALUE",
+            "metricName":"endpoint_relation_percentile",
+            "queryMetricType":"readLabeledMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"ms",
+            "metricLabels":"P50, P75, P90, P95, P99",
+            "labelsIndex":"0, 1, 2, 3, 4"
+          }
+        ]
+      }
+    # Activated as the TOPOLOGY_INSTANCE type, makes this templates added into the UI page automatically.
+    # False means providing a basic template, user needs to add it manually.
+    activated: true
+    # True means wouldn't show up on the dashboard. Only keeps the definition in the storage.
+    disabled: false
diff --git a/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-instance.yml b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-instance.yml
index 18b44eb..295eea2 100644
--- a/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-instance.yml
+++ b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-instance.yml
@@ -37,7 +37,8 @@ templates:
           "metricName": "service_instance_cpm",
           "queryMetricType": "readMetricsValues",
           "chartType": "ChartLine",
-          "unit": "CPM - calls per minute"
+          "unit": "CPM - calls per minute",
+          "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
         },
         {
           "width": "4",
diff --git a/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-service-dependency.yml b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-service-dependency.yml
new file mode 100644
index 0000000..976dd05
--- /dev/null
+++ b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-service-dependency.yml
@@ -0,0 +1,252 @@
+# 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.
+
+templates:
+  - name: "Topology Service Relation"
+    type: "TOPOLOGY_SERVICE_RELATION"
+    configuration: |-
+      {
+        "http":{
+          "server":[
+            {
+              "width":12,
+              "title":"Response Time",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_server_resp_time",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms"
+            },
+            {
+              "width":12,
+              "title":"Response Time Percentile",
+              "height":200,
+              "entityType":"ServiceRelation",
+              "metricType":"LABELED_VALUE",
+              "metricName":"service_relation_server_percentile",
+              "queryMetricType":"readLabeledMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms",
+              "metricLabels":"P50, P75, P90, P95, P99",
+              "labelsIndex":"0, 1, 2, 3, 4"
+            },
+            {
+              "width":12,
+              "title":"Successful Rate",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_server_call_sla",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"%",
+              "aggregation":"/",
+              "aggregationNum":"100"
+            },
+            {
+              "width":12,
+              "title":"Load",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_server_cpm",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"CPM - Calls Per Minute"
+            }
+          ],
+          "client":[
+            {
+              "width":12,
+              "title":"Response Time",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_client_resp_time",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms"
+            },
+            {
+              "width":12,
+              "title":"Response Time Percentile",
+              "height":200,
+              "entityType":"ServiceRelation",
+              "metricType":"LABELED_VALUE",
+              "metricName":"service_relation_client_percentile",
+              "queryMetricType":"readLabeledMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms",
+              "metricLabels":"P50, P75, P90, P95, P99",
+              "labelsIndex":"0, 1, 2, 3, 4"
+            },
+            {
+              "width":12,
+              "title":"Successful Rate",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_client_call_sla",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"%",
+              "aggregation":"/",
+              "aggregationNum":"100"
+            },
+            {
+              "width":12,
+              "title":"Load",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_client_cpm",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"CPM - Calls Per Minute"
+            }
+          ]
+        },
+        "tcp":{
+          "server":[
+            {
+              "width":12,
+              "title":"Response Time",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_server_resp_time",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms"
+            },
+            {
+              "width":12,
+              "title":"Response Time Percentile",
+              "height":200,
+              "entityType":"ServiceRelation",
+              "metricType":"LABELED_VALUE",
+              "metricName":"service_relation_server_percentile",
+              "queryMetricType":"readLabeledMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms",
+              "metricLabels":"P50, P75, P90, P95, P99",
+              "labelsIndex":"0, 1, 2, 3, 4"
+            },
+            {
+              "width":12,
+              "title":"Successful Rate",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_server_call_sla",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"%",
+              "aggregation":"/",
+              "aggregationNum":"100"
+            },
+            {
+              "width":12,
+              "title":"Load",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_server_cpm",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"PPM - Packets Per Minute"
+            },
+            {
+              "width":12,
+              "title":"Throughput",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_server_received,service_relation_server_sent",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"PPM - Packets Per Minutes"
+            }
+          ],
+          "client":[
+            {
+              "width":12,
+              "title":"Response Time",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_client_resp_time",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms"
+            },
+            {
+              "width":12,
+              "title":"Response Time Percentile",
+              "height":200,
+              "entityType":"ServiceRelation",
+              "metricType":"LABELED_VALUE",
+              "metricName":"service_relation_client_percentile",
+              "queryMetricType":"readLabeledMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms",
+              "metricLabels":"P50, P75, P90, P95, P99",
+              "labelsIndex":"0, 1, 2, 3, 4"
+            },
+            {
+              "width":12,
+              "title":"Successful Rate",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_client_call_sla",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"%",
+              "aggregation":"/",
+              "aggregationNum":"100"
+            },
+            {
+              "width":12,
+              "title":"Load",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_client_cpm",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"CPM - Calls Per Minute"
+            },
+            {
+              "width":12,
+              "title":"Throughput",
+              "height":"200",
+              "entityType":"ServiceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_relation_client_received,service_relation_client_sent",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"PPM - Packets Per Minutes"
+            }
+          ]
+        }
+      }
+    # Activated as the TOPOLOGY_INSTANCE type, makes this templates added into the UI page automatically.
+    # False means providing a basic template, user needs to add it manually.
+    activated: true
+    # True means wouldn't show up on the dashboard. Only keeps the definition in the storage.
+    disabled: false
diff --git a/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-service-instance-dependency.yml b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-service-instance-dependency.yml
new file mode 100644
index 0000000..93d1a34
--- /dev/null
+++ b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-service-instance-dependency.yml
@@ -0,0 +1,252 @@
+# 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.
+
+templates:
+  - name: "Topology Service Instance Relation"
+    type: "TOPOLOGY_SERVICE_INSTANCE_RELATION"
+    configuration: |-
+      {
+        "http":{
+          "server":[
+            {
+              "width":12,
+              "title":"Response Time",
+              "height":"200",
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_server_resp_time",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms"
+            },
+            {
+              "width":12,
+              "title":"Load",
+              "height":200,
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_server_cpm",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"CPM - Calls Per Minute"
+            },
+            {
+              "width":12,
+              "title":"Successful Rate",
+              "height":200,
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_server_call_sla",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"%",
+              "aggregation":"/",
+              "aggregationNum":"100"
+            },
+            {
+              "width":12,
+              "title":"Response Time Percentile",
+              "height":200,
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"LABELED_VALUE",
+              "metricName":"service_instance_relation_server_percentile",
+              "queryMetricType":"readLabeledMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms",
+              "metricLabels":"P50, P75, P90, P95, P99",
+              "labelsIndex":"0, 1, 2, 3, 4"
+            }
+          ],
+          "client":[
+            {
+              "width":12,
+              "title":"Response Time",
+              "height":"200",
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_client_resp_time",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms"
+            },
+            {
+              "width":12,
+              "title":"Load",
+              "height":200,
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_client_cpm",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"CPM - Calls Per Minute"
+            },
+            {
+              "width":12,
+              "title":"Successful Rate",
+              "height":200,
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_client_call_sla",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"%",
+              "aggregation":"/",
+              "aggregationNum":"100"
+            },
+            {
+              "width":12,
+              "title":"Response Time Percentile",
+              "height":200,
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"LABELED_VALUE",
+              "metricName":"service_instance_relation_client_percentile",
+              "queryMetricType":"readLabeledMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms",
+              "metricLabels":"P50, P75, P90, P95, P99",
+              "labelsIndex":"0, 1, 2, 3, 4"
+            }
+          ]
+        },
+        "tcp":{
+          "server":[
+            {
+              "width":12,
+              "title":"Response Time",
+              "height":"200",
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_server_resp_time",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms"
+            },
+            {
+              "width":12,
+              "title":"Load",
+              "height":200,
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_server_cpm",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"CPM - Calls Per Minute"
+            },
+            {
+              "width":12,
+              "title":"Successful Rate",
+              "height":200,
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_server_call_sla",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"%",
+              "aggregation":"/",
+              "aggregationNum":"100"
+            },
+            {
+              "width":12,
+              "title":"Throughput",
+              "height":"200",
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_server_received,service_instance_relation_server_sent",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"bytes"
+            },
+            {
+              "width":12,
+              "title":"Response Time Percentile",
+              "height":200,
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"LABELED_VALUE",
+              "metricName":"service_instance_relation_server_percentile",
+              "queryMetricType":"readLabeledMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms",
+              "metricLabels":"P50, P75, P90, P95, P99",
+              "labelsIndex":"0, 1, 2, 3, 4"
+            }
+          ],
+          "client":[
+            {
+              "width":12,
+              "title":"Response Time",
+              "height":"200",
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_client_resp_time",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms"
+            },
+            {
+              "width":12,
+              "title":"Load",
+              "height":200,
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_client_cpm",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"CPM - Calls Per Minute"
+            },
+            {
+              "width":12,
+              "title":"Successful Rate",
+              "height":200,
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_client_call_sla",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"%",
+              "aggregation":"/",
+              "aggregationNum":"100"
+            },
+            {
+              "width":12,
+              "title":"Throughput",
+              "height":"200",
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"REGULAR_VALUE",
+              "metricName":"service_instance_relation_client_received,service_instance_relation_client_sent",
+              "queryMetricType":"readMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"bytes"
+            },
+            {
+              "width":12,
+              "title":"Response Time Percentile",
+              "height":200,
+              "entityType":"ServiceInstanceRelation",
+              "metricType":"LABELED_VALUE",
+              "metricName":"service_instance_relation_client_percentile",
+              "queryMetricType":"readLabeledMetricsValues",
+              "chartType":"ChartLine",
+              "unit":"ms",
+              "metricLabels":"P50, P75, P90, P95, P99",
+              "labelsIndex":"0, 1, 2, 3, 4"
+            }
+          ]
+        }
+      }
+    # Activated as the TOPOLOGY_INSTANCE type, makes this templates added into the UI page automatically.
+    # False means providing a basic template, user needs to add it manually.
+    activated: true
+    # True means wouldn't show up on the dashboard. Only keeps the definition in the storage.
+    disabled: false
diff --git a/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-service.yml b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-service.yml
new file mode 100644
index 0000000..f789cb4
--- /dev/null
+++ b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates/topology-service.yml
@@ -0,0 +1,167 @@
+# 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.
+
+templates:
+  - name: "Topology Service"
+    type: "TOPOLOGY_SERVICE"
+    configuration: |-
+      {
+        "http":[
+          {
+            "width":12,
+            "title":"Service Apdex",
+            "height":"200",
+            "entityType":"Service",
+            "independentSelector":false,
+            "metricType":"REGULAR_VALUE",
+            "metricName":"service_apdex",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "aggregation":"/",
+            "aggregationNum":"10000"
+          },
+          {
+            "width":12,
+            "title":"Service Avg Response Time",
+            "height":"200",
+            "entityType":"Service",
+            "independentSelector":false,
+            "metricType":"REGULAR_VALUE",
+            "metricName":"service_resp_time",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"ms"
+          },
+          {
+            "width":12,
+            "title":"Successful Rate",
+            "height":"200",
+            "entityType":"Service",
+            "independentSelector":false,
+            "metricType":"REGULAR_VALUE",
+            "metricName":"service_sla",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"%",
+            "aggregation":"/",
+            "aggregationNum":"100"
+          },
+          {
+            "width":12,
+            "title":"Service Load",
+            "height":"200",
+            "entityType":"Service",
+            "metricType":"REGULAR_VALUE",
+            "metricName":"service_cpm",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"CPM - Calls Per Minute"
+          },
+          {
+            "width":12,
+            "title":"Response Time Percentile",
+            "height":"200",
+            "entityType":"Service",
+            "metricType":"LABELED_VALUE",
+            "metricName":"service_percentile",
+            "queryMetricType":"readLabeledMetricsValues",
+            "chartType":"ChartLine",
+            "metricLabels":"P50, P75, P90, P95, P99",
+            "labelsIndex":"0, 1, 2, 3, 4",
+            "unit":"ms"
+          }
+        ],
+        "tcp":[
+          {
+            "width":12,
+            "title":"Service Apdex",
+            "height":"200",
+            "entityType":"Service",
+            "independentSelector":false,
+            "metricType":"REGULAR_VALUE",
+            "metricName":"service_apdex",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "aggregation":"/",
+            "aggregationNum":"10000"
+          },
+          {
+            "width":12,
+            "title":"Response Time",
+            "height":"200",
+            "entityType":"Service",
+            "independentSelector":false,
+            "metricType":"REGULAR_VALUE",
+            "metricName":"service_resp_time",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"ms"
+          },
+          {
+            "width":12,
+            "title":"Response Time Percentile",
+            "height":"200",
+            "entityType":"Service",
+            "metricType":"LABELED_VALUE",
+            "metricName":"service_percentile",
+            "queryMetricType":"readLabeledMetricsValues",
+            "chartType":"ChartLine",
+            "metricLabels":"P50, P75, P90, P95, P99",
+            "labelsIndex":"0, 1, 2, 3, 4",
+            "unit":"ms"
+          },
+          {
+            "width":12,
+            "title":"Successful Rate",
+            "height":"200",
+            "entityType":"Service",
+            "independentSelector":false,
+            "metricType":"REGULAR_VALUE",
+            "metricName":"service_sla",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"%",
+            "aggregation":"/",
+            "aggregationNum":"100"
+          },
+          {
+            "width":12,
+            "title":"Service Load",
+            "height":"200",
+            "entityType":"Service",
+            "metricType":"REGULAR_VALUE",
+            "metricName":"service_cpm",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"CPM - Calls Per Minute"
+          },
+          {
+            "width":12,
+            "title":"Throughput",
+            "height":"200",
+            "entityType":"Service",
+            "metricType":"REGULAR_VALUE",
+            "metricName":"service_throughput_received,service_throughput_sent",
+            "queryMetricType":"readMetricsValues",
+            "chartType":"ChartLine",
+            "unit":"PPM - Packets Per Minutes"
+          }
+        ]
+      }
+    # Activated as the TOPOLOGY_INSTANCE type, makes this templates added into the UI page automatically.
+    # False means providing a basic template, user needs to add it manually.
+    activated: true
+    # True means wouldn't show up on the dashboard. Only keeps the definition in the storage.
+    disabled: false
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/enumeration/TemplateType.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/enumeration/TemplateType.java
index 2d21c13..cbc06bb 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/enumeration/TemplateType.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/enumeration/TemplateType.java
@@ -24,7 +24,9 @@ public enum TemplateType {
     TOPOLOGY_INSTANCE,
     TOPOLOGY_ENDPOINT,
     TOPOLOGY_SERVICE_RELATION,
-    TOPOLOGY_SERVICE_INSTANCE_RELATION;
+    TOPOLOGY_SERVICE_INSTANCE_RELATION,
+    TOPOLOGY_ENDPOINT_RELATION,
+    ;
 
     public static TemplateType forName(String name) {
         return Enum.valueOf(TemplateType.class, name.toUpperCase());
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol b/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol
index 84c6351..9257b02 160000
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol
@@ -1 +1 @@
-Subproject commit 84c635180b8dde4210865f655b83d101c68fe741
+Subproject commit 9257b0287282cd7a1096167710d3fdb9e2e6fc61