From 0c1b8e4967706e583df8c64077515fa7486fd6ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Tue, 9 Jun 2020 08:24:12 +0800 Subject: [PATCH] Add default templates for dashboard and topology. (#4876) --- .../resources/ui-initialized-templates.yml | 767 +++++++++++++++++- .../plugin/influxdb/base/ManagementDAO.java | 24 +- skywalking-ui | 2 +- 3 files changed, 765 insertions(+), 28 deletions(-) diff --git a/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates.yml b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates.yml index 76585b41b9..3ede001062 100644 --- a/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates.yml +++ b/oap-server/server-bootstrap/src/main/resources/ui-initialized-templates.yml @@ -18,17 +18,756 @@ # Also, SkyWalking would detect the existing templates in the database, once they are missing, all templates in this file # could be added automatically. -#templates: -# - name: "APM (Agent based)" -# # The type includes DASHBOARD, TOPOLOGY_INSTANCE, TOPOLOGY_ENDPOINT. -# # DASHBOARD type templates could have multiple definitions, by using different names. -# # TOPOLOGY_INSTANCE, TOPOLOGY_ENDPOINT type templates should be defined once, as they are used in the topology page only. -# type: "DASHBOARD" -# # Configuration could be defined through UI, and use `export` to format in the standard JSON. -# configuration: |- -# JSON format exported from UI. -# # Activated as the DASHBOARD 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 +templates: + - name: "APM" + # The type includes DASHBOARD, TOPOLOGY_INSTANCE, TOPOLOGY_ENDPOINT. + # DASHBOARD type templates could have multiple definitions, by using different names. + # TOPOLOGY_INSTANCE, TOPOLOGY_ENDPOINT type templates should be defined once, as they are used in the topology page only. + type: "DASHBOARD" + # Configuration could be defined through UI, and use `export` to format in the standard JSON. + configuration: |- + [ + { + "name": "APM", + "type": "service", + "children": [ + { + "name": "Global", + "children": [ + { + "width": 3, + "title": "Services Load", + "height": "300", + "entityType": "Service", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_cpm", + "queryMetricType": "sortMetrics", + "chartType": "ChartSlow", + "parentService": false, + "unit": "CPM - calls per minute" + }, + { + "width": 3, + "title": "Slow Services", + "height": "300", + "entityType": "Service", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_resp_time", + "queryMetricType": "sortMetrics", + "chartType": "ChartSlow", + "parentService": false, + "unit": "ms" + }, + { + "width": 3, + "title": "Un-Health Services (Apdex)", + "height": "300", + "entityType": "Service", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_apdex", + "queryMetricType": "sortMetrics", + "chartType": "ChartSlow", + "parentService": false, + "aggregation": "/", + "aggregationNum": "10000", + "sortOrder": "ASC" + }, + { + "width": 3, + "title": "Slow Endpoints", + "height": "300", + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "endpoint_avg", + "queryMetricType": "sortMetrics", + "chartType": "ChartSlow", + "parentService": false, + "unit": "ms" + }, + { + "width": "6", + "title": "Global Response Latency", + "height": "280", + "entityType": "All", + "independentSelector": false, + "metricType": "LABELED_VALUE", + "metricName": "all_percentile", + "queryMetricType": "readLabeledMetricsValues", + "chartType": "ChartLine", + "metricLabels": "P50, P75, P90, P95, P99", + "labelsIndex": "0, 1, 2, 3, 4", + "unit": "percentile in ms" + }, + { + "width": "6", + "title": "Global Heatmap", + "height": "280", + "entityType": "All", + "independentSelector": false, + "metricType": "HEATMAP", + "unit": "ms", + "queryMetricType": "readHeatMap", + "chartType": "ChartHeatmap", + "metricName": "all_heatmap" + } + ] + }, + { + "name": "Service", + "children": [ + { + "width": 3, + "title": "Service Apdex", + "height": "200", + "entityType": "Service", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_apdex", + "queryMetricType": "readMetricsValue", + "chartType": "ChartNum", + "aggregation": "/", + "aggregationNum": "10000" + }, + { + "width": 3, + "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": 3, + "title": "Successful Rate", + "height": "200", + "entityType": "Service", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_sla", + "queryMetricType": "readMetricsValue", + "chartType": "ChartNum", + "unit": "%", + "aggregation": "/", + "aggregationNum": "100" + }, + { + "width": 3, + "title": "Service Load", + "height": "200", + "entityType": "Service", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_cpm", + "queryMetricType": "readMetricsValue", + "chartType": "ChartNum", + "unit": "CPM - calls per minute" + }, + { + "width": 3, + "title": "Service Apdex", + "height": "200", + "entityType": "Service", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_apdex", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "aggregation": "/", + "aggregationNum": "10000" + }, + { + "width": 3, + "title": "Service Response Time Percentile", + "height": "200", + "entityType": "Service", + "independentSelector": false, + "metricType": "LABELED_VALUE", + "metricName": "service_percentile", + "queryMetricType": "readLabeledMetricsValues", + "chartType": "ChartLine", + "unit": "ms", + "metricLabels": "P50, P75, P90, P95, P99", + "labelsIndex": "0, 1, 2, 3, 4" + }, + { + "width": 3, + "title": "Successful Rate", + "height": "200", + "entityType": "Service", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_sla", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "%", + "aggregation": "/", + "aggregationNum": "100" + }, + { + "width": 3, + "title": "Service Load", + "height": "200", + "entityType": "Service", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_cpm", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "CPM - calls per minute" + }, + { + "width": "4", + "title": "Service Instances Load", + "height": "280", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_instance_cpm", + "queryMetricType": "sortMetrics", + "chartType": "ChartSlow", + "parentService": true, + "unit": "CPM - calls per minute" + }, + { + "width": "4", + "title": "Slow Service Instance", + "height": "280", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_instance_resp_time", + "queryMetricType": "sortMetrics", + "chartType": "ChartSlow", + "parentService": true, + "unit": "ms" + }, + { + "width": "4", + "title": "Service Instance Successful Rate", + "height": "280", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_instance_sla", + "queryMetricType": "sortMetrics", + "chartType": "ChartSlow", + "parentService": true, + "unit": "%", + "aggregation": "/", + "aggregationNum": "100", + "sortOrder": "ASC" + } + ] + }, + { + "name": "Instance", + "children": [ + { + "width": "4", + "title": "Service Instance Load", + "height": "150", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_instance_cpm", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "CPM - calls per minute" + }, + { + "width": "4", + "title": "Service Instance Successful Rate", + "height": "150", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_instance_resp_time", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "%", + "aggregation": "/", + "aggregationNum": "100" + }, + { + "width": "4", + "title": "Service Instance Latency", + "height": "150", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_instance_resp_time", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "ms" + }, + { + "width": 3, + "title": "JVM CPU (Java Service)", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "instance_jvm_cpu", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "%", + "aggregation": "+", + "aggregationNum": "" + }, + { + "width": 3, + "title": "JVM Memory (Java Service)", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "instance_jvm_memory_heap, instance_jvm_memory_heap_max,instance_jvm_memory_noheap, instance_jvm_memory_noheap_max", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "MB", + "aggregation": "/", + "aggregationNum": "1045504" + }, + { + "width": 3, + "title": "JVM GC Time", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "instance_jvm_young_gc_time, instance_jvm_old_gc_time", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "ms" + }, + { + "width": 3, + "title": "JVM GC Count", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "metricName": "instance_jvm_young_gc_count, instance_jvm_old_gc_count" + }, + { + "width": 3, + "title": "CLR CPU (.NET Service)", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "instance_clr_cpu", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "%" + }, + { + "width": 3, + "title": "CLR GC (.NET Service)", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "instance_clr_gen0_collect_count, instance_clr_gen1_collect_count, instance_clr_gen2_collect_count", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine" + }, + { + "width": 3, + "title": "CLR Heap Memory (.NET Service)", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "instance_clr_heap_memory", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "MB" + }, + { + "width": 3, + "title": "CLR Thread (.NET Service)", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "metricName": "instance_clr_available_completion_port_threads,instance_clr_available_worker_threads,instance_clr_max_completion_port_threads,instance_clr_max_worker_threads" + } + ] + }, + { + "name": "Endpoint", + "children": [ + { + "width": "4", + "title": "Endpoint Load in Current Service", + "height": "280", + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "endpoint_cpm", + "queryMetricType": "sortMetrics", + "chartType": "ChartSlow", + "parentService": true, + "unit": "CPM - calls per minute" + }, + { + "width": "4", + "title": "Slow Endpoints in Current Service", + "height": "280", + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "queryMetricType": "sortMetrics", + "chartType": "ChartSlow", + "metricName": "endpoint_avg", + "unit": "ms", + "parentService": true + }, + { + "width": "4", + "title": "Successful Rate in Current Service", + "height": "280", + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "endpoint_sla", + "queryMetricType": "sortMetrics", + "chartType": "ChartSlow", + "aggregation": "/", + "aggregationNum": "100", + "parentService": true, + "unit": "%", + "sortOrder": "ASC" + }, + { + "width": 3, + "title": "Endpoint Load", + "height": 350, + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "endpoint_cpm", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine" + }, + { + "width": 3, + "title": "Endpoint Avg Response Time", + "height": 350, + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "endpoint_avg", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "ms" + }, + { + "width": 3, + "title": "Endpoint Response Time Percentile", + "height": 350, + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "LABELED_VALUE", + "metricName": "endpoint_percentile", + "queryMetricType": "readLabeledMetricsValues", + "chartType": "ChartLine", + "metricLabels": "P50, P75, P90, P95, P99", + "labelsIndex": "0, 1, 2, 3, 4", + "unit": "ms" + }, + { + "width": 3, + "title": "Endpoint Successful Rate", + "height": 350, + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "endpoint_sla", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "%", + "aggregation": "/", + "aggregationNum": "100" + } + ] + } + ] + } + ] + # Activated as the DASHBOARD 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 + + - name: "Topology Instance" + # The type includes DASHBOARD, TOPOLOGY_INSTANCE, TOPOLOGY_ENDPOINT. + # DASHBOARD type templates could have multiple definitions, by using different names. + # TOPOLOGY_INSTANCE, TOPOLOGY_ENDPOINT type templates should be defined once, as they are used in the topology page only. + type: "TOPOLOGY_INSTANCE" + # Configuration could be defined through UI, and use `export` to format in the standard JSON. + configuration: |- + [ + { + "width": "4", + "title": "Service Instance Load", + "height": "150", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_instance_cpm", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "CPM - calls per minute" + }, + { + "width": "4", + "title": "Service Instance Successful Rate", + "height": "150", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_instance_resp_time", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "%", + "aggregation": "/", + "aggregationNum": "100" + }, + { + "width": "4", + "title": "Service Instance Latency", + "height": "150", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "service_instance_resp_time", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "ms" + }, + { + "width": 3, + "title": "JVM CPU (Java Service)", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "instance_jvm_cpu", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "%", + "aggregation": "+", + "aggregationNum": "" + }, + { + "width": 3, + "title": "JVM Memory (Java Service)", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "instance_jvm_memory_heap, instance_jvm_memory_heap_max,instance_jvm_memory_noheap, instance_jvm_memory_noheap_max", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "MB", + "aggregation": "/", + "aggregationNum": "1045504" + }, + { + "width": 3, + "title": "JVM GC Time", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "instance_jvm_young_gc_time, instance_jvm_old_gc_time", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "ms" + }, + { + "width": 3, + "title": "JVM GC Count", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "metricName": "instance_jvm_young_gc_count, instance_jvm_old_gc_count" + }, + { + "width": 3, + "title": "CLR CPU (.NET Service)", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "instance_clr_cpu", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "%" + }, + { + "width": 3, + "title": "CLR GC (.NET Service)", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "instance_clr_gen0_collect_count, instance_clr_gen1_collect_count, instance_clr_gen2_collect_count", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine" + }, + { + "width": 3, + "title": "CLR Heap Memory (.NET Service)", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "instance_clr_heap_memory", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "MB" + }, + { + "width": 3, + "title": "CLR Thread (.NET Service)", + "height": "250", + "entityType": "ServiceInstance", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "metricName": "instance_clr_available_completion_port_threads,instance_clr_available_worker_threads,instance_clr_max_completion_port_threads,instance_clr_max_worker_threads" + } + ] + # Activated as the DASHBOARD 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 + + - name: "Topology Endpoint" + # The type includes DASHBOARD, TOPOLOGY_INSTANCE, TOPOLOGY_ENDPOINT. + # DASHBOARD type templates could have multiple definitions, by using different names. + # TOPOLOGY_INSTANCE, TOPOLOGY_ENDPOINT type templates should be defined once, as they are used in the topology page only. + type: "TOPOLOGY_ENDPOINT" + # Configuration could be defined through UI, and use `export` to format in the standard JSON. + configuration: |- + [ + { + "width": "4", + "title": "Endpoint Load in Current Service", + "height": "280", + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "endpoint_cpm", + "queryMetricType": "sortMetrics", + "chartType": "ChartSlow", + "parentService": true, + "unit": "CPM - calls per minute" + }, + { + "width": "4", + "title": "Slow Endpoints in Current Service", + "height": "280", + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "queryMetricType": "sortMetrics", + "chartType": "ChartSlow", + "metricName": "endpoint_avg", + "unit": "ms", + "parentService": true + }, + { + "width": "4", + "title": "Successful Rate in Current Service", + "height": "280", + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "endpoint_sla", + "queryMetricType": "sortMetrics", + "chartType": "ChartSlow", + "aggregation": "/", + "aggregationNum": "100", + "parentService": true, + "unit": "%", + "sortOrder": "ASC" + }, + { + "width": 3, + "title": "Endpoint Load", + "height": 350, + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "endpoint_cpm", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine" + }, + { + "width": 3, + "title": "Endpoint Avg Response Time", + "height": 350, + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "endpoint_avg", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "ms" + }, + { + "width": 3, + "title": "Endpoint Response Time Percentile", + "height": 350, + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "LABELED_VALUE", + "metricName": "endpoint_percentile", + "queryMetricType": "readLabeledMetricsValues", + "chartType": "ChartLine", + "metricLabels": "P50, P75, P90, P95, P99", + "labelsIndex": "0, 1, 2, 3, 4", + "unit": "ms" + }, + { + "width": 3, + "title": "Endpoint Successful Rate", + "height": 350, + "entityType": "Endpoint", + "independentSelector": false, + "metricType": "REGULAR_VALUE", + "metricName": "endpoint_sla", + "queryMetricType": "readMetricsValues", + "chartType": "ChartLine", + "unit": "%", + "aggregation": "/", + "aggregationNum": "100" + } + ] + # Activated as the DASHBOARD 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-storage-plugin/storage-influxdb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/influxdb/base/ManagementDAO.java b/oap-server/server-storage-plugin/storage-influxdb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/influxdb/base/ManagementDAO.java index b45bc41e58..e90a38b7d1 100644 --- a/oap-server/server-storage-plugin/storage-influxdb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/influxdb/base/ManagementDAO.java +++ b/oap-server/server-storage-plugin/storage-influxdb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/influxdb/base/ManagementDAO.java @@ -22,12 +22,13 @@ import java.io.IOException; import java.util.concurrent.TimeUnit; import lombok.extern.slf4j.Slf4j; import org.apache.skywalking.oap.server.core.analysis.management.ManagementData; -import org.apache.skywalking.oap.server.core.analysis.manual.service.ServiceTraffic; +import org.apache.skywalking.oap.server.core.management.ui.template.UITemplate; import org.apache.skywalking.oap.server.core.storage.IManagementDAO; import org.apache.skywalking.oap.server.core.storage.StorageBuilder; import org.apache.skywalking.oap.server.core.storage.model.Model; import org.apache.skywalking.oap.server.storage.plugin.influxdb.InfluxClient; -import org.apache.skywalking.oap.server.storage.plugin.influxdb.TableMetaInfo; +import org.apache.skywalking.oap.server.storage.plugin.influxdb.InfluxConstants; +import org.influxdb.dto.Point; import org.influxdb.dto.QueryResult; import org.influxdb.querybuilder.SelectQueryImpl; import org.influxdb.querybuilder.WhereQueryImpl; @@ -39,8 +40,6 @@ import static org.influxdb.querybuilder.BuiltQuery.QueryBuilder.select; @Slf4j public class ManagementDAO implements IManagementDAO { - private static final long STATIC_TIMESTAMP = 1_000_000; - private InfluxClient client; private StorageBuilder storageBuilder; @@ -52,9 +51,9 @@ public class ManagementDAO implements IManagementDAO { @Override public void insert(final Model model, final ManagementData managementData) throws IOException { final WhereQueryImpl query = select() - .column(ID_COLUMN).column(NAME) - .from(ServiceTraffic.INDEX_NAME) - .where(eq(ID_COLUMN, managementData.id())); + .column(ID_COLUMN).column(NAME) + .from(client.getDatabase(), UITemplate.INDEX_NAME) + .where(eq(ID_COLUMN, managementData.id())); QueryResult.Series series = client.queryForSingleSeries(query); if (log.isDebugEnabled()) { log.debug("SQL: {} result: {}", query.getCommand(), series); @@ -63,11 +62,10 @@ public class ManagementDAO implements IManagementDAO { return; } - final InfluxInsertRequest request = new InfluxInsertRequest(model, managementData, storageBuilder) - .time(STATIC_TIMESTAMP, TimeUnit.NANOSECONDS); - TableMetaInfo.get(model.getName()).getStorageAndTagMap().forEach((field, tag) -> { - request.addFieldAsTag(field, tag); - }); - client.write(request.getPoint()); + Point point = Point.measurement(UITemplate.INDEX_NAME) + .tag(InfluxConstants.TagName.ID_COLUMN, managementData.id()) + .time(1L, TimeUnit.NANOSECONDS) + .fields(storageBuilder.data2Map(managementData)).build(); + client.write(point); } } diff --git a/skywalking-ui b/skywalking-ui index 0416d32524..903a3e856f 160000 --- a/skywalking-ui +++ b/skywalking-ui @@ -1 +1 @@ -Subproject commit 0416d325243be661142fba415717ddc926127016 +Subproject commit 903a3e856f62bfa68e790d2d1263244900d14f62 -- GitLab