diff --git a/apm-dist/src/main/assembly/binary.xml b/apm-dist/src/main/assembly/binary.xml
index 13e77e606fcbba0dac386be6d45edbad9703ae7c..2470656cbc806e1d50edce271142f4504fb24446 100644
--- a/apm-dist/src/main/assembly/binary.xml
+++ b/apm-dist/src/main/assembly/binary.xml
@@ -64,9 +64,9 @@
envoy-metrics-rules/*.yaml
meter-analyzer-config/*.yaml
zabbix-rules/*.yaml
- openapi-definitions/*
+ openapi-definitions/**
otel-oc-rules/*
- ui-initialized-templates/*
+ ui-initialized-templates/**
lal/*
log-mal-rules/*
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializer.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializer.java
index 1b4c84e2197e479e9850612d66656723a02dd253..b5c7867256974c7fd0c7e2b8144a7d1cb4eac084 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializer.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializer.java
@@ -25,12 +25,14 @@ import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
+import java.util.Objects;
import org.apache.skywalking.oap.server.core.CoreModule;
import org.apache.skywalking.oap.server.core.analysis.Layer;
import org.apache.skywalking.oap.server.core.query.input.DashboardSetting;
import org.apache.skywalking.oap.server.core.query.type.DashboardConfiguration;
import org.apache.skywalking.oap.server.library.module.ModuleManager;
import org.apache.skywalking.oap.server.library.util.ResourceUtils;
+import org.apache.skywalking.oap.server.library.util.StringUtil;
/**
* UITemplateInitializer load the template from the config file in json format. It depends on the UI implementation only.
@@ -41,9 +43,13 @@ public class UITemplateInitializer {
public static Layer[] SUPPORTED_LAYER = new Layer[] {
Layer.MESH,
Layer.GENERAL,
+ Layer.OS_LINUX,
+ Layer.MESH_CP,
+ Layer.MESH_DP,
Layer.K8S,
Layer.BROWSER,
- Layer.SO11Y_OAP
+ Layer.SO11Y_OAP,
+ Layer.VIRTUAL_DATABASE
};
private final UITemplateManagementService uiTemplateManagementService;
private final ObjectMapper mapper;
@@ -73,26 +79,29 @@ public class UITemplateInitializer {
"File: " + template.getName() + " should be only one dashboard setting json object.");
}
JsonNode configNode = jsonNode.get(0).get("configuration");
- String inId = configNode.get("id").textValue();
- String inName = configNode.get("name").textValue();
-
- verifyNameConflict(template, inId, inName);
+ String inId = jsonNode.get(0).get("id").textValue();
+ String inNameKey = StringUtil.join('_', configNode.get("layer").textValue(), configNode.get("entity").textValue(), configNode.get("name").textValue());
+ verifyNameConflict(template, inId, inNameKey);
DashboardSetting setting = new DashboardSetting();
setting.setId(inId);
setting.setConfiguration(configNode.toString());
- uiTemplateManagementService.addOrUpdate(setting);
+ uiTemplateManagementService.addIfNotExist(setting);
}
- private void verifyNameConflict(File template, String inId, String inName) throws IOException {
+ private void verifyNameConflict(File template, String inId, String inNameKey) throws IOException {
List configurations = uiTemplateManagementService.getAllTemplates(false);
for (DashboardConfiguration config : configurations) {
- JsonNode jsonNode = mapper.readTree(config.getConfiguration());
- String id = jsonNode.get("id").textValue();
- if (jsonNode.get("name").textValue().equals(inName) && !id.equals(inId)) {
+ JsonNode configNode = mapper.readTree(config.getConfiguration());
+ String id = config.getId();
+ String nameKey = StringUtil.join(
+ '_', configNode.get("layer").textValue(), configNode.get("entity").textValue(),
+ configNode.get("name").textValue()
+ );
+ if (Objects.equals(nameKey, inNameKey) && !id.equals(inId)) {
throw new IllegalArgumentException(
- "File: " + template.getName() + " name: " + inName + " conflict with exist configuration id: " + id);
+ "File: " + template.getName() + " layer_entity_name: " + inNameKey + " conflict with exist configuration id: " + id);
}
}
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateManagementService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateManagementService.java
index 7fe250ea1159681f7252ee804c628e4d9436140c..0a31705b1be49dccc164b8c9487cfcc8c61e4124 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateManagementService.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateManagementService.java
@@ -69,12 +69,10 @@ public class UITemplateManagementService implements Service {
return getUITemplateManagementDAO().disableTemplate(id);
}
- public TemplateChangeStatus addOrUpdate(DashboardSetting setting) throws IOException {
+ public void addIfNotExist(DashboardSetting setting) throws IOException {
DashboardConfiguration configuration = getUITemplateManagementDAO().getTemplate(setting.getId());
if (configuration == null) {
- return getUITemplateManagementDAO().addTemplate(setting);
- } else {
- return getUITemplateManagementDAO().changeTemplate(setting);
+ getUITemplateManagementDAO().addTemplate(setting);
}
}
}
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-root.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-root.json
new file mode 100644
index 0000000000000000000000000000000000000000..78d5742d1e8fc3a4b8d4a3d847132227414fc3f0
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-root.json
@@ -0,0 +1,59 @@
+/**
+ * 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.
+ */
+
+[
+ {
+ "id": "Browser-Root",
+ "configuration": {
+ "children": [
+ {
+ "x": 0,
+ "y": 0,
+ "w": 24,
+ "h": 51,
+ "i": "0",
+ "type": "Widget",
+ "widget": {
+ "title": ""
+ },
+ "graph": {
+ "type": "ServiceList",
+ "dashboardName": "Browser-App",
+ "fontSize": 12,
+ "showXAxis": false,
+ "showYAxis": false,
+ "showGroup": true
+ },
+ "standard": {},
+ "metrics": [
+ "browser_app_pv"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ],
+ "metricConfig": [],
+ "moved": false
+ }
+ ],
+ "layer": "BROWSER",
+ "entity": "All",
+ "name": "Browser-Root",
+ "id": "Browser-Root",
+ "isRoot": true
+ }
+ }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-endpoint.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-endpoint.json
index e2e3de79e2815bfa25471404d28a0583c63692a4..1cbcb42be9f2fc71ab9cce6b9feb86b36cae72c2 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-endpoint.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-endpoint.json
@@ -38,7 +38,7 @@
"metricTypes": [
""
],
- "activedTabIndex": 1,
+ "activedTabIndex": 0,
"children": [
{
"name": "Overview",
@@ -51,15 +51,13 @@
"i": "0",
"type": "Widget",
"widget": {
- "title": "Successful Rate in Current Service"
+ "title": "Successful Rate in Current Service (%)"
},
"graph": {
"type": "TopList",
"topN": "10"
},
"standard": {
- "unit": "%",
- "divide": "100"
},
"metrics": [
"endpoint_sla"
@@ -67,7 +65,12 @@
"metricTypes": [
"sortMetrics"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "calculation": "percentage"
+ }
+ ]
},
{
"x": 8,
@@ -77,14 +80,13 @@
"i": "1",
"type": "Widget",
"widget": {
- "title": "Slow Endpoints in Current Service"
+ "title": "Slow Endpoints in Current Service (ms)"
},
"graph": {
"type": "TopList",
"topN": "10"
},
"standard": {
- "unit": "ms"
},
"metrics": [
"endpoint_resp_time"
@@ -102,7 +104,7 @@
"i": "2",
"type": "Widget",
"widget": {
- "title": "Endpoint Load in Current Service",
+ "title": "Endpoint Load in Current Service (CPM)",
"tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
},
"graph": {
@@ -110,7 +112,6 @@
"topN": "10"
},
"standard": {
- "unit": "CPM"
},
"metrics": [
"endpoint_cpm"
@@ -128,7 +129,7 @@
"i": "3",
"type": "Widget",
"widget": {
- "title": "Endpoint Response Time Percentile"
+ "title": "Endpoint Response Time Percentile (ms)"
},
"graph": {
"type": "Line",
@@ -139,9 +140,6 @@
"showYAxis": true
},
"standard": {
- "unit": "ms",
- "metricLabels": "P50, P75, P90, P95, P99",
- "labelsIndex": "0,1,2,3,4"
},
"metrics": [
"endpoint_percentile"
@@ -149,7 +147,13 @@
"metricTypes": [
"readLabeledMetricsValues"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "label": "P50, P75, P90, P95, P99",
+ "labelsIndex": "0, 1, 2, 3, 4"
+ }
+ ]
},
{
"x": 8,
@@ -159,7 +163,7 @@
"i": "4",
"type": "Widget",
"widget": {
- "title": "Endpoint Avg Response Time"
+ "title": "Endpoint Avg Response Time (ms)"
},
"graph": {
"type": "Line",
@@ -170,7 +174,6 @@
"showYAxis": true
},
"standard": {
- "unit": "ms"
},
"metrics": [
"endpoint_resp_time"
@@ -188,7 +191,7 @@
"i": "5",
"type": "Widget",
"widget": {
- "title": "Message Queue Avg Consuming Latency",
+ "title": "Message Queue Avg Consuming Latency (ms)",
"tips": "The avg latency of message consuming. Latency = timestamp(received) - timestamp(producing)"
},
"graph": {
@@ -200,7 +203,6 @@
"showYAxis": true
},
"standard": {
- "unit": "ms"
},
"metrics": [
"endpoint_mq_consume_latency"
@@ -246,7 +248,7 @@
"i": "7",
"type": "Widget",
"widget": {
- "title": "Endpoint Successful Rate"
+ "title": "Endpoint Successful Rate (%)"
},
"graph": {
"type": "Line",
@@ -257,8 +259,6 @@
"showYAxis": true
},
"standard": {
- "unit": "%",
- "divide": "100"
},
"metrics": [
"endpoint_sla"
@@ -276,7 +276,7 @@
"i": "8",
"type": "Widget",
"widget": {
- "title": "Endpoint Load"
+ "title": "Endpoint Load (CPM)"
},
"graph": {
"type": "Line",
@@ -387,7 +387,6 @@
"layer": "GENERAL",
"entity": "Endpoint",
"name": "General-Endpoint",
- "id": "General-Endpoint",
"isRoot": false
}
}
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance.json
index f1361c67f4d80bdfde7be2f3ec7912f1a2aa9c53..74d21d22fad433d8a3335face9d838761bd659c2 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance.json
@@ -40,20 +40,20 @@
"metricTypes": [
""
],
- "activedTabIndex": 2,
+ "activedTabIndex": 0,
"children": [
{
"name": "Overview",
"children": [
{
- "x": 18,
- "y": 0,
- "w": 6,
+ "x": 0,
+ "y": 14,
+ "w": 12,
"h": 13,
"i": "0",
"type": "Widget",
"widget": {
- "title": "Service Instance Latency"
+ "title": "Service Instance Latency (ms)"
},
"graph": {
"type": "Line",
@@ -77,13 +77,12 @@
{
"x": 12,
"y": 0,
- "w": 6,
- "h": 13,
+ "w": 12,
+ "h": 14,
"i": "1",
"type": "Widget",
"widget": {
- "title": "Service Instance Successful Rate",
- "tips": ""
+ "title": "Service Instance Successful Rate (%)"
},
"graph": {
"type": "Line",
@@ -94,8 +93,6 @@
"showYAxis": true
},
"standard": {
- "unit": "%",
- "divide": "100"
},
"metrics": [
"service_instance_sla"
@@ -103,39 +100,22 @@
"metricTypes": [
"readMetricsValues"
],
- "moved": false
- },
- {
- "x": 6,
- "y": 0,
- "w": 6,
- "h": 13,
- "i": "2",
- "type": "Widget",
- "widget": {
- "title": "Title"
- },
- "graph": {},
- "standard": {
- "unit": "%"
- },
- "metrics": [
- ""
- ],
- "metricTypes": [
- ""
- ],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "calculation": "percentage"
+ }
+ ]
},
{
"x": 0,
"y": 0,
- "w": 6,
- "h": 13,
+ "w": 12,
+ "h": 14,
"i": "3",
"type": "Widget",
"widget": {
- "title": "Service Instance Load",
+ "title": "Service Instance Load (CPM)",
"tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
},
"graph": {
@@ -147,7 +127,6 @@
"showYAxis": true
},
"standard": {
- "unit": "CPM"
},
"metrics": [
"service_instance_cpm"
@@ -158,9 +137,9 @@
"moved": false
},
{
- "x": 0,
- "y": 13,
- "w": 6,
+ "x": 12,
+ "y": 14,
+ "w": 12,
"h": 13,
"i": "10",
"type": "Widget",
@@ -247,7 +226,7 @@
"i": "5",
"type": "Widget",
"widget": {
- "title": "JVM Memory (Java Service)"
+ "title": "JVM Memory (MB)"
},
"graph": {
"type": "Line",
@@ -258,8 +237,6 @@
"showYAxis": true
},
"standard": {
- "unit": "MB",
- "divide": "1048576"
},
"metrics": [
"instance_jvm_memory_noheap_max",
@@ -370,7 +347,7 @@
"i": "14",
"type": "Widget",
"widget": {
- "title": "JVM CPU"
+ "title": "JVM CPU (%)"
},
"graph": {
"type": "Line",
@@ -381,7 +358,6 @@
"showYAxis": true
},
"standard": {
- "unit": "%"
},
"metrics": [
"instance_jvm_cpu"
@@ -428,7 +404,7 @@
"i": "6",
"type": "Widget",
"widget": {
- "title": "JVM GC Time"
+ "title": "JVM GC Time (ms)"
},
"graph": {
"type": "Line",
@@ -439,7 +415,6 @@
"showYAxis": true
},
"standard": {
- "unit": "ms"
},
"metrics": [
"instance_jvm_young_gc_time",
@@ -535,8 +510,6 @@
"showYAxis": true
},
"standard": {
- "unit": "MB",
- "divide": "1048576"
},
"metrics": [
"instance_clr_heap_memory"
@@ -592,7 +565,6 @@
"showYAxis": true
},
"standard": {
- "unit": "%"
},
"metrics": [
"instance_clr_cpu"
@@ -611,7 +583,6 @@
"layer": "GENERAL",
"entity": "ServiceInstance",
"name": "General-Instance",
- "id": "General-Instance",
"isRoot": false
}
}
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-root.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-root.json
index 20b75b7af8935189779f79f9038a57cfd008a5d7..1f580abbe2b2f822cdf331f14b3a85b187fdc09a 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-root.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-root.json
@@ -156,7 +156,6 @@
"layer": "GENERAL",
"entity": "All",
"name": "General-Root",
- "id": "General-Root",
"isRoot": true
}
}
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-service.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-service.json
index cb998affd3f57c2753d34a89262ab55598dbcadc..49019428a20d16bec880e5734c2724904cb42e9c 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-service.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-service.json
@@ -38,7 +38,7 @@
"metricTypes": [
""
],
- "activedTabIndex": 3,
+ "activedTabIndex": 0,
"children": [
{
"name": "Overview",
@@ -46,7 +46,7 @@
{
"x": 0,
"y": 0,
- "w": 7,
+ "w": 8,
"h": 5,
"i": "0",
"type": "Widget",
@@ -56,11 +56,9 @@
"graph": {
"type": "Card",
"fontSize": 14,
- "textAlign": "center",
- "showUint": true
+ "textAlign": "center"
},
"standard": {
- "divide": "10000"
},
"metrics": [
"service_apdex"
@@ -68,12 +66,17 @@
"metricTypes": [
"readMetricsValue"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "calculation": "apdex"
+ }
+ ]
},
{
- "x": 7,
+ "x": 8,
"y": 0,
- "w": 9,
+ "w": 8,
"h": 5,
"i": "1",
"type": "Widget",
@@ -84,14 +87,9 @@
"type": "Card",
"fontSize": 14,
"textAlign": "center",
- "showUint": true
+ "showUnit": true
},
"standard": {
- "0": "1",
- "1": "0",
- "2": "0",
- "divide": "100",
- "unit": "%"
},
"metrics": [
"service_sla"
@@ -99,7 +97,13 @@
"metricTypes": [
"readMetricsValue"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "calculation": "percentage",
+ "unit": "%"
+ }
+ ]
},
{
"x": 16,
@@ -116,11 +120,9 @@
"type": "Card",
"fontSize": 14,
"textAlign": "center",
- "showUint": true
+ "showUnit": true
},
"standard": {
- "divide": 100,
- "unit": "CPM"
},
"metrics": [
"service_cpm"
@@ -128,7 +130,12 @@
"metricTypes": [
"readMetricsValue"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "unit": "CPM"
+ }
+ ]
},
{
"x": 0,
@@ -138,7 +145,7 @@
"i": "3",
"type": "Widget",
"widget": {
- "title": "Service Avg Response Time"
+ "title": "Service Avg Response Time (ms)"
},
"graph": {
"type": "Line",
@@ -149,7 +156,6 @@
"showYAxis": true
},
"standard": {
- "unit": "ms"
},
"metrics": [
"service_resp_time"
@@ -157,7 +163,11 @@
"metricTypes": [
"readMetricsValues"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ }
+ ]
},
{
"x": 6,
@@ -178,7 +188,6 @@
"showYAxis": true
},
"standard": {
- "divide": "10000"
},
"metrics": [
"service_apdex"
@@ -186,7 +195,12 @@
"metricTypes": [
"readMetricsValues"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "calculation": "apdex"
+ }
+ ]
},
{
"x": 12,
@@ -196,7 +210,7 @@
"i": "5",
"type": "Widget",
"widget": {
- "title": "Service Response Time Percentile"
+ "title": "Service Response Time Percentile (ms)"
},
"graph": {
"type": "Line",
@@ -207,9 +221,6 @@
"showYAxis": true
},
"standard": {
- "unit": "ms",
- "metricLabels": "P50, P75, P90, P95, P99",
- "labelsIndex": "0, 1, 2, 3, 4"
},
"metrics": [
"service_percentile"
@@ -217,7 +228,13 @@
"metricTypes": [
"readLabeledMetricsValues"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "label": "P50, P75, P90, P95, P99",
+ "labelsIndex": "0, 1, 2, 3, 4"
+ }
+ ]
},
{
"x": 18,
@@ -227,7 +244,7 @@
"i": "6",
"type": "Widget",
"widget": {
- "title": "Successful Rate"
+ "title": "Successful Rate (%)"
},
"graph": {
"type": "Line",
@@ -247,17 +264,22 @@
"metricTypes": [
"readMetricsValues"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "calculation": "percentage"
+ }
+ ]
},
{
"x": 0,
"y": 16,
- "w": 6,
+ "w": 8,
"h": 11,
"i": "7",
"type": "Widget",
"widget": {
- "title": "Service Load",
+ "title": "Service Load (CPM)",
"tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM)"
},
"graph": {
@@ -269,8 +291,6 @@
"showYAxis": true
},
"standard": {
- "divide": 1,
- "unit": "CPM"
},
"metrics": [
"service_cpm"
@@ -281,9 +301,9 @@
"moved": false
},
{
- "x": 6,
+ "x": 8,
"y": 16,
- "w": 6,
+ "w": 8,
"h": 11,
"i": "9",
"type": "Widget",
@@ -299,8 +319,6 @@
"showYAxis": true
},
"standard": {
- "divide": 1,
- "unit": ""
},
"metrics": [
"service_mq_consume_count"
@@ -311,14 +329,14 @@
"moved": false
},
{
- "x": 12,
+ "x": 16,
"y": 16,
- "w": 6,
+ "w": 8,
"h": 11,
"i": "10",
"type": "Widget",
"widget": {
- "title": "Message Queue Avg Consuming Latency",
+ "title": "Message Queue Avg Consuming Latency (ms)",
"tips": "The avg latency of message consuming. Latency = timestamp(received) - timestamp(producing)"
},
"graph": {
@@ -330,8 +348,6 @@
"showYAxis": true
},
"standard": {
- "divide": "1",
- "unit": "ms"
},
"metrics": [
"service_mq_consume_latency"
@@ -340,6 +356,93 @@
"readMetricsValues"
],
"moved": false
+ },
+ {
+ "x": 0,
+ "y": 27,
+ "w": 8,
+ "h": 14,
+ "i": "11",
+ "type": "Widget",
+ "widget": {
+ "title": "",
+ "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM),"
+ },
+ "graph": {
+ "type": "TopList"
+ },
+ "standard": {},
+ "metrics": [
+ "service_instance_cpm"
+ ],
+ "metricTypes": [
+ "sortMetrics"
+ ],
+ "metricConfig": [
+ {
+ "sortOrder": "DES",
+ "calculation": "percentage"
+ }
+ ],
+ "moved": false
+ },
+ {
+ "x": 8,
+ "y": 27,
+ "w": 8,
+ "h": 14,
+ "i": "12",
+ "type": "Widget",
+ "widget": {
+ "title": "Slow Service Instance (ms)"
+ },
+ "graph": {
+ "type": "TopList",
+ "topN": "10"
+ },
+ "standard": {},
+ "metrics": [
+ "service_instance_resp_time"
+ ],
+ "metricTypes": [
+ "sortMetrics"
+ ],
+ "metricConfig": [
+ {
+ "sortOrder": "DES",
+ "calculation": "percentage"
+ }
+ ],
+ "moved": false
+ },
+ {
+ "x": 16,
+ "y": 27,
+ "w": 8,
+ "h": 14,
+ "i": "13",
+ "type": "Widget",
+ "widget": {
+ "title": "Service Instance Successful Rate (%)"
+ },
+ "graph": {
+ "type": "TopList",
+ "topN": "10"
+ },
+ "standard": {},
+ "metrics": [
+ "service_instance_sla"
+ ],
+ "metricTypes": [
+ "sortMetrics"
+ ],
+ "metricConfig": [
+ {
+ "sortOrder": "ASC",
+ "calculation": "percentage"
+ }
+ ],
+ "moved": false
}
]
},
@@ -530,8 +633,7 @@
],
"layer": "GENERAL",
"entity": "Service",
- "name": "General-Service",
- "id": "General-Service"
+ "name": "General-Service"
}
}
]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-endpoint.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-endpoint.json
index 62f2146341ed1c9876ad330338a6707b3cb79f6d..46f286fbf6e3933e69ed842e7bd0b5ef171b61ca 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-endpoint.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-endpoint.json
@@ -38,7 +38,7 @@
"metricTypes": [
""
],
- "activedTabIndex": 2,
+ "activedTabIndex": 0,
"children": [
{
"name": "Overview",
@@ -51,15 +51,13 @@
"i": "0",
"type": "Widget",
"widget": {
- "title": "Successful Rate in Current Service"
+ "title": "Successful Rate in Current Service (%)"
},
"graph": {
"type": "TopList",
"topN": "10"
},
"standard": {
- "unit": "%",
- "divide": "100"
},
"metrics": [
"endpoint_sla"
@@ -77,14 +75,13 @@
"i": "1",
"type": "Widget",
"widget": {
- "title": "Slow Endpoints in Current Service"
+ "title": "Slow Endpoints in Current Service (ms)"
},
"graph": {
"type": "TopList",
"topN": "10"
},
"standard": {
- "unit": "ms"
},
"metrics": [
"endpoint_resp_time"
@@ -102,7 +99,7 @@
"i": "2",
"type": "Widget",
"widget": {
- "title": "Endpoint Load in Current Service",
+ "title": "Endpoint Load in Current Service (CPM / PPM)",
"tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
},
"graph": {
@@ -110,7 +107,6 @@
"topN": "10"
},
"standard": {
- "unit": "CPM"
},
"metrics": [
"endpoint_cpm"
@@ -128,7 +124,7 @@
"i": "3",
"type": "Widget",
"widget": {
- "title": "Endpoint Response Time Percentile"
+ "title": "Endpoint Response Time Percentile (ms)"
},
"graph": {
"type": "Line",
@@ -149,7 +145,13 @@
"metricTypes": [
"readLabeledMetricsValues"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "label": "P50, P75, P90, P95, P99",
+ "labelsIndex": "0,1,2,3,4"
+ }
+ ]
},
{
"x": 8,
@@ -159,7 +161,7 @@
"i": "4",
"type": "Widget",
"widget": {
- "title": "Endpoint Avg Response Time"
+ "title": "Endpoint Avg Response Time (ms)"
},
"graph": {
"type": "Line",
@@ -170,7 +172,6 @@
"showYAxis": true
},
"standard": {
- "unit": "ms"
},
"metrics": [
"endpoint_resp_time"
@@ -180,65 +181,6 @@
],
"moved": false
},
- {
- "x": 16,
- "y": 26,
- "w": 8,
- "h": 13,
- "i": "5",
- "type": "Widget",
- "widget": {
- "title": "Message Queue Avg Consuming Latency",
- "tips": "The avg latency of message consuming. Latency = timestamp(received) - timestamp(producing)"
- },
- "graph": {
- "type": "Line",
- "step": false,
- "smooth": false,
- "showSymbol": false,
- "showXAxis": true,
- "showYAxis": true
- },
- "standard": {
- "unit": "ms"
- },
- "metrics": [
- "endpoint_mq_consume_latency"
- ],
- "metricTypes": [
- "readMetricsValues"
- ],
- "moved": false
- },
- {
- "x": 8,
- "y": 26,
- "w": 8,
- "h": 13,
- "i": "6",
- "type": "Widget",
- "widget": {
- "title": "Message Queue Consuming Count",
- "tips": "The number of consumed messages."
- },
- "graph": {
- "type": "Line",
- "step": false,
- "smooth": false,
- "showSymbol": false,
- "showXAxis": true,
- "showYAxis": true
- },
- "standard": {
- },
- "metrics": [
- "endpoint_mq_consume_count"
- ],
- "metricTypes": [
- "readMetricsValues"
- ],
- "moved": false
- },
{
"x": 0,
"y": 26,
@@ -247,7 +189,7 @@
"i": "7",
"type": "Widget",
"widget": {
- "title": "Endpoint Successful Rate"
+ "title": "Endpoint Successful Rate (%)"
},
"graph": {
"type": "Line",
@@ -258,8 +200,6 @@
"showYAxis": true
},
"standard": {
- "unit": "%",
- "divide": "100"
},
"metrics": [
"endpoint_sla"
@@ -277,7 +217,7 @@
"i": "8",
"type": "Widget",
"widget": {
- "title": "Endpoint Load"
+ "title": "Endpoint Load (CPM / PPM)"
},
"graph": {
"type": "Line",
@@ -287,8 +227,7 @@
"showXAxis": true,
"showYAxis": true
},
- "standard": {
- },
+ "standard": {},
"metrics": [
"endpoint_cpm"
],
@@ -358,7 +297,6 @@
"layer": "MESH",
"entity": "Endpoint",
"name": "Mesh-Endpoint",
- "id": "Mesh-Endpoint",
"isRoot": false
}
}
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-instance.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-instance.json
index 155ed1a04940e43b8b13edde987bcc18f0a8fe1d..30103a896ce1990c83de369a4583ef875829bf72 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-instance.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-instance.json
@@ -44,14 +44,14 @@
"name": "Overview",
"children": [
{
- "x": 18,
- "y": 0,
- "w": 6,
- "h": 13,
+ "x": 11,
+ "y": 14,
+ "w": 13,
+ "h": 14,
"i": "0",
"type": "Widget",
"widget": {
- "title": "Service Instance Latency"
+ "title": "Service Instance Latency (ms)"
},
"graph": {
"type": "Line",
@@ -62,7 +62,6 @@
"showYAxis": true
},
"standard": {
- "unit": "ms"
},
"metrics": [
"service_instance_resp_time"
@@ -73,15 +72,14 @@
"moved": false
},
{
- "x": 12,
- "y": 0,
- "w": 6,
- "h": 13,
+ "x": 0,
+ "y": 14,
+ "w": 11,
+ "h": 14,
"i": "1",
"type": "Widget",
"widget": {
- "title": "Service Instance Successful Rate",
- "tips": ""
+ "title": "Service Instance Successful Rate (%)"
},
"graph": {
"type": "Line",
@@ -92,8 +90,6 @@
"showYAxis": true
},
"standard": {
- "unit": "%",
- "divide": "100"
},
"metrics": [
"service_instance_sla"
@@ -104,36 +100,44 @@
"moved": false
},
{
- "x": 6,
+ "x": 11,
"y": 0,
- "w": 6,
- "h": 13,
+ "w": 13,
+ "h": 14,
"i": "2",
"type": "Widget",
"widget": {
- "title": "Title"
+ "title": "Service Throughput (Bytes)"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
},
- "graph": {},
"standard": {
- "unit": "%"
},
"metrics": [
- ""
+ "service_throughput_received",
+ "service_throughput_sent"
],
"metricTypes": [
- ""
+ "readMetricsValues",
+ "readMetricsValues"
],
"moved": false
},
{
"x": 0,
"y": 0,
- "w": 6,
- "h": 13,
+ "w": 11,
+ "h": 14,
"i": "3",
"type": "Widget",
"widget": {
- "title": "Service Instance Load",
+ "title": "Service Instance Load (CPM / PPM)",
"tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
},
"graph": {
@@ -145,7 +149,6 @@
"showYAxis": true
},
"standard": {
- "unit": "CPM / PPM"
},
"metrics": [
"service_instance_cpm"
@@ -188,8 +191,7 @@
],
"layer": "MESH",
"entity": "ServiceInstance",
- "name": "Mesh-Instance",
- "id": "Mesh-Instance"
+ "name": "Mesh-Instance"
}
}
]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service.json
index 288c1b7d673b783516b14128b24bfc2b7eb112fc..18d3191c2692657dfb142631fba3d1062a430f64 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service.json
@@ -24,7 +24,7 @@
"x": 0,
"y": 0,
"w": 24,
- "h": 52,
+ "h": 51,
"i": "0",
"type": "Tab",
"widget": {
@@ -38,7 +38,7 @@
"metricTypes": [
""
],
- "activedTabIndex": 4,
+ "activedTabIndex": 0,
"children": [
{
"name": "Overview",
@@ -46,7 +46,7 @@
{
"x": 0,
"y": 0,
- "w": 7,
+ "w": 8,
"h": 5,
"i": "0",
"type": "Widget",
@@ -56,24 +56,26 @@
"graph": {
"type": "Card",
"fontSize": 14,
- "textAlign": "center",
- "showUint": true
- },
- "standard": {
- "divide": "10000"
+ "textAlign": "center"
},
+ "standard": {},
"metrics": [
"service_apdex"
],
"metricTypes": [
"readMetricsValue"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "calculation": "apdex"
+ }
+ ]
},
{
- "x": 7,
+ "x": 8,
"y": 0,
- "w": 9,
+ "w": 8,
"h": 5,
"i": "1",
"type": "Widget",
@@ -84,19 +86,22 @@
"type": "Card",
"fontSize": 14,
"textAlign": "center",
- "showUint": true
- },
- "standard": {
- "divide": "100",
- "unit": "%"
+ "showUnit": true
},
+ "standard": {},
"metrics": [
"service_sla"
],
"metricTypes": [
"readMetricsValue"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "calculation": "percentage",
+ "unit": "%"
+ }
+ ]
},
{
"x": 16,
@@ -113,29 +118,31 @@
"type": "Card",
"fontSize": 14,
"textAlign": "center",
- "showUint": true
- },
- "standard": {
- "divide": 100,
- "unit": "CPM / PPM"
+ "showUnit": true
},
+ "standard": {},
"metrics": [
"service_cpm"
],
"metricTypes": [
"readMetricsValue"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "unit": "CPM / PPM"
+ }
+ ]
},
{
"x": 0,
"y": 5,
- "w": 6,
- "h": 11,
+ "w": 8,
+ "h": 12,
"i": "3",
"type": "Widget",
"widget": {
- "title": "Service Avg Response Time"
+ "title": "Service Avg Response Time (ms)"
},
"graph": {
"type": "Line",
@@ -145,9 +152,7 @@
"showXAxis": true,
"showYAxis": true
},
- "standard": {
- "unit": "ms"
- },
+ "standard": {},
"metrics": [
"service_resp_time"
],
@@ -157,10 +162,10 @@
"moved": false
},
{
- "x": 6,
- "y": 5,
- "w": 6,
- "h": 11,
+ "x": 8,
+ "y": 17,
+ "w": 8,
+ "h": 12,
"i": "4",
"type": "Widget",
"widget": {
@@ -174,26 +179,29 @@
"showXAxis": true,
"showYAxis": true
},
- "standard": {
- "divide": "10000"
- },
+ "standard": {},
"metrics": [
"service_apdex"
],
"metricTypes": [
"readMetricsValues"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "calculation": "apdex"
+ }
+ ]
},
{
- "x": 12,
+ "x": 8,
"y": 5,
- "w": 6,
- "h": 11,
+ "w": 8,
+ "h": 12,
"i": "5",
"type": "Widget",
"widget": {
- "title": "Service Response Time Percentile"
+ "title": "Service Response Time Percentile (ms)"
},
"graph": {
"type": "Line",
@@ -203,28 +211,30 @@
"showXAxis": true,
"showYAxis": true
},
- "standard": {
- "unit": "ms",
- "metricLabels": "P50, P75, P90, P95, P99",
- "labelsIndex": "0, 1, 2, 3, 4"
- },
+ "standard": {},
"metrics": [
"service_percentile"
],
"metricTypes": [
"readLabeledMetricsValues"
],
- "moved": false
+ "moved": false,
+ "metricConfig": [
+ {
+ "label": "P50, P75, P90, P95, P99",
+ "labelsIndex": "0, 1, 2, 3, 4"
+ }
+ ]
},
{
- "x": 18,
- "y": 5,
- "w": 6,
- "h": 11,
+ "x": 0,
+ "y": 17,
+ "w": 8,
+ "h": 12,
"i": "6",
"type": "Widget",
"widget": {
- "title": "Successful Rate"
+ "title": "Successful Rate (%)"
},
"graph": {
"type": "Line",
@@ -234,10 +244,7 @@
"showXAxis": true,
"showYAxis": true
},
- "standard": {
- "divide": 100,
- "unit": "%"
- },
+ "standard": {},
"metrics": [
"service_sla"
],
@@ -247,14 +254,14 @@
"moved": false
},
{
- "x": 0,
- "y": 16,
- "w": 6,
- "h": 11,
+ "x": 16,
+ "y": 17,
+ "w": 8,
+ "h": 12,
"i": "7",
"type": "Widget",
"widget": {
- "title": "Service Load",
+ "title": "Service Load (CPM / PPM)",
"tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
},
"graph": {
@@ -265,10 +272,7 @@
"showXAxis": true,
"showYAxis": true
},
- "standard": {
- "unit": "CPM / PPM",
- "divide": 1
- },
+ "standard": {},
"metrics": [
"service_cpm"
],
@@ -278,25 +282,114 @@
"moved": false
},
{
- "x": 6,
- "y": 16,
- "w": 6,
- "h": 11,
+ "x": 16,
+ "y": 5,
+ "w": 8,
+ "h": 12,
"i": "8",
"type": "Widget",
"widget": {
- "title": "Service Throughput",
+ "title": "Service Throughput (Bytes)",
"tips": "This metrics is only avaible for TCP services"
},
- "graph": {},
- "standard": {
- "unit": "Bytes"
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
},
+ "standard": {},
"metrics": [
- ""
+ "service_throughput_received",
+ "service_throughput_sent"
],
"metricTypes": [
- ""
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 29,
+ "w": 8,
+ "h": 14,
+ "i": "9",
+ "type": "Widget",
+ "widget": {
+ "title": "Service Instances Load (CPM / PPM)"
+ },
+ "graph": {
+ "type": "TopList",
+ "topN": "10"
+ },
+ "standard": {},
+ "metrics": [
+ "service_instance_cpm"
+ ],
+ "metricTypes": [
+ "sortMetrics"
+ ],
+ "metricConfig": [
+ {
+ "calculation": "percentage"
+ }
+ ],
+ "moved": false
+ },
+ {
+ "x": 8,
+ "y": 29,
+ "w": 8,
+ "h": 14,
+ "i": "10",
+ "type": "Widget",
+ "widget": {
+ "title": "Slow Service Instance (ms)"
+ },
+ "graph": {
+ "type": "TopList"
+ },
+ "standard": {},
+ "metrics": [
+ "service_instance_resp_time"
+ ],
+ "metricTypes": [
+ "sortMetrics"
+ ],
+ "metricConfig": [
+ {
+ "calculation": "percentage"
+ }
+ ],
+ "moved": false
+ },
+ {
+ "x": 16,
+ "y": 29,
+ "w": 8,
+ "h": 14,
+ "i": "11",
+ "type": "Widget",
+ "widget": {
+ "title": "Service Instance Successful Rate (%)"
+ },
+ "graph": {
+ "type": "TopList"
+ },
+ "standard": {},
+ "metrics": [
+ "service_instance_sla"
+ ],
+ "metricTypes": [
+ "sortMetrics"
+ ],
+ "metricConfig": [
+ {
+ "calculation": "percentage"
+ }
],
"moved": false
}
@@ -309,7 +402,7 @@
"x": 0,
"y": 0,
"w": 24,
- "h": 49,
+ "h": 48,
"i": "0",
"type": "Widget",
"widget": {
@@ -420,8 +513,7 @@
],
"layer": "MESH",
"entity": "Service",
- "name": "Mesh-Service",
- "id": "Mesh-Service"
+ "name": "Mesh-Service"
}
}
]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_cp/mesh-control-plane-root.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_cp/mesh-control-plane-root.json
new file mode 100644
index 0000000000000000000000000000000000000000..ed2d9aefe694efa4eb8dcf2b86544c736e26daca
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_cp/mesh-control-plane-root.json
@@ -0,0 +1,57 @@
+/**
+ * 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.
+ */
+
+[
+ {
+ "id": "Mesh-Control-Plane-Root",
+ "configuration": {
+ "children": [
+ {
+ "x": 0,
+ "y": 0,
+ "w": 24,
+ "h": 51,
+ "i": "0",
+ "type": "Widget",
+ "widget": {
+ "title": ""
+ },
+ "graph": {
+ "type": "ServiceList",
+ "dashboardName": "Mesh-Control-Plane-Service",
+ "fontSize": 12,
+ "showXAxis": false,
+ "showYAxis": false,
+ "showGroup": true
+ },
+ "standard": {},
+ "metrics": [
+ ""
+ ],
+ "metricTypes": [
+ ""
+ ],
+ "moved": false
+ }
+ ],
+ "layer": "MESH_CP",
+ "entity": "All",
+ "name": "Mesh-Control-Plane-Root",
+ "isRoot": true
+ }
+ }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_cp/mesh-control-plane-service.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_cp/mesh-control-plane-service.json
new file mode 100644
index 0000000000000000000000000000000000000000..13503cc962137d20c20e4b3c523387316e7a15cd
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_cp/mesh-control-plane-service.json
@@ -0,0 +1,345 @@
+/**
+ * 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.
+ */
+
+[
+ {
+ "id": "Mesh-Control-Plane-Service",
+ "configuration": {
+ "children": [
+ {
+ "x": 12,
+ "y": 0,
+ "w": 6,
+ "h": 12,
+ "i": "0",
+ "type": "Widget",
+ "widget": {
+ "title": "CPU"
+ },
+ "graph": {
+ "type": "Area",
+ "opacity": 0.4,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "unit": "%"
+ },
+ "metrics": [
+ "meter_istio_cpu"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 18,
+ "y": 0,
+ "w": 6,
+ "h": 12,
+ "i": "1",
+ "type": "Widget",
+ "widget": {
+ "title": "Goroutines"
+ },
+ "graph": {
+ "type": "Area",
+ "opacity": 0.4,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "meter_istio_go_goroutines"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 0,
+ "w": 6,
+ "h": 12,
+ "i": "2",
+ "type": "Widget",
+ "widget": {
+ "title": "Istio Versions"
+ },
+ "graph": {
+ "type": "Area",
+ "opacity": 0.4,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "meter_istio_pilot_version"
+ ],
+ "metricTypes": [
+ "readLabeledMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 6,
+ "y": 0,
+ "w": 6,
+ "h": 12,
+ "i": "3",
+ "type": "Widget",
+ "widget": {
+ "title": "Memory"
+ },
+ "graph": {
+ "type": "Area",
+ "opacity": 0.4,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "0": "1",
+ "1": "0",
+ "2": "4",
+ "3": "8",
+ "4": "5",
+ "5": "7",
+ "6": "6",
+ "unit": "MB",
+ "divide": "1048576"
+ },
+ "metrics": [
+ "meter_istio_go_stack_inuse",
+ "meter_istio_virtual_memory",
+ "meter_istio_go_alloc",
+ "meter_istio_resident_memory",
+ "meter_istio_go_heap_inuse"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 8,
+ "y": 12,
+ "w": 8,
+ "h": 14,
+ "i": "4",
+ "type": "Widget",
+ "widget": {
+ "title": "Pilot Errors"
+ },
+ "graph": {
+ "type": "Area",
+ "opacity": 0.4,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "meter_istio_pilot_xds_cds_reject",
+ "meter_istio_pilot_xds_eds_reject",
+ "meter_istio_pilot_xds_rds_reject",
+ "meter_istio_pilot_xds_lds_reject",
+ "meter_istio_pilot_xds_write_timeout"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 16,
+ "y": 12,
+ "w": 8,
+ "h": 14,
+ "i": "5",
+ "type": "Widget",
+ "widget": {
+ "title": "Proxy Push Time"
+ },
+ "graph": {
+ "type": "Area",
+ "opacity": 0.4,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "unit": "%"
+ },
+ "metrics": [
+ "meter_istio_pilot_proxy_push_percentile"
+ ],
+ "metricTypes": [
+ "readLabeledMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 12,
+ "w": 8,
+ "h": 14,
+ "i": "6",
+ "type": "Widget",
+ "widget": {
+ "title": "Pilot pushes"
+ },
+ "graph": {
+ "type": "Bar",
+ "showBackground": true
+ },
+ "standard": {},
+ "metrics": [
+ "meter_istio_pilot_xds_pushes"
+ ],
+ "metricTypes": [
+ "readLabeledMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 12,
+ "y": 40,
+ "w": 12,
+ "h": 14,
+ "i": "7",
+ "type": "Widget",
+ "widget": {
+ "title": "Sidecar Injection"
+ },
+ "graph": {
+ "type": "Area",
+ "opacity": 0.4,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "meter_istio_sidecar_injection_success_total"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 12,
+ "y": 26,
+ "w": 12,
+ "h": 14,
+ "i": "8",
+ "type": "Widget",
+ "widget": {
+ "title": "ADS Monitoring"
+ },
+ "graph": {
+ "type": "Area",
+ "opacity": 0.4,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "meter_istio_pilot_xds",
+ "meter_istio_pilot_services",
+ "meter_istio_pilot_virt_services"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 40,
+ "w": 12,
+ "h": 14,
+ "i": "9",
+ "type": "Widget",
+ "widget": {
+ "title": "Configuration Validation"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "meter_istio_galley_validation_passed",
+ "meter_istio_galley_validation_failed"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 26,
+ "w": 12,
+ "h": 14,
+ "i": "10",
+ "type": "Widget",
+ "widget": {
+ "title": "Conflicts"
+ },
+ "graph": {
+ "type": "Bar",
+ "showBackground": true
+ },
+ "standard": {},
+ "metrics": [
+ "meter_istio_pilot_conflict_ol_tcp_tcp",
+ "meter_istio_pilot_conflict_il",
+ "meter_istio_pilot_conflict_ol_tcp_http",
+ "meter_istio_pilot_conflict_ol_http_tcp"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ }
+ ],
+ "name": "Mesh-Control-Plane-Service",
+ "layer": "MESH_CP",
+ "entity": "Service",
+ "isRoot": false
+ }
+ }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_dp/mesh-data-plane-instance.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_dp/mesh-data-plane-instance.json
new file mode 100644
index 0000000000000000000000000000000000000000..bdf44fcb4dda0d61b85ed9c41e020ce7f83e8562
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_dp/mesh-data-plane-instance.json
@@ -0,0 +1,318 @@
+/**
+ * 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.
+ */
+
+[
+ {
+ "id": "Mesh-Data-Plane-Instance",
+ "configuration": {
+ "children": [
+ {
+ "x": 18,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "0",
+ "type": "Widget",
+ "widget": {
+ "title": "Upstream Request Active"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "envoy_cluster_up_rq_active"
+ ],
+ "metricTypes": [
+ "readLabeledMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 6,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "1",
+ "type": "Widget",
+ "widget": {
+ "title": "Connections Used"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "envoy_total_connections_used",
+ "envoy_parent_connections_used"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "2",
+ "type": "Widget",
+ "widget": {
+ "title": "Membership Healthy"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "envoy_cluster_membership_healthy"
+ ],
+ "metricTypes": [
+ "readLabeledMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 12,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "3",
+ "type": "Widget",
+ "widget": {
+ "title": "Upstream Connection Increase"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "envoy_cluster_up_cx_incr"
+ ],
+ "metricTypes": [
+ "readLabeledMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 6,
+ "y": 26,
+ "w": 6,
+ "h": 13,
+ "i": "4",
+ "type": "Widget",
+ "widget": {
+ "title": "Upstream Request Pending Active"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "envoy_cluster_up_rq_pending_active"
+ ],
+ "metricTypes": [
+ "readLabeledMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "5",
+ "type": "Widget",
+ "widget": {
+ "title": "Heap Memory Used"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "unit": "MB",
+ "divide": "1048576"
+ },
+ "metrics": [
+ "envoy_memory_allocated_max",
+ "envoy_heap_memory_used",
+ "envoy_memory_allocated",
+ "envoy_memory_physical_size",
+ "envoy_memory_physical_size_max",
+ "envoy_heap_memory_max_used"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 18,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "6",
+ "type": "Widget",
+ "widget": {
+ "title": "Envoy Bug Failure"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "envoy_bug_failures"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 12,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "7",
+ "type": "Widget",
+ "widget": {
+ "title": "Concurrency"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "envoy_worker_threads_max",
+ "envoy_worker_threads"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 6,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "8",
+ "type": "Widget",
+ "widget": {
+ "title": "Upstream Connection Active"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "envoy_cluster_up_cx_active"
+ ],
+ "metricTypes": [
+ "readLabeledMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 26,
+ "w": 6,
+ "h": 13,
+ "i": "9",
+ "type": "Widget",
+ "widget": {
+ "title": "Upstream Request Increase"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "envoy_cluster_up_rq_incr"
+ ],
+ "metricTypes": [
+ "readLabeledMetricsValues"
+ ],
+ "moved": false
+ }
+ ],
+ "name": "Mesh-Data-Plane-Instance",
+ "layer": "MESH_DP",
+ "entity": "ServiceInstance",
+ "isRoot": false
+ }
+ }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_dp/mesh-data-plane-root.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_dp/mesh-data-plane-root.json
new file mode 100644
index 0000000000000000000000000000000000000000..cc4f9a86655f468a8899f513c8b796a9a93ab850
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_dp/mesh-data-plane-root.json
@@ -0,0 +1,58 @@
+/**
+ * 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.
+ */
+
+[
+ {
+ "id": "Mesh-Data-Plane-Root",
+ "configuration": {
+ "children": [
+ {
+ "x": 0,
+ "y": 0,
+ "w": 24,
+ "h": 51,
+ "i": "0",
+ "type": "Widget",
+ "widget": {
+ "title": ""
+ },
+ "graph": {
+ "type": "ServiceList",
+ "dashboardName": "Mesh-Data-Plane-Service",
+ "fontSize": 12,
+ "showXAxis": false,
+ "showYAxis": false,
+ "showGroup": true
+ },
+ "standard": {},
+ "metrics": [
+ ""
+ ],
+ "metricTypes": [
+ ""
+ ],
+ "metricConfig": [],
+ "moved": false
+ }
+ ],
+ "layer": "MESH_DP",
+ "entity": "All",
+ "name": "Mesh-Data-Plane-Root",
+ "isRoot": true
+ }
+ }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_dp/mesh-data-plane-service.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_dp/mesh-data-plane-service.json
new file mode 100644
index 0000000000000000000000000000000000000000..a9a5ba253538229b3df726f286f84b029a0a5c4a
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_dp/mesh-data-plane-service.json
@@ -0,0 +1,55 @@
+/**
+ * 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.
+ */
+
+[
+ {
+ "id": "Mesh-Data-Plane-Service",
+ "configuration": {
+ "children": [
+ {
+ "x": 0,
+ "y": 0,
+ "w": 24,
+ "h": 52,
+ "i": "0",
+ "type": "Widget",
+ "widget": {
+ "title": ""
+ },
+ "graph": {
+ "type": "InstanceList",
+ "dashboardName": "Mesh-Data-Plane-Instance",
+ "fontSize": 12
+ },
+ "standard": {},
+ "metrics": [
+ ""
+ ],
+ "metricTypes": [
+ ""
+ ],
+ "moved": false
+ }
+ ],
+ "layer": "MESH_DP",
+ "entity": "Service",
+ "name": "Mesh-Data-Plane-Service",
+ "id": "Mesh-Data-Plane-Service",
+ "isRoot": false
+ }
+ }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/os_linux/linux-root.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/os_linux/linux-root.json
new file mode 100644
index 0000000000000000000000000000000000000000..63c42078a0ed801908f5d00d708f44f360194098
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/os_linux/linux-root.json
@@ -0,0 +1,57 @@
+/**
+ * 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.
+ */
+
+[
+ {
+ "id": "Linux-Root",
+ "configuration": {
+ "children": [
+ {
+ "x": 0,
+ "y": 0,
+ "w": 24,
+ "h": 51,
+ "i": "0",
+ "type": "Widget",
+ "widget": {
+ "title": ""
+ },
+ "graph": {
+ "type": "ServiceList",
+ "dashboardName": "Linux-Service",
+ "fontSize": 12,
+ "showXAxis": false,
+ "showYAxis": false,
+ "showGroup": true
+ },
+ "standard": {},
+ "metrics": [
+ "meter_vm_cpu_total_percentage"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ],
+ "moved": false
+ }
+ ],
+ "layer": "OS_LINUX",
+ "entity": "All",
+ "name": "Linux-Root",
+ "isRoot": true
+ }
+ }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/os_linux/linux-service.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/os_linux/linux-service.json
new file mode 100644
index 0000000000000000000000000000000000000000..1f564e0107c4ac9c5ef6902274d220bf94d0bebe
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/os_linux/linux-service.json
@@ -0,0 +1,388 @@
+/**
+ * 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.
+ */
+
+[
+ {
+ "id": "Linux-Service",
+ "configuration": {
+ "children": [
+ {
+ "x": 16,
+ "y": 32,
+ "w": 8,
+ "h": 13,
+ "i": "0",
+ "type": "Widget",
+ "widget": {
+ "title": "Filefd Allocated"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {},
+ "metrics": [
+ "meter_vm_filefd_allocated"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 8,
+ "y": 32,
+ "w": 8,
+ "h": 13,
+ "i": "1",
+ "type": "Widget",
+ "widget": {
+ "title": "Network Status"
+ },
+ "graph": {
+ "type": "Line",
+ "opacity": 0.4,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "divide": "1024"
+ },
+ "metrics": [
+ "meter_vm_tcp_curr_estab",
+ "meter_vm_tcp_tw",
+ "meter_vm_tcp_alloc",
+ "meter_vm_sockets_used",
+ "meter_vm_udp_inuse"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 32,
+ "w": 8,
+ "h": 13,
+ "i": "2",
+ "type": "Widget",
+ "widget": {
+ "title": "Network Bandwidth Usage"
+ },
+ "graph": {
+ "type": "Area",
+ "opacity": 0.4,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "unit": "KB/s",
+ "divide": "1024"
+ },
+ "metrics": [
+ "meter_vm_network_receive",
+ "meter_vm_network_transmit"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 16,
+ "y": 19,
+ "w": 8,
+ "h": 13,
+ "i": "3",
+ "type": "Widget",
+ "widget": {
+ "title": "Disk R/W"
+ },
+ "graph": {
+ "type": "Line",
+ "opacity": 0.4,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "unit": "KB/s - OTEL, ops - Zabbix",
+ "divide": "1024"
+ },
+ "metrics": [
+ "meter_vm_disk_read",
+ "meter_vm_disk_written"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 8,
+ "y": 19,
+ "w": 8,
+ "h": 13,
+ "i": "4",
+ "type": "Widget",
+ "widget": {
+ "title": "File System Mountpoint Usage"
+ },
+ "graph": {
+ "type": "Line",
+ "fontSize": 14,
+ "textAlign": "center",
+ "showUint": true
+ },
+ "standard": {
+ "unit": "%"
+ },
+ "metrics": [
+ "meter_vm_filesystem_percentage"
+ ],
+ "metricTypes": [
+ "readLabeledMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 6,
+ "w": 8,
+ "h": 13,
+ "i": "5",
+ "type": "Widget",
+ "widget": {
+ "title": "CPU Average Used"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "unit": "%"
+ },
+ "metrics": [
+ "meter_vm_cpu_average_used"
+ ],
+ "metricTypes": [
+ "readLabeledMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 16,
+ "y": 6,
+ "w": 8,
+ "h": 13,
+ "i": "6",
+ "type": "Widget",
+ "widget": {
+ "title": "Memory RAM"
+ },
+ "graph": {
+ "type": "Area",
+ "opacity": 0.4,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "unit": "MB",
+ "divide": "1048576"
+ },
+ "metrics": [
+ "meter_vm_memory_used",
+ "meter_vm_memory_total",
+ "meter_vm_memory_available"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 8,
+ "y": 6,
+ "w": 8,
+ "h": 13,
+ "i": "7",
+ "type": "Widget",
+ "widget": {
+ "title": "CPU Load"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "0": "1",
+ "1": "0",
+ "2": "0",
+ "divide": "100"
+ },
+ "metrics": [
+ "meter_vm_cpu_load5",
+ "meter_vm_cpu_load1",
+ "meter_vm_cpu_load15"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 19,
+ "w": 8,
+ "h": 13,
+ "i": "8",
+ "type": "Widget",
+ "widget": {
+ "title": "Memory Swap"
+ },
+ "graph": {
+ "type": "Area",
+ "opacity": 0.4,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "unit": "MB",
+ "divide": "1048576"
+ },
+ "metrics": [
+ "meter_vm_memory_swap_free",
+ "meter_vm_memory_swap_total"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 16,
+ "y": 0,
+ "w": 8,
+ "h": 6,
+ "i": "9",
+ "type": "Widget",
+ "widget": {
+ "title": "Memory Swap Usage"
+ },
+ "graph": {
+ "type": "Card",
+ "fontSize": 14,
+ "textAlign": "center",
+ "showUint": true
+ },
+ "standard": {
+ "unit": "%"
+ },
+ "metrics": [
+ "meter_vm_memory_swap_percentage"
+ ],
+ "metricTypes": [
+ "readMetricsValue"
+ ],
+ "moved": false
+ },
+ {
+ "x": 8,
+ "y": 0,
+ "w": 8,
+ "h": 6,
+ "i": "10",
+ "type": "Widget",
+ "widget": {
+ "title": "Memory RAM Usage"
+ },
+ "graph": {
+ "type": "Card",
+ "fontSize": 14,
+ "textAlign": "center",
+ "showUint": true
+ },
+ "standard": {
+ "unit": "MB",
+ "divide": "1048576"
+ },
+ "metrics": [
+ "meter_vm_memory_used"
+ ],
+ "metricTypes": [
+ "readMetricsValue"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 0,
+ "w": 8,
+ "h": 6,
+ "i": "11",
+ "type": "Widget",
+ "widget": {
+ "title": "CPU Usage"
+ },
+ "graph": {
+ "type": "Card",
+ "fontSize": 14,
+ "textAlign": "center",
+ "showUint": true
+ },
+ "standard": {
+ "unit": "%"
+ },
+ "metrics": [
+ "meter_vm_cpu_total_percentage"
+ ],
+ "metricTypes": [
+ "readMetricsValue"
+ ],
+ "moved": false
+ }
+ ],
+ "name": "Linux-Service",
+ "layer": "OS_LINUX",
+ "entity": "Service",
+ "isRoot": false
+ }
+ }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/virtual_database/virtual-database-root.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/virtual_database/virtual-database-root.json
new file mode 100644
index 0000000000000000000000000000000000000000..1b09cfa1c83efc60ae4ab3f0ebaee35b34162554
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/virtual_database/virtual-database-root.json
@@ -0,0 +1,58 @@
+/**
+ * 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.
+ */
+
+[
+ {
+ "id": "Virtual-Database-Root",
+ "configuration": {
+ "children": [
+ {
+ "x": 0,
+ "y": 0,
+ "w": 24,
+ "h": 52,
+ "i": "0",
+ "type": "Widget",
+ "widget": {
+ "title": "Virtual Database"
+ },
+ "graph": {
+ "type": "ServiceList",
+ "dashboardName": "Virtual-Database-Service",
+ "fontSize": 12,
+ "showXAxis": false,
+ "showYAxis": false,
+ "showGroup": true
+ },
+ "standard": {},
+ "metrics": [
+ "database_access_resp_time"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ],
+ "moved": false
+ }
+ ],
+ "layer": "VIRTUAL_DATABASE",
+ "entity": "All",
+ "name": "Virtual-Database-Root",
+ "id": "Virtual-Database-Root",
+ "isRoot": true
+ }
+ }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/virtual_database/virtual-database-service.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/virtual_database/virtual-database-service.json
new file mode 100644
index 0000000000000000000000000000000000000000..8a9d6ccb75d40048d208f58a9205ddeb077ea88e
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/virtual_database/virtual-database-service.json
@@ -0,0 +1,225 @@
+[
+ {
+ "id": "Virtual-Database-Service",
+ "configuration": {
+ "children": [
+ {
+ "x": 18,
+ "y": 13,
+ "w": 6,
+ "h": 14,
+ "i": "0",
+ "type": "Widget",
+ "widget": {
+ "title": "Un-Health Databases (Successful Rate)"
+ },
+ "graph": {
+ "type": "TopList"
+ },
+ "standard": {
+ "unit": "%",
+ "divide": "100",
+ "metricLabels": "P50,P75,P90,P95,P99",
+ "labelsIndex": "0,1,2,3,4"
+ },
+ "metrics": [
+ "database_access_sla"
+ ],
+ "metricTypes": [
+ "sortMetrics"
+ ],
+ "moved": false
+ },
+ {
+ "x": 12,
+ "y": 13,
+ "w": 6,
+ "h": 14,
+ "i": "1",
+ "type": "Widget",
+ "widget": {
+ "title": "All Database Loads"
+ },
+ "graph": {
+ "type": "TopList"
+ },
+ "standard": {
+ "unit": "%",
+ "divide": "100",
+ "metricLabels": "P50,P75,P90,P95,P99",
+ "labelsIndex": "0,1,2,3,4"
+ },
+ "metrics": [
+ "database_access_cpm"
+ ],
+ "metricTypes": [
+ "sortMetrics"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 13,
+ "w": 12,
+ "h": 14,
+ "i": "2",
+ "type": "Widget",
+ "widget": {
+ "title": "Slow Statements"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "unit": "%",
+ "divide": "100",
+ "metricLabels": "P50,P75,P90,P95,P99",
+ "labelsIndex": "0,1,2,3,4"
+ },
+ "metrics": [
+ "top_n_database_statement"
+ ],
+ "metricTypes": [
+ "readSampledRecords"
+ ],
+ "moved": false
+ },
+ {
+ "x": 6,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "3",
+ "type": "Widget",
+ "widget": {
+ "title": "Database Access Successful Rate"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "0": "1",
+ "1": "0",
+ "2": "0",
+ "unit": "%",
+ "divide": "100"
+ },
+ "metrics": [
+ "database_access_sla"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 12,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "4",
+ "type": "Widget",
+ "widget": {
+ "title": "Database Traffic"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "0": "1",
+ "unit": "CPM - calls per minute",
+ "divide": "1"
+ },
+ "metrics": [
+ "database_access_cpm"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 18,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "5",
+ "type": "Widget",
+ "widget": {
+ "title": "Database Access Latency Percentile"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "unit": "ms",
+ "metricLabels": "P50, P75, P90, P95, P99"
+ },
+ "metrics": [
+ "database_access_percentile"
+ ],
+ "metricTypes": [
+ "readLabeledMetricsValues"
+ ],
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "6",
+ "type": "Widget",
+ "widget": {
+ "title": "Database Avg Response Time"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "standard": {
+ "unit": "%",
+ "divide": "100",
+ "metricLabels": "P50,P75,P90,P95,P99",
+ "labelsIndex": "0,1,2,3,4"
+ },
+ "metrics": [
+ "database_access_resp_time"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ],
+ "moved": false
+ }
+ ],
+ "name": "Virtual-Database-Service",
+ "layer": "VIRTUAL_DATABASE",
+ "entity": "Service",
+ "isRoot": false
+ }
+ }
+]
diff --git a/oap-server/server-starter/src/test/java/org/apache/skywalking/oap/server/starter/UITemplateCheckerTest.java b/oap-server/server-starter/src/test/java/org/apache/skywalking/oap/server/starter/UITemplateCheckerTest.java
index d986d83ace59bd5065d42d3beacce9ecc88ae648..b61ec68994180d674a197f4f3e09aa15dfa2c6eb 100644
--- a/oap-server/server-starter/src/test/java/org/apache/skywalking/oap/server/starter/UITemplateCheckerTest.java
+++ b/oap-server/server-starter/src/test/java/org/apache/skywalking/oap/server/starter/UITemplateCheckerTest.java
@@ -55,10 +55,7 @@ public class UITemplateCheckerTest {
}
JsonNode configNode = jsonNode.get(0).get("configuration");
- String inId = configNode.get("id").textValue();
- Assert.assertEquals(
- "File: " + template + " has invalid id", jsonNode.get(0).get("id").textValue(), inId);
-
+ String inId = jsonNode.get(0).get("id").textValue();
String inName = configNode.get("name").textValue();
String inLayer = configNode.get("layer").textValue();
String inEntity = configNode.get("entity").textValue();
diff --git a/skywalking-ui b/skywalking-ui
index 355fe215a3b973bc67d6b2f316e7f336dada3a3e..61d182b986681f09b3f9fce8af698165f4403450 160000
--- a/skywalking-ui
+++ b/skywalking-ui
@@ -1 +1 @@
-Subproject commit 355fe215a3b973bc67d6b2f316e7f336dada3a3e
+Subproject commit 61d182b986681f09b3f9fce8af698165f4403450