You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2022/03/28 23:46:30 UTC

[skywalking] branch master updated: UI template init and add control environment variable (#8760)

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

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new 81921c2  UI template init and add control environment variable  (#8760)
81921c2 is described below

commit 81921c2953e234f623307f51dc34e5a5fe6caab1
Author: Kai <wa...@foxmail.com>
AuthorDate: Tue Mar 29 07:46:08 2022 +0800

    UI template init and add control environment variable  (#8760)
---
 CHANGES.md                                         |   2 +
 docs/en/setup/backend/configuration-vocabulary.md  | 509 ++++++++--------
 .../oap/server/core/CoreModuleProvider.java        |  19 +-
 .../ui/template/UITemplateInitializer.java         |  90 ++-
 .../ui/template/UITemplateManagementService.java   |   9 +
 .../server/core/query/input/DashboardSetting.java  |   3 +-
 .../ui/template/UITemplateInitializerTest.java     |  29 -
 .../test-ui-templates/ui-initialized-templates.yml |  51 --
 .../oap/query/graphql/GraphQLQueryConfig.java      |   1 +
 .../oap/query/graphql/GraphQLQueryProvider.java    |   2 +-
 .../resolver/UIConfigurationManagement.java        |  31 +-
 .../src/main/resources/application.yml             |   2 +
 .../resources/ui-initialized-templates/apm.yml     | 655 ---------------------
 .../resources/ui-initialized-templates/browser.yml | 366 ------------
 .../browser/browser-app.json                       | 320 ++++++++++
 .../browser/browser-page.json                      | 385 ++++++++++++
 .../browser/browser-version.json                   | 117 ++++
 .../ui-initialized-templates/database.yml          | 142 -----
 .../resources/ui-initialized-templates/event.yml   |  56 --
 .../general/general-endpoint-relation.json         | 155 +++++
 .../general/general-endpoint.json                  | 394 +++++++++++++
 .../general/general-instance-relation.json         | 156 +++++
 .../general/general-instance.json                  | 618 +++++++++++++++++++
 .../general/general-root.json                      | 163 +++++
 .../general/general-service-relation.json          | 334 +++++++++++
 .../general/general-service.json                   | 537 +++++++++++++++++
 .../ui-initialized-templates/istio-dp.yml          | 174 ------
 .../resources/ui-initialized-templates/istio.yml   | 175 ------
 .../resources/ui-initialized-templates/k8s.yml     | 512 ----------------
 .../ui-initialized-templates/k8s/k8s-cluster.json  | 485 +++++++++++++++
 .../ui-initialized-templates/k8s/k8s-node.json     | 271 +++++++++
 .../ui-initialized-templates/k8s/k8s-root.json     |  58 ++
 .../ui-initialized-templates/mesh/mesh-all.json    | 132 +++++
 .../mesh/mesh-endpoint.json                        | 365 ++++++++++++
 .../mesh/mesh-instance.json                        | 195 ++++++
 .../mesh/mesh-service-relation.json                | 583 ++++++++++++++++++
 .../mesh/mesh-service.json                         | 427 ++++++++++++++
 .../self-observability.yml                         | 230 --------
 .../so11y_oap/so11y-all.json                       |  58 ++
 .../so11y_oap/so11y-instance.json                  | 471 +++++++++++++++
 .../so11y_oap/so11y-service.json                   |  54 ++
 .../ui-initialized-templates/spring-sleuth.yml     | 185 ------
 .../topology-endpoint-relation.yml                 |  81 ---
 .../ui-initialized-templates/topology-endpoint.yml | 131 -----
 .../ui-initialized-templates/topology-instance.yml | 309 ----------
 .../topology-service-instance-relation.yml         | 252 --------
 .../topology-service-relation.yml                  | 332 -----------
 .../ui-initialized-templates/topology-service.yml  | 167 ------
 .../main/resources/ui-initialized-templates/vm.yml | 204 -------
 .../oap/server/starter/UITemplateCheckerTest.java  |  64 +-
 skywalking-ui                                      |   2 +-
 51 files changed, 6691 insertions(+), 4372 deletions(-)

diff --git a/CHANGES.md b/CHANGES.md
index d66cadc..d2b2849 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -155,6 +155,8 @@ NOTICE, this sharding concept is NOT just for splitting data into different data
 * Remove unused jars (log4j-api.jar) in classpath.
 * Bump up netty version to fix CVE.
 * Add Database Connection pool metric.
+* Re-implement UI template initialization for Booster UI.
+* Add environment variable `SW_ENABLE_UPDATE_UI_TEMPLATE` to control user edit UI template.
 
 #### Documentation
 
diff --git a/docs/en/setup/backend/configuration-vocabulary.md b/docs/en/setup/backend/configuration-vocabulary.md
index 9217a2e..ee892a5 100644
--- a/docs/en/setup/backend/configuration-vocabulary.md
+++ b/docs/en/setup/backend/configuration-vocabulary.md
@@ -1,188 +1,188 @@
 # Configuration Vocabulary
 The Configuration Vocabulary lists all available configurations provided by `application.yml`.
 
-Module | Provider | Settings | Value(s) and Explanation | System Environment Variable¹ | Default |
------------ | ---------- | --------- | --------- |--------- |--------- |
-core|default|role|Option values: `Mixed/Receiver/Aggregator`. **Receiver** mode OAP opens the service to the agents, then analyzes and aggregates the results, and forwards the results for distributed aggregation. Aggregator mode OAP receives data from Mixer and Receiver role OAP nodes, and performs 2nd level aggregation. **Mixer** means both Receiver and Aggregator. |SW_CORE_ROLE|Mixed|
-| - | - | restHost| Binding IP of RESTful services. Services include GraphQL query and HTTP data report. |SW_CORE_REST_HOST|0.0.0.0|
-| - | - | restPort | Binding port of RESTful services. | SW_CORE_REST_PORT|12800|
-| - | - | restContextPath| Web context path of RESTful services. | SW_CORE_REST_CONTEXT_PATH|/|
-| - | - | restMinThreads| Minimum thread number of RESTful services. | SW_CORE_REST_JETTY_MIN_THREADS|1|
-| - | - | restMaxThreads| Maximum thread number of RESTful services. | SW_CORE_REST_JETTY_MAX_THREADS|200|
-| - | - | restIdleTimeOut| Connector idle timeout of RESTful services (in milliseconds). | SW_CORE_REST_JETTY_IDLE_TIMEOUT|30000|
-| - | - | restAcceptQueueSize| ServerSocketChannel Backlog of RESTful services. | SW_CORE_REST_JETTY_QUEUE_SIZE|0|
-| - | - | httpMaxRequestHeaderSize| Maximum request header size accepted. | SW_CORE_HTTP_MAX_REQUEST_HEADER_SIZE|8192|
-| - | - | gRPCHost| Binding IP of gRPC services, including gRPC data report and internal communication among OAP nodes. |SW_CORE_GRPC_HOST|0.0.0.0|
-| - | - | gRPCPort| Binding port of gRPC services. | SW_CORE_GRPC_PORT|11800|
-| - | - | gRPCSslEnabled| Activates SSL for gRPC services. | SW_CORE_GRPC_SSL_ENABLED|false|
-| - | - | gRPCSslKeyPath| File path of gRPC SSL key. | SW_CORE_GRPC_SSL_KEY_PATH| - |
-| - | - | gRPCSslCertChainPath| File path of gRPC SSL cert chain. | SW_CORE_GRPC_SSL_CERT_CHAIN_PATH| - |
-| - | - | gRPCSslTrustedCAPath| File path of gRPC trusted CA. | SW_CORE_GRPC_SSL_TRUSTED_CA_PATH| - |
-| - | - | downsampling| Activated level of down sampling aggregation. | | Hour,Day|
-| - | - | persistentPeriod| Execution period of the persistent timer (in seconds). | | 25 |
-| - | - | enableDataKeeperExecutor| Controller of TTL scheduler. Once disabled, TTL wouldn't work. |SW_CORE_ENABLE_DATA_KEEPER_EXECUTOR|true|
-| - | - | dataKeeperExecutePeriod| Execution period of TTL scheduler (in minutes). Execution doesn't mean deleting data. The storage provider (e.g. ElasticSearch storage) could override this.|SW_CORE_DATA_KEEPER_EXECUTE_PERIOD|5|
-| - | - | recordDataTTL| The lifecycle of record data (in days). Record data includes traces, top N sample records, and logs. Minimum value is 2. |SW_CORE_RECORD_DATA_TTL|3|
-| - | - | metricsDataTTL| The lifecycle of metrics data (in days), including metadata. We recommend setting metricsDataTTL >= recordDataTTL. Minimum value is 2. | SW_CORE_METRICS_DATA_TTL|7|
-| - | - | l1FlushPeriod| The period of L1 aggregation flush to L2 aggregation (in milliseconds). | SW_CORE_L1_AGGREGATION_FLUSH_PERIOD | 500 |
-| - | - | storageSessionTimeout| The threshold of session time (in milliseconds). Default value is 70000. | SW_CORE_STORAGE_SESSION_TIMEOUT | 70000 |
-| - | - | persistentPeriod| The period of doing data persistence. Unit is second.Default value is 25s | SW_CORE_PERSISTENT_PERIOD | 25 |
-| - | - | enableDatabaseSession| Cache metrics data for 1 minute to reduce database queries, and if the OAP cluster changes within that minute. |SW_CORE_ENABLE_DATABASE_SESSION|true|
-| - | - | topNReportPeriod|The execution period (in minutes) of top N sampler, which saves sampled data into the storage. |SW_CORE_TOPN_REPORT_PERIOD|10|
-| - | - | activeExtraModelColumns|Appends entity names (e.g. service names) into metrics storage entities. |SW_CORE_ACTIVE_EXTRA_MODEL_COLUMNS|false|
-| - | - | serviceNameMaxLength| Maximum length limit of service names. |SW_SERVICE_NAME_MAX_LENGTH|70|
-| - | - | instanceNameMaxLength| Maximum length limit of service instance names. The maximum length of service + instance names should be less than 200.|SW_INSTANCE_NAME_MAX_LENGTH|70|
-| - | - | endpointNameMaxLength| Maximum length limit of endpoint names. The maximum length of service + endpoint names should be less than 240.|SW_ENDPOINT_NAME_MAX_LENGTH|150|
-| - | - | searchableTracesTags | Defines a set of span tag keys which are searchable through GraphQL. Multiple values are separated by commas. | SW_SEARCHABLE_TAG_KEYS | http.method,status_code,db.type,db.instance,mq.queue,mq.topic,mq.broker|
-| - | - | searchableLogsTags | Defines a set of log tag keys which are searchable through GraphQL. Multiple values are separated by commas. | SW_SEARCHABLE_LOGS_TAG_KEYS | level |
-| - | - | searchableAlarmTags | Defines a set of alarm tag keys which are searchable through GraphQL. Multiple values are separated by commas. | SW_SEARCHABLE_ALARM_TAG_KEYS | level |
-| - | - | gRPCThreadPoolSize| Pool size of gRPC server. | SW_CORE_GRPC_THREAD_POOL_SIZE | CPU core * 4|
-| - | - | gRPCThreadPoolQueueSize| Queue size of gRPC server. | SW_CORE_GRPC_POOL_QUEUE_SIZE | 10000|
-| - | - | maxConcurrentCallsPerConnection | The maximum number of concurrent calls permitted for each incoming connection. Defaults to no limit. | SW_CORE_GRPC_MAX_CONCURRENT_CALL | - |
-| - | - | maxMessageSize | Sets the maximum message size allowed to be received on the server. Empty means 4 MiB. | SW_CORE_GRPC_MAX_MESSAGE_SIZE | 4M(based on Netty) |
-| - | - | remoteTimeout | Timeout for cluster internal communication (in seconds). | - |20|
-| - | - | maxSizeOfNetworkAddressAlias| The maximum size of network address detected in the system being monitored. | - | 1_000_000|
-| - | - | maxPageSizeOfQueryProfileSnapshot| The maximum size for snapshot analysis in an OAP query. | - | 500 |
-| - | - | maxSizeOfAnalyzeProfileSnapshot| The maximum number of snapshots analyzed by the OAP. | - | 12000 |
-| - | - | prepareThreads| The number of threads used to prepare metrics data to the storage. | SW_CORE_PREPARE_THREADS | 2 |
-| - | - | enableEndpointNameGroupingByOpenapi | Automatically groups endpoints by the given OpenAPI definitions. | SW_CORE_ENABLE_ENDPOINT_NAME_GROUPING_BY_OPAENAPI | true |
-| - | - | maxDurationOfAnalyzeEBPFProfiling| The maximum duration(in minute) of analyze the eBPF profiling data. | - | 10 |
-| - | - | maxDurationOfQueryEBPFProfilingData| The maximum duration(in second) of query the eBPF profiling data from database. | - | 30 |
-| - | - | maxThreadCountOfQueryEBPFProfilingData| The maximum thread count of query the eBPF profiling data from database. | - | System CPU core size |
-|cluster|standalone| - | Standalone is not suitable for running on a single node running. No configuration available. | - | - |
-| - | zookeeper|namespace| The namespace, represented by root path, isolates the configurations in Zookeeper.|SW_NAMESPACE| `/`, root path|
-| - | - | hostPort| Hosts and ports of Zookeeper Cluster. |SW_CLUSTER_ZK_HOST_PORT| localhost:2181|
-| - | - | baseSleepTimeMs| The period of Zookeeper client between two retries (in milliseconds). |SW_CLUSTER_ZK_SLEEP_TIME|1000|
-| - | - | maxRetries| The maximum retry time. |SW_CLUSTER_ZK_MAX_RETRIES|3|
-| - | - | enableACL| Opens ACL using `schema` and `expression`. |SW_ZK_ENABLE_ACL| false|
-| - | - | schema | Schema for the authorization. |SW_ZK_SCHEMA|digest|
-| - | - | expression | Expression for the authorization. |SW_ZK_EXPRESSION|skywalking:skywalking|
-| - | - | internalComHost| The hostname registered in Zookeeper for the internal communication of OAP cluster. | SW_CLUSTER_INTERNAL_COM_HOST | -|
-| - | - | internalComPort| The port registered in Zookeeper for the internal communication of OAP cluster. | SW_CLUSTER_INTERNAL_COM_PORT | -1|
-| - | kubernetes| namespace| Namespace deployed by SkyWalking in k8s. |SW_CLUSTER_K8S_NAMESPACE|default|
-| - | - | labelSelector| Labels used for filtering OAP deployment in k8s. |SW_CLUSTER_K8S_LABEL| app=collector,release=skywalking|
-| - | - | uidEnvName| Environment variable name for reading uid. | SW_CLUSTER_K8S_UID|SKYWALKING_COLLECTOR_UID|
-| - | consul| serviceName| Service name for SkyWalking cluster. |SW_SERVICE_NAME|SkyWalking_OAP_Cluster|
-| - | - | hostPort| Hosts and ports for Consul cluster.| SW_CLUSTER_CONSUL_HOST_PORT|localhost:8500|
-| - | - | aclToken| ACL Token of Consul. Empty string means `without ALC token`. | SW_CLUSTER_CONSUL_ACLTOKEN | - |
-| - | - | internalComHost| The hostname registered in Consul for internal communications of the OAP cluster. | SW_CLUSTER_INTERNAL_COM_HOST | -|
-| - | - | internalComPort| The port registered in Consul for internal communications of the OAP cluster. | SW_CLUSTER_INTERNAL_COM_PORT | -1|
-| - | etcd| serviceName| Service name for SkyWalking cluster. |SW_CLUSTER_ETCD_SERVICE_NAME|SkyWalking_OAP_Cluster|
-| - | - | endpoints| Hosts and ports for etcd cluster. | SW_CLUSTER_ETCD_ENDPOINTS|localhost:2379|
-| - | - | namespace | Namespace for SkyWalking cluster. |SW_CLUSTER_ETCD_NAMESPACE | /skywalking |
-| - | - | authentication | Indicates whether there is authentication. | SW_CLUSTER_ETCD_AUTHENTICATION | false |
-| - | - | user | Etcd auth username. | SW_CLUSTER_ETCD_USER | |
-| - | - | password | Etcd auth password. | SW_CLUSTER_ETCD_PASSWORD | |
-| - | - | internalComHost| The hostname registered in etcd for internal communications of the OAP cluster. | SW_CLUSTER_INTERNAL_COM_HOST | -|
-| - | - | internalComPort| The port registered in etcd for internal communications of the OAP cluster. | SW_CLUSTER_INTERNAL_COM_PORT | -1|
-| - | Nacos| serviceName| Service name for SkyWalking cluster. |SW_SERVICE_NAME|SkyWalking_OAP_Cluster|
-| - | - | hostPort| Hosts and ports for Nacos cluster.| SW_CLUSTER_NACOS_HOST_PORT|localhost:8848|
-| - | - | namespace| Namespace used by SkyWalking node coordination. | SW_CLUSTER_NACOS_NAMESPACE|public|
-| - | - | internalComHost| The hostname registered in Nacos for internal communications of the OAP cluster. | SW_CLUSTER_INTERNAL_COM_HOST | -|
-| - | - | internalComPort| The port registered in Nacos for internal communications of the OAP cluster. | SW_CLUSTER_INTERNAL_COM_PORT | -1|
-| - | - | username | Nacos Auth username. | SW_CLUSTER_NACOS_USERNAME | - |
-| - | - | password | Nacos Auth password. | SW_CLUSTER_NACOS_PASSWORD | - |
-| - | - | accessKey | Nacos Auth accessKey. | SW_CLUSTER_NACOS_ACCESSKEY | - |
-| - | - | secretKey | Nacos Auth secretKey.  | SW_CLUSTER_NACOS_SECRETKEY | - |
-| storage|elasticsearch| - | ElasticSearch (and OpenSearch) storage implementation. | - | - |
-| - | - | namespace | Prefix of indexes created and used by SkyWalking. | SW_NAMESPACE | - |
-| - | - | clusterNodes | ElasticSearch cluster nodes for client connection.| SW_STORAGE_ES_CLUSTER_NODES |localhost|
-| - | - | protocol | HTTP or HTTPs. | SW_STORAGE_ES_HTTP_PROTOCOL | HTTP|
-| - | - | connectTimeout | Connect timeout of ElasticSearch client (in milliseconds). | SW_STORAGE_ES_CONNECT_TIMEOUT | 3000|
-| - | - | socketTimeout | Socket timeout of ElasticSearch client (in milliseconds). | SW_STORAGE_ES_SOCKET_TIMEOUT | 30000|
-| - | - | responseTimeout | Response timeout of ElasticSearch client (in milliseconds), `0` disables the timeout. | SW_STORAGE_ES_RESPONSE_TIMEOUT | 1500 |
-| - | - | numHttpClientThread | The number of threads for the underlying HTTP client to perform socket I/O. If the value is <= 0, the number of available processors will be used. | SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD | 0 |
-| - | - | user| Username of ElasticSearch cluster. | SW_ES_USER | - |
-| - | - | password | Password of ElasticSearch cluster. | SW_ES_PASSWORD | - |
-| - | - | trustStorePath | Trust JKS file path. Only works when username and password are enabled. | SW_STORAGE_ES_SSL_JKS_PATH | - |
-| - | - | trustStorePass | Trust JKS file password. Only works when username and password are enabled. | SW_STORAGE_ES_SSL_JKS_PASS | - |
-| - | - | secretsManagementFile| Secrets management file in the properties format, including username and password, which are managed by a 3rd party tool. Capable of being updated them at runtime. |SW_ES_SECRETS_MANAGEMENT_FILE | - |
-| - | - | dayStep| Represents the number of days in the one-minute/hour/day index. | SW_STORAGE_DAY_STEP | 1|
-| - | - | indexShardsNumber | Shard number of new indexes. | SW_STORAGE_ES_INDEX_SHARDS_NUMBER | 1 |
-| - | - | indexReplicasNumber | Replicas number of new indexes. | SW_STORAGE_ES_INDEX_REPLICAS_NUMBER | 0 |
-| - | - | superDatasetDayStep | Represents the number of days in the super size dataset record index. Default value is the same as dayStep when the value is less than 0. |SW_SUPERDATASET_STORAGE_DAY_STEP|-1 |
-| - | - | superDatasetIndexShardsFactor | Super dataset is defined in the code (e.g. trace segments). This factor provides more shards for the super dataset: shards number = indexShardsNumber * superDatasetIndexShardsFactor. This factor also affects Zipkin and Jaeger traces. |SW_STORAGE_ES_SUPER_DATASET_INDEX_SHARDS_FACTOR|5 |
-| - | - | superDatasetIndexReplicasNumber | Represents the replicas number in the super size dataset record index. |SW_STORAGE_ES_SUPER_DATASET_INDEX_REPLICAS_NUMBER|0 |
-| - | - | indexTemplateOrder| The order of index template. | SW_STORAGE_ES_INDEX_TEMPLATE_ORDER| 0|
-| - | - | bulkActions| Async bulk size of the record data batch execution. | SW_STORAGE_ES_BULK_ACTIONS| 5000|
-| - | - | flushInterval| Period of flush (in seconds). Does not matter whether `bulkActions` is reached or not. INT(flushInterval * 2/3) is used for index refresh period. | SW_STORAGE_ES_FLUSH_INTERVAL | 15 (index refresh period = 10)|
-| - | - | concurrentRequests| The number of concurrent requests allowed to be executed. | SW_STORAGE_ES_CONCURRENT_REQUESTS| 2 |
-| - | - | resultWindowMaxSize | The maximum size of dataset when the OAP loads cache, such as network aliases. | SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE | 10000|
-| - | - | metadataQueryMaxSize | The maximum size of metadata per query. | SW_STORAGE_ES_QUERY_MAX_SIZE | 10000 |
-| - | - | scrollingBatchSize | The batch size of metadata per iteration when `metadataQueryMaxSize` or `resultWindowMaxSize` is too large to be retrieved in a single query. | SW_STORAGE_ES_SCROLLING_BATCH_SIZE | 5000 |
-| - | - | segmentQueryMaxSize | The maximum size of trace segments per query. | SW_STORAGE_ES_QUERY_SEGMENT_SIZE | 200|
-| - | - | profileTaskQueryMaxSize | The maximum size of profile task per query. | SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE | 200|
-| - | - | advanced | All settings of ElasticSearch index creation. The value should be in JSON format. | SW_STORAGE_ES_ADVANCED | - |
-| - |h2| - |  H2 storage is designed for demonstration and running in short term (i.e. 1-2 hours) only. | - | - |
-| - | - | driver | H2 JDBC driver. | SW_STORAGE_H2_DRIVER | org.h2.jdbcx.JdbcDataSource|
-| - | - | url | H2 connection URL. Defaults to H2 memory mode. | SW_STORAGE_H2_URL | jdbc:h2:mem:skywalking-oap-db |
-| - | - | user | Username of H2 database. | SW_STORAGE_H2_USER | sa |
-| - | - | password | Password of H2 database. | - | - |
-| - | - | metadataQueryMaxSize | The maximum size of metadata per query. | SW_STORAGE_H2_QUERY_MAX_SIZE | 5000 |
-| - | - | maxSizeOfArrayColumn | Some entities (e.g. trace segments) include the logic column with multiple values. In H2, we use multiple physical columns to host the values: e.g. change column_a with values [1,2,3,4,5] to `column_a_0 = 1, column_a_1 = 2, column_a_2 = 3 , column_a_3 = 4, column_a_4 = 5`. | SW_STORAGE_MAX_SIZE_OF_ARRAY_COLUMN | 20 |
-| - | - | numOfSearchableValuesPerTag | In a trace segment, this includes multiple spans with multiple tags. Different spans may have the same tag key, e.g. multiple HTTP exit spans all have their own `http.method` tags. This configuration sets the limit on the maximum number of values for the same tag key. | SW_STORAGE_NUM_OF_SEARCHABLE_VALUES_PER_TAG | 2 |
-| - | - | maxSizeOfBatchSql | The maximum size of batch size of SQL execution | SW_STORAGE_MAX_SIZE_OF_BATCH_SQL | 100 |
-| - | - | asyncBatchPersistentPoolSize | async flush data into database thread size | SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE | 1 |
-| - |mysql| - | MySQL Storage. The MySQL JDBC Driver is not in the dist. Please copy it into the oap-lib folder manually. | - | - |
-| - | - | properties | Hikari connection pool configurations. | - | Listed in the `application.yaml`. |
-| - | - | metadataQueryMaxSize | The maximum size of metadata per query. | SW_STORAGE_MYSQL_QUERY_MAX_SIZE | 5000 |
-| - | - | maxSizeOfArrayColumn | Some entities (e.g. trace segments) include the logic column with multiple values. In MySQL, we use multiple physical columns to host the values, e.g. change column_a with values [1,2,3,4,5] to `column_a_0 = 1, column_a_1 = 2, column_a_2 = 3 , column_a_3 = 4, column_a_4 = 5`. | SW_STORAGE_MAX_SIZE_OF_ARRAY_COLUMN | 20 |
-| - | - | numOfSearchableValuesPerTag | In a trace segment, this includes multiple spans with multiple tags. Different spans may have same tag key, e.g. multiple HTTP exit spans all have their own `http.method` tags. This configuration sets the limit on the maximum number of values for the same tag key. | SW_STORAGE_NUM_OF_SEARCHABLE_VALUES_PER_TAG | 2 |
-| - | - | maxSizeOfBatchSql | The maximum size of batch size of SQL execution | SW_STORAGE_MAX_SIZE_OF_BATCH_SQL | 2000 |
-| - | - | asyncBatchPersistentPoolSize | async flush data into database thread size | SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE | 4 |
-| - |postgresql| - | PostgreSQL storage. | - | - |
-| - | - | properties | Hikari connection pool configurations. | - | Listed in the `application.yaml`. |
-| - | - | metadataQueryMaxSize | The maximum size of metadata per query. | SW_STORAGE_MYSQL_QUERY_MAX_SIZE | 5000 |
-| - | - | maxSizeOfArrayColumn | Some entities (e.g. trace segments) include the logic column with multiple values. In PostgreSQL, we use multiple physical columns to host the values, e.g. change column_a with values [1,2,3,4,5] to `column_a_0 = 1, column_a_1 = 2, column_a_2 = 3 , column_a_3 = 4, column_a_4 = 5` | SW_STORAGE_MAX_SIZE_OF_ARRAY_COLUMN | 20 |
-| - | - | numOfSearchableValuesPerTag | In a trace segment, this includes multiple spans with multiple tags. Different spans may have same tag key, e.g. multiple HTTP exit spans all have their own `http.method` tags. This configuration sets the limit on the maximum number of values for the same tag key. | SW_STORAGE_NUM_OF_SEARCHABLE_VALUES_PER_TAG | 2 |
-| - | - | maxSizeOfBatchSql | The maximum size of batch size of SQL execution | SW_STORAGE_MAX_SIZE_OF_BATCH_SQL | 2000 |
-| - | - | asyncBatchPersistentPoolSize | async flush data into database thread size | SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE | 4 |
-| - |influxdb| - | InfluxDB storage. |- | - |
-| - | - | url| InfluxDB connection URL. | SW_STORAGE_INFLUXDB_URL | http://localhost:8086|
-| - | - | user | User name of InfluxDB. | SW_STORAGE_INFLUXDB_USER | root|
-| - | - | password | Password of InfluxDB. | SW_STORAGE_INFLUXDB_PASSWORD | -|
-| - | - | database | Database of InfluxDB. | SW_STORAGE_INFLUXDB_DATABASE | skywalking |
-| - | - | actions | The number of actions to collect. | SW_STORAGE_INFLUXDB_ACTIONS | 1000 |
-| - | - | duration | The maximum waiting time (in milliseconds). | SW_STORAGE_INFLUXDB_DURATION | 1000|
-| - | - | batchEnabled | If true, write points with batch API. | SW_STORAGE_INFLUXDB_BATCH_ENABLED | true|
-| - | - | fetchTaskLogMaxSize | The maximum number of fetch task log in a request. | SW_STORAGE_INFLUXDB_FETCH_TASK_LOG_MAX_SIZE | 5000|
-| - | - | connectionResponseFormat | The response format of connection to influxDB. It can only be MSGPACK or JSON. | SW_STORAGE_INFLUXDB_CONNECTION_RESPONSE_FORMAT | MSGPACK |
-| - | iotdb | - | IoTDB storage. | - | - |
-| - | - | host | The host of IoTDB server. | SW_STORAGE_IOTDB_HOST | 127.0.0.1 |
-| - | - | rpcPort | The port listened by IoTDB server. | SW_STORAGE_IOTDB_RPC_PORT | 6667 |
-| - | - | username | The username of IoTDB | SW_STORAGE_IOTDB_USERNAME | root |
-| - | - | password | The password of IoTDB | SW_STORAGE_IOTDB_PASSWORD | root |
-| - | - | storageGroup | The path of Storage Group and it must start with `root.` | SW_STORAGE_IOTDB_STORAGE_GROUP | root.skywalking |
-| - | - | sessionPoolSize | The connection pool size for IoTDB. If the value is 0, the size of SessionPool will be 2 * CPU_Cores | SW_STORAGE_IOTDB_SESSIONPOOL_SIZE | 8 |
-| - | - | fetchTaskLogMaxSize | the max number of fetch task log in a request | SW_STORAGE_IOTDB_FETCH_TASK_LOG_MAX_SIZE | 1000 |
+Module | Provider | Settings | Value(s) and Explanation | System Environment Variable¹ | Default                                                                 |
+----------- | ---------- | --------- | --------- |--------- |-------------------------------------------------------------------------|
+core|default|role|Option values: `Mixed/Receiver/Aggregator`. **Receiver** mode OAP opens the service to the agents, then analyzes and aggregates the results, and forwards the results for distributed aggregation. Aggregator mode OAP receives data from Mixer and Receiver role OAP nodes, and performs 2nd level aggregation. **Mixer** means both Receiver and Aggregator. |SW_CORE_ROLE| Mixed                                                                   |
+| - | - | restHost| Binding IP of RESTful services. Services include GraphQL query and HTTP data report. |SW_CORE_REST_HOST| 0.0.0.0                                                                 |
+| - | - | restPort | Binding port of RESTful services. | SW_CORE_REST_PORT| 12800                                                                   |
+| - | - | restContextPath| Web context path of RESTful services. | SW_CORE_REST_CONTEXT_PATH| /                                                                       |
+| - | - | restMinThreads| Minimum thread number of RESTful services. | SW_CORE_REST_JETTY_MIN_THREADS| 1                                                                       |
+| - | - | restMaxThreads| Maximum thread number of RESTful services. | SW_CORE_REST_JETTY_MAX_THREADS| 200                                                                     |
+| - | - | restIdleTimeOut| Connector idle timeout of RESTful services (in milliseconds). | SW_CORE_REST_JETTY_IDLE_TIMEOUT| 30000                                                                   |
+| - | - | restAcceptQueueSize| ServerSocketChannel Backlog of RESTful services. | SW_CORE_REST_JETTY_QUEUE_SIZE| 0                                                                       |
+| - | - | httpMaxRequestHeaderSize| Maximum request header size accepted. | SW_CORE_HTTP_MAX_REQUEST_HEADER_SIZE| 8192                                                                    |
+| - | - | gRPCHost| Binding IP of gRPC services, including gRPC data report and internal communication among OAP nodes. |SW_CORE_GRPC_HOST| 0.0.0.0                                                                 |
+| - | - | gRPCPort| Binding port of gRPC services. | SW_CORE_GRPC_PORT| 11800                                                                   |
+| - | - | gRPCSslEnabled| Activates SSL for gRPC services. | SW_CORE_GRPC_SSL_ENABLED| false                                                                   |
+| - | - | gRPCSslKeyPath| File path of gRPC SSL key. | SW_CORE_GRPC_SSL_KEY_PATH| -                                                                       |
+| - | - | gRPCSslCertChainPath| File path of gRPC SSL cert chain. | SW_CORE_GRPC_SSL_CERT_CHAIN_PATH| -                                                                       |
+| - | - | gRPCSslTrustedCAPath| File path of gRPC trusted CA. | SW_CORE_GRPC_SSL_TRUSTED_CA_PATH| -                                                                       |
+| - | - | downsampling| Activated level of down sampling aggregation. | | Hour,Day                                                                |
+| - | - | persistentPeriod| Execution period of the persistent timer (in seconds). | | 25                                                                      |
+| - | - | enableDataKeeperExecutor| Controller of TTL scheduler. Once disabled, TTL wouldn't work. |SW_CORE_ENABLE_DATA_KEEPER_EXECUTOR| true                                                                    |
+| - | - | dataKeeperExecutePeriod| Execution period of TTL scheduler (in minutes). Execution doesn't mean deleting data. The storage provider (e.g. ElasticSearch storage) could override this.|SW_CORE_DATA_KEEPER_EXECUTE_PERIOD| 5                                                                       |
+| - | - | recordDataTTL| The lifecycle of record data (in days). Record data includes traces, top N sample records, and logs. Minimum value is 2. |SW_CORE_RECORD_DATA_TTL| 3                                                                       |
+| - | - | metricsDataTTL| The lifecycle of metrics data (in days), including metadata. We recommend setting metricsDataTTL >= recordDataTTL. Minimum value is 2. | SW_CORE_METRICS_DATA_TTL| 7                                                                       |
+| - | - | l1FlushPeriod| The period of L1 aggregation flush to L2 aggregation (in milliseconds). | SW_CORE_L1_AGGREGATION_FLUSH_PERIOD | 500                                                                     |
+| - | - | storageSessionTimeout| The threshold of session time (in milliseconds). Default value is 70000. | SW_CORE_STORAGE_SESSION_TIMEOUT | 70000                                                                   |
+| - | - | persistentPeriod| The period of doing data persistence. Unit is second.Default value is 25s | SW_CORE_PERSISTENT_PERIOD | 25                                                                      |
+| - | - | enableDatabaseSession| Cache metrics data for 1 minute to reduce database queries, and if the OAP cluster changes within that minute. |SW_CORE_ENABLE_DATABASE_SESSION| true                                                                    |
+| - | - | topNReportPeriod|The execution period (in minutes) of top N sampler, which saves sampled data into the storage. |SW_CORE_TOPN_REPORT_PERIOD| 10                                                                      |
+| - | - | activeExtraModelColumns|Appends entity names (e.g. service names) into metrics storage entities. |SW_CORE_ACTIVE_EXTRA_MODEL_COLUMNS| false                                                                   |
+| - | - | serviceNameMaxLength| Maximum length limit of service names. |SW_SERVICE_NAME_MAX_LENGTH| 70                                                                      |
+| - | - | instanceNameMaxLength| Maximum length limit of service instance names. The maximum length of service + instance names should be less than 200.|SW_INSTANCE_NAME_MAX_LENGTH| 70                                                                      |
+| - | - | endpointNameMaxLength| Maximum length limit of endpoint names. The maximum length of service + endpoint names should be less than 240.|SW_ENDPOINT_NAME_MAX_LENGTH| 150                                                                     |
+| - | - | searchableTracesTags | Defines a set of span tag keys which are searchable through GraphQL. Multiple values are separated by commas. | SW_SEARCHABLE_TAG_KEYS | http.method,status_code,db.type,db.instance,mq.queue,mq.topic,mq.broker |
+| - | - | searchableLogsTags | Defines a set of log tag keys which are searchable through GraphQL. Multiple values are separated by commas. | SW_SEARCHABLE_LOGS_TAG_KEYS | level                                                                   |
+| - | - | searchableAlarmTags | Defines a set of alarm tag keys which are searchable through GraphQL. Multiple values are separated by commas. | SW_SEARCHABLE_ALARM_TAG_KEYS | level                                                                   |
+| - | - | gRPCThreadPoolSize| Pool size of gRPC server. | SW_CORE_GRPC_THREAD_POOL_SIZE | CPU core * 4                                                            |
+| - | - | gRPCThreadPoolQueueSize| Queue size of gRPC server. | SW_CORE_GRPC_POOL_QUEUE_SIZE | 10000                                                                   |
+| - | - | maxConcurrentCallsPerConnection | The maximum number of concurrent calls permitted for each incoming connection. Defaults to no limit. | SW_CORE_GRPC_MAX_CONCURRENT_CALL | -                                                                       |
+| - | - | maxMessageSize | Sets the maximum message size allowed to be received on the server. Empty means 4 MiB. | SW_CORE_GRPC_MAX_MESSAGE_SIZE | 4M(based on Netty)                                                      |
+| - | - | remoteTimeout | Timeout for cluster internal communication (in seconds). | - | 20                                                                      |
+| - | - | maxSizeOfNetworkAddressAlias| The maximum size of network address detected in the system being monitored. | - | 1_000_000                                                               |
+| - | - | maxPageSizeOfQueryProfileSnapshot| The maximum size for snapshot analysis in an OAP query. | - | 500                                                                     |
+| - | - | maxSizeOfAnalyzeProfileSnapshot| The maximum number of snapshots analyzed by the OAP. | - | 12000                                                                   |
+| - | - | prepareThreads| The number of threads used to prepare metrics data to the storage. | SW_CORE_PREPARE_THREADS | 2                                                                       |
+| - | - | enableEndpointNameGroupingByOpenapi | Automatically groups endpoints by the given OpenAPI definitions. | SW_CORE_ENABLE_ENDPOINT_NAME_GROUPING_BY_OPAENAPI | true                                                                    |
+| - | - | maxDurationOfAnalyzeEBPFProfiling| The maximum duration(in minute) of analyze the eBPF profiling data. | - | 10                                                                      |
+| - | - | maxDurationOfQueryEBPFProfilingData| The maximum duration(in second) of query the eBPF profiling data from database. | - | 30                                                                      |
+| - | - | maxThreadCountOfQueryEBPFProfilingData| The maximum thread count of query the eBPF profiling data from database. | - | System CPU core size                                                    |
+|cluster|standalone| - | Standalone is not suitable for running on a single node running. No configuration available. | - | -                                                                       |
+| - | zookeeper|namespace| The namespace, represented by root path, isolates the configurations in Zookeeper.|SW_NAMESPACE| `/`, root path                                                          |
+| - | - | hostPort| Hosts and ports of Zookeeper Cluster. |SW_CLUSTER_ZK_HOST_PORT| localhost:2181                                                          |
+| - | - | baseSleepTimeMs| The period of Zookeeper client between two retries (in milliseconds). |SW_CLUSTER_ZK_SLEEP_TIME| 1000                                                                    |
+| - | - | maxRetries| The maximum retry time. |SW_CLUSTER_ZK_MAX_RETRIES| 3                                                                       |
+| - | - | enableACL| Opens ACL using `schema` and `expression`. |SW_ZK_ENABLE_ACL| false                                                                   |
+| - | - | schema | Schema for the authorization. |SW_ZK_SCHEMA| digest                                                                  |
+| - | - | expression | Expression for the authorization. |SW_ZK_EXPRESSION| skywalking:skywalking                                                   |
+| - | - | internalComHost| The hostname registered in Zookeeper for the internal communication of OAP cluster. | SW_CLUSTER_INTERNAL_COM_HOST | -                                                                       |
+| - | - | internalComPort| The port registered in Zookeeper for the internal communication of OAP cluster. | SW_CLUSTER_INTERNAL_COM_PORT | -1                                                                      |
+| - | kubernetes| namespace| Namespace deployed by SkyWalking in k8s. |SW_CLUSTER_K8S_NAMESPACE| default                                                                 |
+| - | - | labelSelector| Labels used for filtering OAP deployment in k8s. |SW_CLUSTER_K8S_LABEL| app=collector,release=skywalking                                        |
+| - | - | uidEnvName| Environment variable name for reading uid. | SW_CLUSTER_K8S_UID| SKYWALKING_COLLECTOR_UID                                                |
+| - | consul| serviceName| Service name for SkyWalking cluster. |SW_SERVICE_NAME| SkyWalking_OAP_Cluster                                                  |
+| - | - | hostPort| Hosts and ports for Consul cluster.| SW_CLUSTER_CONSUL_HOST_PORT| localhost:8500                                                          |
+| - | - | aclToken| ACL Token of Consul. Empty string means `without ALC token`. | SW_CLUSTER_CONSUL_ACLTOKEN | -                                                                       |
+| - | - | internalComHost| The hostname registered in Consul for internal communications of the OAP cluster. | SW_CLUSTER_INTERNAL_COM_HOST | -                                                                       |
+| - | - | internalComPort| The port registered in Consul for internal communications of the OAP cluster. | SW_CLUSTER_INTERNAL_COM_PORT | -1                                                                      |
+| - | etcd| serviceName| Service name for SkyWalking cluster. |SW_CLUSTER_ETCD_SERVICE_NAME| SkyWalking_OAP_Cluster                                                  |
+| - | - | endpoints| Hosts and ports for etcd cluster. | SW_CLUSTER_ETCD_ENDPOINTS| localhost:2379                                                          |
+| - | - | namespace | Namespace for SkyWalking cluster. |SW_CLUSTER_ETCD_NAMESPACE | /skywalking                                                             |
+| - | - | authentication | Indicates whether there is authentication. | SW_CLUSTER_ETCD_AUTHENTICATION | false                                                                   |
+| - | - | user | Etcd auth username. | SW_CLUSTER_ETCD_USER |                                                                         |
+| - | - | password | Etcd auth password. | SW_CLUSTER_ETCD_PASSWORD |                                                                         |
+| - | - | internalComHost| The hostname registered in etcd for internal communications of the OAP cluster. | SW_CLUSTER_INTERNAL_COM_HOST | -                                                                       |
+| - | - | internalComPort| The port registered in etcd for internal communications of the OAP cluster. | SW_CLUSTER_INTERNAL_COM_PORT | -1                                                                      |
+| - | Nacos| serviceName| Service name for SkyWalking cluster. |SW_SERVICE_NAME| SkyWalking_OAP_Cluster                                                  |
+| - | - | hostPort| Hosts and ports for Nacos cluster.| SW_CLUSTER_NACOS_HOST_PORT| localhost:8848                                                          |
+| - | - | namespace| Namespace used by SkyWalking node coordination. | SW_CLUSTER_NACOS_NAMESPACE| public                                                                  |
+| - | - | internalComHost| The hostname registered in Nacos for internal communications of the OAP cluster. | SW_CLUSTER_INTERNAL_COM_HOST | -                                                                       |
+| - | - | internalComPort| The port registered in Nacos for internal communications of the OAP cluster. | SW_CLUSTER_INTERNAL_COM_PORT | -1                                                                      |
+| - | - | username | Nacos Auth username. | SW_CLUSTER_NACOS_USERNAME | -                                                                       |
+| - | - | password | Nacos Auth password. | SW_CLUSTER_NACOS_PASSWORD | -                                                                       |
+| - | - | accessKey | Nacos Auth accessKey. | SW_CLUSTER_NACOS_ACCESSKEY | -                                                                       |
+| - | - | secretKey | Nacos Auth secretKey.  | SW_CLUSTER_NACOS_SECRETKEY | -                                                                       |
+| storage|elasticsearch| - | ElasticSearch (and OpenSearch) storage implementation. | - | -                                                                       |
+| - | - | namespace | Prefix of indexes created and used by SkyWalking. | SW_NAMESPACE | -                                                                       |
+| - | - | clusterNodes | ElasticSearch cluster nodes for client connection.| SW_STORAGE_ES_CLUSTER_NODES | localhost                                                               |
+| - | - | protocol | HTTP or HTTPs. | SW_STORAGE_ES_HTTP_PROTOCOL | HTTP                                                                    |
+| - | - | connectTimeout | Connect timeout of ElasticSearch client (in milliseconds). | SW_STORAGE_ES_CONNECT_TIMEOUT | 3000                                                                    |
+| - | - | socketTimeout | Socket timeout of ElasticSearch client (in milliseconds). | SW_STORAGE_ES_SOCKET_TIMEOUT | 30000                                                                   |
+| - | - | responseTimeout | Response timeout of ElasticSearch client (in milliseconds), `0` disables the timeout. | SW_STORAGE_ES_RESPONSE_TIMEOUT | 1500                                                                    |
+| - | - | numHttpClientThread | The number of threads for the underlying HTTP client to perform socket I/O. If the value is <= 0, the number of available processors will be used. | SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD | 0                                                                       |
+| - | - | user| Username of ElasticSearch cluster. | SW_ES_USER | -                                                                       |
+| - | - | password | Password of ElasticSearch cluster. | SW_ES_PASSWORD | -                                                                       |
+| - | - | trustStorePath | Trust JKS file path. Only works when username and password are enabled. | SW_STORAGE_ES_SSL_JKS_PATH | -                                                                       |
+| - | - | trustStorePass | Trust JKS file password. Only works when username and password are enabled. | SW_STORAGE_ES_SSL_JKS_PASS | -                                                                       |
+| - | - | secretsManagementFile| Secrets management file in the properties format, including username and password, which are managed by a 3rd party tool. Capable of being updated them at runtime. |SW_ES_SECRETS_MANAGEMENT_FILE | -                                                                       |
+| - | - | dayStep| Represents the number of days in the one-minute/hour/day index. | SW_STORAGE_DAY_STEP | 1                                                                       |
+| - | - | indexShardsNumber | Shard number of new indexes. | SW_STORAGE_ES_INDEX_SHARDS_NUMBER | 1                                                                       |
+| - | - | indexReplicasNumber | Replicas number of new indexes. | SW_STORAGE_ES_INDEX_REPLICAS_NUMBER | 0                                                                       |
+| - | - | superDatasetDayStep | Represents the number of days in the super size dataset record index. Default value is the same as dayStep when the value is less than 0. |SW_SUPERDATASET_STORAGE_DAY_STEP| -1                                                                      |
+| - | - | superDatasetIndexShardsFactor | Super dataset is defined in the code (e.g. trace segments). This factor provides more shards for the super dataset: shards number = indexShardsNumber * superDatasetIndexShardsFactor. This factor also affects Zipkin and Jaeger traces. |SW_STORAGE_ES_SUPER_DATASET_INDEX_SHARDS_FACTOR| 5                                                                       |
+| - | - | superDatasetIndexReplicasNumber | Represents the replicas number in the super size dataset record index. |SW_STORAGE_ES_SUPER_DATASET_INDEX_REPLICAS_NUMBER| 0                                                                       |
+| - | - | indexTemplateOrder| The order of index template. | SW_STORAGE_ES_INDEX_TEMPLATE_ORDER| 0                                                                       |
+| - | - | bulkActions| Async bulk size of the record data batch execution. | SW_STORAGE_ES_BULK_ACTIONS| 5000                                                                    |
+| - | - | flushInterval| Period of flush (in seconds). Does not matter whether `bulkActions` is reached or not. INT(flushInterval * 2/3) is used for index refresh period. | SW_STORAGE_ES_FLUSH_INTERVAL | 15 (index refresh period = 10)                                          |
+| - | - | concurrentRequests| The number of concurrent requests allowed to be executed. | SW_STORAGE_ES_CONCURRENT_REQUESTS| 2                                                                       |
+| - | - | resultWindowMaxSize | The maximum size of dataset when the OAP loads cache, such as network aliases. | SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE | 10000                                                                   |
+| - | - | metadataQueryMaxSize | The maximum size of metadata per query. | SW_STORAGE_ES_QUERY_MAX_SIZE | 10000                                                                   |
+| - | - | scrollingBatchSize | The batch size of metadata per iteration when `metadataQueryMaxSize` or `resultWindowMaxSize` is too large to be retrieved in a single query. | SW_STORAGE_ES_SCROLLING_BATCH_SIZE | 5000                                                                    |
+| - | - | segmentQueryMaxSize | The maximum size of trace segments per query. | SW_STORAGE_ES_QUERY_SEGMENT_SIZE | 200                                                                     |
+| - | - | profileTaskQueryMaxSize | The maximum size of profile task per query. | SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE | 200                                                                     |
+| - | - | advanced | All settings of ElasticSearch index creation. The value should be in JSON format. | SW_STORAGE_ES_ADVANCED | -                                                                       |
+| - |h2| - |  H2 storage is designed for demonstration and running in short term (i.e. 1-2 hours) only. | - | -                                                                       |
+| - | - | driver | H2 JDBC driver. | SW_STORAGE_H2_DRIVER | org.h2.jdbcx.JdbcDataSource                                             |
+| - | - | url | H2 connection URL. Defaults to H2 memory mode. | SW_STORAGE_H2_URL | jdbc:h2:mem:skywalking-oap-db                                           |
+| - | - | user | Username of H2 database. | SW_STORAGE_H2_USER | sa                                                                      |
+| - | - | password | Password of H2 database. | - | -                                                                       |
+| - | - | metadataQueryMaxSize | The maximum size of metadata per query. | SW_STORAGE_H2_QUERY_MAX_SIZE | 5000                                                                    |
+| - | - | maxSizeOfArrayColumn | Some entities (e.g. trace segments) include the logic column with multiple values. In H2, we use multiple physical columns to host the values: e.g. change column_a with values [1,2,3,4,5] to `column_a_0 = 1, column_a_1 = 2, column_a_2 = 3 , column_a_3 = 4, column_a_4 = 5`. | SW_STORAGE_MAX_SIZE_OF_ARRAY_COLUMN | 20                                                                      |
+| - | - | numOfSearchableValuesPerTag | In a trace segment, this includes multiple spans with multiple tags. Different spans may have the same tag key, e.g. multiple HTTP exit spans all have their own `http.method` tags. This configuration sets the limit on the maximum number of values for the same tag key. | SW_STORAGE_NUM_OF_SEARCHABLE_VALUES_PER_TAG | 2                                                                       |
+| - | - | maxSizeOfBatchSql | The maximum size of batch size of SQL execution | SW_STORAGE_MAX_SIZE_OF_BATCH_SQL | 100                                                                     |
+| - | - | asyncBatchPersistentPoolSize | async flush data into database thread size | SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE | 1                                                                       |
+| - |mysql| - | MySQL Storage. The MySQL JDBC Driver is not in the dist. Please copy it into the oap-lib folder manually. | - | -                                                                       |
+| - | - | properties | Hikari connection pool configurations. | - | Listed in the `application.yaml`.                                       |
+| - | - | metadataQueryMaxSize | The maximum size of metadata per query. | SW_STORAGE_MYSQL_QUERY_MAX_SIZE | 5000                                                                    |
+| - | - | maxSizeOfArrayColumn | Some entities (e.g. trace segments) include the logic column with multiple values. In MySQL, we use multiple physical columns to host the values, e.g. change column_a with values [1,2,3,4,5] to `column_a_0 = 1, column_a_1 = 2, column_a_2 = 3 , column_a_3 = 4, column_a_4 = 5`. | SW_STORAGE_MAX_SIZE_OF_ARRAY_COLUMN | 20                                                                      |
+| - | - | numOfSearchableValuesPerTag | In a trace segment, this includes multiple spans with multiple tags. Different spans may have same tag key, e.g. multiple HTTP exit spans all have their own `http.method` tags. This configuration sets the limit on the maximum number of values for the same tag key. | SW_STORAGE_NUM_OF_SEARCHABLE_VALUES_PER_TAG | 2                                                                       |
+| - | - | maxSizeOfBatchSql | The maximum size of batch size of SQL execution | SW_STORAGE_MAX_SIZE_OF_BATCH_SQL | 2000                                                                    |
+| - | - | asyncBatchPersistentPoolSize | async flush data into database thread size | SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE | 4                                                                       |
+| - |postgresql| - | PostgreSQL storage. | - | -                                                                       |
+| - | - | properties | Hikari connection pool configurations. | - | Listed in the `application.yaml`.                                       |
+| - | - | metadataQueryMaxSize | The maximum size of metadata per query. | SW_STORAGE_MYSQL_QUERY_MAX_SIZE | 5000                                                                    |
+| - | - | maxSizeOfArrayColumn | Some entities (e.g. trace segments) include the logic column with multiple values. In PostgreSQL, we use multiple physical columns to host the values, e.g. change column_a with values [1,2,3,4,5] to `column_a_0 = 1, column_a_1 = 2, column_a_2 = 3 , column_a_3 = 4, column_a_4 = 5` | SW_STORAGE_MAX_SIZE_OF_ARRAY_COLUMN | 20                                                                      |
+| - | - | numOfSearchableValuesPerTag | In a trace segment, this includes multiple spans with multiple tags. Different spans may have same tag key, e.g. multiple HTTP exit spans all have their own `http.method` tags. This configuration sets the limit on the maximum number of values for the same tag key. | SW_STORAGE_NUM_OF_SEARCHABLE_VALUES_PER_TAG | 2                                                                       |
+| - | - | maxSizeOfBatchSql | The maximum size of batch size of SQL execution | SW_STORAGE_MAX_SIZE_OF_BATCH_SQL | 2000                                                                    |
+| - | - | asyncBatchPersistentPoolSize | async flush data into database thread size | SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE | 4                                                                       |
+| - |influxdb| - | InfluxDB storage. |- | -                                                                       |
+| - | - | url| InfluxDB connection URL. | SW_STORAGE_INFLUXDB_URL | http://localhost:8086                                                   |
+| - | - | user | User name of InfluxDB. | SW_STORAGE_INFLUXDB_USER | root                                                                    |
+| - | - | password | Password of InfluxDB. | SW_STORAGE_INFLUXDB_PASSWORD | -                                                                       |
+| - | - | database | Database of InfluxDB. | SW_STORAGE_INFLUXDB_DATABASE | skywalking                                                              |
+| - | - | actions | The number of actions to collect. | SW_STORAGE_INFLUXDB_ACTIONS | 1000                                                                    |
+| - | - | duration | The maximum waiting time (in milliseconds). | SW_STORAGE_INFLUXDB_DURATION | 1000                                                                    |
+| - | - | batchEnabled | If true, write points with batch API. | SW_STORAGE_INFLUXDB_BATCH_ENABLED | true                                                                    |
+| - | - | fetchTaskLogMaxSize | The maximum number of fetch task log in a request. | SW_STORAGE_INFLUXDB_FETCH_TASK_LOG_MAX_SIZE | 5000                                                                    |
+| - | - | connectionResponseFormat | The response format of connection to influxDB. It can only be MSGPACK or JSON. | SW_STORAGE_INFLUXDB_CONNECTION_RESPONSE_FORMAT | MSGPACK                                                                 |
+| - | iotdb | - | IoTDB storage. | - | -                                                                       |
+| - | - | host | The host of IoTDB server. | SW_STORAGE_IOTDB_HOST | 127.0.0.1                                                               |
+| - | - | rpcPort | The port listened by IoTDB server. | SW_STORAGE_IOTDB_RPC_PORT | 6667                                                                    |
+| - | - | username | The username of IoTDB | SW_STORAGE_IOTDB_USERNAME | root                                                                    |
+| - | - | password | The password of IoTDB | SW_STORAGE_IOTDB_PASSWORD | root                                                                    |
+| - | - | storageGroup | The path of Storage Group and it must start with `root.` | SW_STORAGE_IOTDB_STORAGE_GROUP | root.skywalking                                                         |
+| - | - | sessionPoolSize | The connection pool size for IoTDB. If the value is 0, the size of SessionPool will be 2 * CPU_Cores | SW_STORAGE_IOTDB_SESSIONPOOL_SIZE | 8                                                                       |
+| - | - | fetchTaskLogMaxSize | the max number of fetch task log in a request | SW_STORAGE_IOTDB_FETCH_TASK_LOG_MAX_SIZE | 1000                                                                    |
 | agent-analyzer | default | Agent Analyzer. | SW_AGENT_ANALYZER | default |
-| - | - | traceSamplingPolicySettingsFile | The sampling policy including `sampling rate` and `the threshold of trace segment latency` can be configured by the `traceSamplingPolicySettingsFile` file. | SW_TRACE_SAMPLING_POLICY_SETTINGS_FILE | `trace-sampling-policy-settings.yml` |
-| - | - |slowDBAccessThreshold| The slow database access threshold (in milliseconds). |SW_SLOW_DB_THRESHOLD|default:200,mongodb:100|
-| - | - |forceSampleErrorSegment| When sampling mechanism is activated, this config samples the error status segment and ignores the sampling rate. |SW_FORCE_SAMPLE_ERROR_SEGMENT|true|
-| - | - |segmentStatusAnalysisStrategy| Determines the final segment status from span status. Available values are `FROM_SPAN_STATUS` , `FROM_ENTRY_SPAN`, and `FROM_FIRST_SPAN`. `FROM_SPAN_STATUS` indicates that the segment status would be error if any span has an error status. `FROM_ENTRY_SPAN` means that the segment status would only be determined by the status of entry spans. `FROM_FIRST_SPAN` means that the segment status would only be determined by the status of the first span. |SW_ [...]
-| - | - |noUpstreamRealAddressAgents| Exit spans with the component in the list would not generate client-side instance relation metrics, since some tracing plugins (e.g. Nginx-LUA and Envoy) can't collect the real peer IP address. |SW_NO_UPSTREAM_REAL_ADDRESS|6000,9000|
+| - | - | traceSamplingPolicySettingsFile | The sampling policy including `sampling rate` and `the threshold of trace segment latency` can be configured by the `traceSamplingPolicySettingsFile` file. | SW_TRACE_SAMPLING_POLICY_SETTINGS_FILE | `trace-sampling-policy-settings.yml`                                    |
+| - | - |slowDBAccessThreshold| The slow database access threshold (in milliseconds). |SW_SLOW_DB_THRESHOLD| default:200,mongodb:100                                                 |
+| - | - |forceSampleErrorSegment| When sampling mechanism is activated, this config samples the error status segment and ignores the sampling rate. |SW_FORCE_SAMPLE_ERROR_SEGMENT| true                                                                    |
+| - | - |segmentStatusAnalysisStrategy| Determines the final segment status from span status. Available values are `FROM_SPAN_STATUS` , `FROM_ENTRY_SPAN`, and `FROM_FIRST_SPAN`. `FROM_SPAN_STATUS` indicates that the segment status would be error if any span has an error status. `FROM_ENTRY_SPAN` means that the segment status would only be determined by the status of entry spans. `FROM_FIRST_SPAN` means that the segment status would only be determined by the status of the first span. |SW_ [...]
+| - | - |noUpstreamRealAddressAgents| Exit spans with the component in the list would not generate client-side instance relation metrics, since some tracing plugins (e.g. Nginx-LUA and Envoy) can't collect the real peer IP address. |SW_NO_UPSTREAM_REAL_ADDRESS| 6000,9000                                                               |
 | - | - |meterAnalyzerActiveFiles| Indicates which files could be instrumented and analyzed. Multiple files are split by ",". |SW_METER_ANALYZER_ACTIVE_FILES||
 | receiver-sharing-server|default| Sharing server provides new gRPC and restful servers for data collection. Ana designates that servers in the core module are to be used for internal communication only. | - | - |
-| - | - | restHost| Binding IP of RESTful services. Services include GraphQL query and HTTP data report. | SW_RECEIVER_SHARING_REST_HOST | - |
-| - | - | restPort | Binding port of RESTful services. | SW_RECEIVER_SHARING_REST_PORT | - |
-| - | - | restContextPath| Web context path of RESTful services. | SW_RECEIVER_SHARING_REST_CONTEXT_PATH | - |
-| - | - | restMinThreads| Minimum thread number of RESTful services. | SW_RECEIVER_SHARING_JETTY_MIN_THREADS|1|
-| - | - | restMaxThreads| Maximum thread number of RESTful services. | SW_RECEIVER_SHARING_JETTY_MAX_THREADS|200|
-| - | - | restIdleTimeOut| Connector idle timeout of RESTful services (in milliseconds). | SW_RECEIVER_SHARING_JETTY_IDLE_TIMEOUT|30000|
-| - | - | restAcceptQueueSize| ServerSocketChannel backlog of RESTful services. | SW_RECEIVER_SHARING_JETTY_QUEUE_SIZE|0|
-| - | - | httpMaxRequestHeaderSize| Maximum request header size accepted. | SW_RECEIVER_SHARING_HTTP_MAX_REQUEST_HEADER_SIZE|8192|
-| - | - | gRPCHost| Binding IP of gRPC services. Services include gRPC data report and internal communication among OAP nodes. | SW_RECEIVER_GRPC_HOST | 0.0.0.0. Not Activated |
-| - | - | gRPCPort| Binding port of gRPC services. | SW_RECEIVER_GRPC_PORT | Not Activated |
-| - | - | gRPCThreadPoolSize| Pool size of gRPC server. | SW_RECEIVER_GRPC_THREAD_POOL_SIZE | CPU core * 4|
-| - | - | gRPCThreadPoolQueueSize| Queue size of gRPC server. | SW_RECEIVER_GRPC_POOL_QUEUE_SIZE | 10000|
-| - | - | gRPCSslEnabled| Activates SSL for gRPC services. | SW_RECEIVER_GRPC_SSL_ENABLED | false |
-| - | - | gRPCSslKeyPath| File path of gRPC SSL key. | SW_RECEIVER_GRPC_SSL_KEY_PATH | - |
-| - | - | gRPCSslCertChainPath| File path of gRPC SSL cert chain. | SW_RECEIVER_GRPC_SSL_CERT_CHAIN_PATH | - |
-| - | - | maxConcurrentCallsPerConnection | The maximum number of concurrent calls permitted for each incoming connection. Defaults to no limit. | SW_RECEIVER_GRPC_MAX_CONCURRENT_CALL | - |
-| - | - | authentication | The token text for authentication. Works for gRPC connection only. Once this is set, the client is required to use the same token. | SW_AUTHENTICATION | - |
+| - | - | restHost| Binding IP of RESTful services. Services include GraphQL query and HTTP data report. | SW_RECEIVER_SHARING_REST_HOST | -                                                                       |
+| - | - | restPort | Binding port of RESTful services. | SW_RECEIVER_SHARING_REST_PORT | -                                                                       |
+| - | - | restContextPath| Web context path of RESTful services. | SW_RECEIVER_SHARING_REST_CONTEXT_PATH | -                                                                       |
+| - | - | restMinThreads| Minimum thread number of RESTful services. | SW_RECEIVER_SHARING_JETTY_MIN_THREADS| 1                                                                       |
+| - | - | restMaxThreads| Maximum thread number of RESTful services. | SW_RECEIVER_SHARING_JETTY_MAX_THREADS| 200                                                                     |
+| - | - | restIdleTimeOut| Connector idle timeout of RESTful services (in milliseconds). | SW_RECEIVER_SHARING_JETTY_IDLE_TIMEOUT| 30000                                                                   |
+| - | - | restAcceptQueueSize| ServerSocketChannel backlog of RESTful services. | SW_RECEIVER_SHARING_JETTY_QUEUE_SIZE| 0                                                                       |
+| - | - | httpMaxRequestHeaderSize| Maximum request header size accepted. | SW_RECEIVER_SHARING_HTTP_MAX_REQUEST_HEADER_SIZE| 8192                                                                    |
+| - | - | gRPCHost| Binding IP of gRPC services. Services include gRPC data report and internal communication among OAP nodes. | SW_RECEIVER_GRPC_HOST | 0.0.0.0. Not Activated                                                  |
+| - | - | gRPCPort| Binding port of gRPC services. | SW_RECEIVER_GRPC_PORT | Not Activated                                                           |
+| - | - | gRPCThreadPoolSize| Pool size of gRPC server. | SW_RECEIVER_GRPC_THREAD_POOL_SIZE | CPU core * 4                                                            |
+| - | - | gRPCThreadPoolQueueSize| Queue size of gRPC server. | SW_RECEIVER_GRPC_POOL_QUEUE_SIZE | 10000                                                                   |
+| - | - | gRPCSslEnabled| Activates SSL for gRPC services. | SW_RECEIVER_GRPC_SSL_ENABLED | false                                                                   |
+| - | - | gRPCSslKeyPath| File path of gRPC SSL key. | SW_RECEIVER_GRPC_SSL_KEY_PATH | -                                                                       |
+| - | - | gRPCSslCertChainPath| File path of gRPC SSL cert chain. | SW_RECEIVER_GRPC_SSL_CERT_CHAIN_PATH | -                                                                       |
+| - | - | maxConcurrentCallsPerConnection | The maximum number of concurrent calls permitted for each incoming connection. Defaults to no limit. | SW_RECEIVER_GRPC_MAX_CONCURRENT_CALL | -                                                                       |
+| - | - | authentication | The token text for authentication. Works for gRPC connection only. Once this is set, the client is required to use the same token. | SW_AUTHENTICATION | -                                                                       |
 | log-analyzer | default | Log Analyzer. | SW_LOG_ANALYZER | default |
-| - | - | lalFiles | The LAL configuration file names (without file extension) to be activated. Read [LAL](../../concepts-and-designs/lal.md) for more details. | SW_LOG_LAL_FILES | default |
-| - | - | malFiles | The MAL configuration file names (without file extension) to be activated. Read [LAL](../../concepts-and-designs/lal.md) for more details. | SW_LOG_MAL_FILES | "" |
+| - | - | lalFiles | The LAL configuration file names (without file extension) to be activated. Read [LAL](../../concepts-and-designs/lal.md) for more details. | SW_LOG_LAL_FILES | default                                                                 |
+| - | - | malFiles | The MAL configuration file names (without file extension) to be activated. Read [LAL](../../concepts-and-designs/lal.md) for more details. | SW_LOG_MAL_FILES | ""                                                                      |
 | event-analyzer | default | Event Analyzer. | SW_EVENT_ANALYZER | default |
 | receiver-register|default| gRPC and HTTPRestful services that provide service, service instance and endpoint register. | - | - |
 | receiver-trace|default| gRPC and HTTPRestful services that accept SkyWalking format traces. | - | - |
@@ -190,94 +190,95 @@ core|default|role|Option values: `Mixed/Receiver/Aggregator`. **Receiver** mode
 | receiver-clr| default|gRPC services that accept .Net CLR metrics data. | - | - |
 | receiver-profile| default| gRPC services that accept profile task status and snapshot reporter. | - | - |
 | receiver-zabbix| default| TCP receiver accepts Zabbix format metrics. | - | - |
-| - | - | port| Exported TCP port. Zabbix agent could connect and transport data. | SW_RECEIVER_ZABBIX_PORT | 10051 |
-| - | - | host| Binds to host. | SW_RECEIVER_ZABBIX_HOST | 0.0.0.0 |
-| - | - | activeFiles| Enables config when agent request is received. | SW_RECEIVER_ZABBIX_ACTIVE_FILES | agent |
+| - | - | port| Exported TCP port. Zabbix agent could connect and transport data. | SW_RECEIVER_ZABBIX_PORT | 10051                                                                   |
+| - | - | host| Binds to host. | SW_RECEIVER_ZABBIX_HOST | 0.0.0.0                                                                 |
+| - | - | activeFiles| Enables config when agent request is received. | SW_RECEIVER_ZABBIX_ACTIVE_FILES | agent                                                                   |
 | service-mesh| default| gRPC services that accept data from inbound mesh probes. | - | - |
 | envoy-metric| default| Envoy `metrics_service` and `ALS(access log service)` are supported by this receiver. The OAL script supports all GAUGE type metrics. | - | - |
-| - | - | acceptMetricsService | Starts Envoy Metrics Service analysis. | SW_ENVOY_METRIC_SERVICE | true|
-| - | - | alsHTTPAnalysis | Starts Envoy HTTP Access Log Service analysis. Value = `k8s-mesh` means starting the analysis. | SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS | - |
-| - | - | alsTCPAnalysis | Starts Envoy TCP Access Log Service analysis. Value = `k8s-mesh` means starting the analysis. | SW_ENVOY_METRIC_ALS_TCP_ANALYSIS | - |
+| - | - | acceptMetricsService | Starts Envoy Metrics Service analysis. | SW_ENVOY_METRIC_SERVICE | true                                                                    |
+| - | - | alsHTTPAnalysis | Starts Envoy HTTP Access Log Service analysis. Value = `k8s-mesh` means starting the analysis. | SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS | -                                                                       |
+| - | - | alsTCPAnalysis | Starts Envoy TCP Access Log Service analysis. Value = `k8s-mesh` means starting the analysis. | SW_ENVOY_METRIC_ALS_TCP_ANALYSIS | -                                                                       |
 | - | - | k8sServiceNameRule | `k8sServiceNameRule` allows you to customize the service name in ALS via Kubernetes metadata. The available variables are `pod` and `service`. E.g. you can use `${service.metadata.name}-${pod.metadata.labels.version}` to append the version number to the service name. Note that when using environment variables to pass this configuration, use single quotes(`''`) to avoid being evaluated by the shell. | - |
 | receiver-otel | default | A receiver for analyzing metrics data from OpenTelemetry. | - | - |
-| - | - | enabledHandlers| Enabled handlers for otel. | SW_OTEL_RECEIVER_ENABLED_HANDLERS | - |
-| - | - | enabledOcRules| Enabled metric rules for OC handler. | SW_OTEL_RECEIVER_ENABLED_OC_RULES | - |
+| - | - | enabledHandlers| Enabled handlers for otel. | SW_OTEL_RECEIVER_ENABLED_HANDLERS | -                                                                       |
+| - | - | enabledOcRules| Enabled metric rules for OC handler. | SW_OTEL_RECEIVER_ENABLED_OC_RULES | -                                                                       |
 | receiver-zipkin |default|  A receiver for Zipkin traces. | - | - |
-| - | - | restHost| Binding IP of RESTful services. |SW_RECEIVER_ZIPKIN_HOST|0.0.0.0|
-| - | - | restPort | Binding port of RESTful services. | SW_RECEIVER_ZIPKIN_PORT|9411|
-| - | - | restContextPath| Web context path of RESTful services. | SW_RECEIVER_ZIPKIN_CONTEXT_PATH|/|
+| - | - | restHost| Binding IP of RESTful services. |SW_RECEIVER_ZIPKIN_HOST| 0.0.0.0                                                                 |
+| - | - | restPort | Binding port of RESTful services. | SW_RECEIVER_ZIPKIN_PORT| 9411                                                                    |
+| - | - | restContextPath| Web context path of RESTful services. | SW_RECEIVER_ZIPKIN_CONTEXT_PATH| /                                                                       |
 | prometheus-fetcher | default | Prometheus fetcher reads metrics from Prometheus endpoint, and transfer the metrics into SkyWalking native format for the MAL engine. | - | - |
-| - | - | enabledRules | Enabled rules. | SW_PROMETHEUS_FETCHER_ENABLED_RULES | self |
-| - | - | maxConvertWorker | The maximize meter convert worker. | SW_PROMETHEUS_FETCHER_NUM_CONVERT_WORKER | -1(by default, half the number of CPU core(s)) |
+| - | - | enabledRules | Enabled rules. | SW_PROMETHEUS_FETCHER_ENABLED_RULES | self                                                                    |
+| - | - | maxConvertWorker | The maximize meter convert worker. | SW_PROMETHEUS_FETCHER_NUM_CONVERT_WORKER | -1(by default, half the number of CPU core(s))                          |
 | kafka-fetcher | default | Read SkyWalking's native metrics/logs/traces through Kafka server. | - | - |
-| - | - | bootstrapServers | A list of host/port pairs to use for establishing the initial connection to the Kafka cluster. | SW_KAFKA_FETCHER_SERVERS | localhost:9092 |
-| - | - | namespace | Namespace aims to isolate multi OAP cluster when using the same Kafka cluster. If you set a namespace for Kafka fetcher, OAP will add a prefix to topic name. You should also set namespace in `agent.config`. The property is named `plugin.kafka.namespace`. | SW_NAMESPACE | - |
-| - | - | groupId | A unique string that identifies the consumer group to which this consumer belongs.| - | skywalking-consumer |
-| - | - | consumePartitions | Indicates which PartitionId(s) of the topics is/are assigned to the OAP server. Separated by commas if multiple. | SW_KAFKA_FETCHER_CONSUME_PARTITIONS | - |
-| - | - | isSharding | True when OAP Server is in cluster. | SW_KAFKA_FETCHER_IS_SHARDING | false |
-| - | - | createTopicIfNotExist | If true, this creates Kafka topic (if it does not already exist). | - | true |
-| - | - | partitions | The number of partitions for the topic being created. | SW_KAFKA_FETCHER_PARTITIONS | 3 |
-| - | - | enableNativeProtoLog | Enables fetching and handling native proto log data. | SW_KAFKA_FETCHER_ENABLE_NATIVE_PROTO_LOG | true |
-| - | - | enableNativeJsonLog | Enables fetching and handling native json log data. | SW_KAFKA_FETCHER_ENABLE_NATIVE_JSON_LOG | true |
-| - | - | replicationFactor | The replication factor for each partition in the topic being created. | SW_KAFKA_FETCHER_PARTITIONS_FACTOR | 2 |
-| - | - | kafkaHandlerThreadPoolSize | Pool size of Kafka message handler executor. | SW_KAFKA_HANDLER_THREAD_POOL_SIZE | CPU core * 2 |
-| - | - | kafkaHandlerThreadPoolQueueSize | Queue size of Kafka message handler executor. | SW_KAFKA_HANDLER_THREAD_POOL_QUEUE_SIZE | 10000 |
-| - | - | topicNameOfMeters | Kafka topic name for meter system data. | - | skywalking-meters |
-| - | - | topicNameOfMetrics | Kafka topic name for JVM metrics data. | - | skywalking-metrics |
-| - | - | topicNameOfProfiling | Kafka topic name for profiling data. | - | skywalking-profilings |
-| - | - | topicNameOfTracingSegments | Kafka topic name for tracing data. | - | skywalking-segments |
-| - | - | topicNameOfManagements | Kafka topic name for service instance reporting and registration. | - | skywalking-managements |
-| - | - | topicNameOfLogs | Kafka topic name for native proto log data. | - | skywalking-logs |
-| - | - | topicNameOfJsonLogs | Kafka topic name for native json log data. | - | skywalking-logs-json |
-| receiver-browser | default | gRPC services that accept browser performance data and error log. | - | - | - |
-| - | - | sampleRate | Sampling rate for receiving trace. Precise to 1/10000. 10000 means sampling rate of 100% by default. | SW_RECEIVER_BROWSER_SAMPLE_RATE | 10000 |
+| - | - | bootstrapServers | A list of host/port pairs to use for establishing the initial connection to the Kafka cluster. | SW_KAFKA_FETCHER_SERVERS | localhost:9092                                                          |
+| - | - | namespace | Namespace aims to isolate multi OAP cluster when using the same Kafka cluster. If you set a namespace for Kafka fetcher, OAP will add a prefix to topic name. You should also set namespace in `agent.config`. The property is named `plugin.kafka.namespace`. | SW_NAMESPACE | -                                                                       |
+| - | - | groupId | A unique string that identifies the consumer group to which this consumer belongs.| - | skywalking-consumer                                                     |
+| - | - | consumePartitions | Indicates which PartitionId(s) of the topics is/are assigned to the OAP server. Separated by commas if multiple. | SW_KAFKA_FETCHER_CONSUME_PARTITIONS | -                                                                       |
+| - | - | isSharding | True when OAP Server is in cluster. | SW_KAFKA_FETCHER_IS_SHARDING | false                                                                   |
+| - | - | createTopicIfNotExist | If true, this creates Kafka topic (if it does not already exist). | - | true                                                                    |
+| - | - | partitions | The number of partitions for the topic being created. | SW_KAFKA_FETCHER_PARTITIONS | 3                                                                       |
+| - | - | enableNativeProtoLog | Enables fetching and handling native proto log data. | SW_KAFKA_FETCHER_ENABLE_NATIVE_PROTO_LOG | true                                                                    |
+| - | - | enableNativeJsonLog | Enables fetching and handling native json log data. | SW_KAFKA_FETCHER_ENABLE_NATIVE_JSON_LOG | true                                                                    |
+| - | - | replicationFactor | The replication factor for each partition in the topic being created. | SW_KAFKA_FETCHER_PARTITIONS_FACTOR | 2                                                                       |
+| - | - | kafkaHandlerThreadPoolSize | Pool size of Kafka message handler executor. | SW_KAFKA_HANDLER_THREAD_POOL_SIZE | CPU core * 2                                                            |
+| - | - | kafkaHandlerThreadPoolQueueSize | Queue size of Kafka message handler executor. | SW_KAFKA_HANDLER_THREAD_POOL_QUEUE_SIZE | 10000                                                                   |
+| - | - | topicNameOfMeters | Kafka topic name for meter system data. | - | skywalking-meters                                                       |
+| - | - | topicNameOfMetrics | Kafka topic name for JVM metrics data. | - | skywalking-metrics                                                      |
+| - | - | topicNameOfProfiling | Kafka topic name for profiling data. | - | skywalking-profilings                                                   |
+| - | - | topicNameOfTracingSegments | Kafka topic name for tracing data. | - | skywalking-segments                                                     |
+| - | - | topicNameOfManagements | Kafka topic name for service instance reporting and registration. | - | skywalking-managements                                                  |
+| - | - | topicNameOfLogs | Kafka topic name for native proto log data. | - | skywalking-logs                                                         |
+| - | - | topicNameOfJsonLogs | Kafka topic name for native json log data. | - | skywalking-logs-json                                                    |
+| receiver-browser | default | gRPC services that accept browser performance data and error log. | - | - | -                                                                       |
+| - | - | sampleRate | Sampling rate for receiving trace. Precise to 1/10000. 10000 means sampling rate of 100% by default. | SW_RECEIVER_BROWSER_SAMPLE_RATE | 10000                                                                   |
 | query | graphql | - | GraphQL query implementation. | - |
-| - | - | enableLogTestTool | Enable the log testing API to test the LAL. **NOTE**: This API evaluates untrusted code on the OAP server. A malicious script can do significant damage (steal keys and secrets, remove files and directories, install malware, etc). As such, please enable this API only when you completely trust your users. | SW_QUERY_GRAPHQL_ENABLE_LOG_TEST_TOOL | false |
-| - | - | maxQueryComplexity | Maximum complexity allowed for the GraphQL query that can be used to abort a query if the total number of data fields queried exceeds the defined threshold. | SW_QUERY_MAX_QUERY_COMPLEXITY | 100 |
+| - | - | enableLogTestTool | Enable the log testing API to test the LAL. **NOTE**: This API evaluates untrusted code on the OAP server. A malicious script can do significant damage (steal keys and secrets, remove files and directories, install malware, etc). As such, please enable this API only when you completely trust your users. | SW_QUERY_GRAPHQL_ENABLE_LOG_TEST_TOOL | false                                                                   |
+| - | - | maxQueryComplexity | Maximum complexity allowed for the GraphQL query that can be used to abort a query if the total number of data fields queried exceeds the defined threshold. | SW_QUERY_MAX_QUERY_COMPLEXITY | 100                                                                     |
+| - | - | enableUpdateUITemplate | Allow user add,disable and update UI template. | SW_ENABLE_UPDATE_UI_TEMPLATE | false                                                                   |
 | alarm | default | - | Read [alarm doc](backend-alarm.md) for more details. | - |
 | telemetry | - | - | Read [telemetry doc](backend-telemetry.md) for more details. | - |
 | - | none| - | No op implementation. | - |
-| - | prometheus| host | Binding host for Prometheus server fetching data. | SW_TELEMETRY_PROMETHEUS_HOST|0.0.0.0|
-| - | - | port|  Binding port for Prometheus server fetching data. |SW_TELEMETRY_PROMETHEUS_PORT|1234|
+| - | prometheus| host | Binding host for Prometheus server fetching data. | SW_TELEMETRY_PROMETHEUS_HOST| 0.0.0.0                                                                 |
+| - | - | port|  Binding port for Prometheus server fetching data. |SW_TELEMETRY_PROMETHEUS_PORT| 1234                                                                    |
 | configuration | - | - | Read [dynamic configuration doc](dynamic-config.md) for more details. | - |
-| - | grpc| host | DCS server binding hostname. | SW_DCS_SERVER_HOST | - |
-| - | - | port | DCS server binding port. | SW_DCS_SERVER_PORT | 80 |
-| - | - | clusterName | Cluster name when reading the latest configuration from DSC server. | SW_DCS_CLUSTER_NAME | SkyWalking|
-| - | - | period | The period of reading data from DSC server by the OAP (in seconds). | SW_DCS_PERIOD | 20 |
-| - | apollo| apolloMeta| `apollo.meta` in Apollo. | SW_CONFIG_APOLLO | http://localhost:8080 |
-| - | - | apolloCluster | `apollo.cluster` in Apollo. | SW_CONFIG_APOLLO_CLUSTER | default|
-| - | - | apolloEnv | `env` in Apollo. | SW_CONFIG_APOLLO_ENV | - |
-| - | - | appId | `app.id` in Apollo. | SW_CONFIG_APOLLO_APP_ID | skywalking |
-| - | - | period | The period of data sync (in seconds). | SW_CONFIG_APOLLO_PERIOD | 60 |
-| - | zookeeper|namespace| The namespace (represented by root path) that isolates the configurations in the Zookeeper. |SW_CONFIG_ZK_NAMESPACE| `/`, root path|
-| - | - | hostPort| Hosts and ports of Zookeeper Cluster. |SW_CONFIG_ZK_HOST_PORT| localhost:2181|
-| - | - | baseSleepTimeMs|The period of Zookeeper client between two retries (in milliseconds). |SW_CONFIG_ZK_BASE_SLEEP_TIME_MS|1000|
-| - | - | maxRetries| The maximum retry time. |SW_CONFIG_ZK_MAX_RETRIES|3|
-| - | - | period | The period of data sync (in seconds). | SW_CONFIG_ZK_PERIOD | 60 |
-| - | etcd| endpoints | Hosts and ports for etcd cluster (separated by commas if multiple). | SW_CONFIG_ETCD_ENDPOINTS | http://localhost:2379 |
-| - | - | namespace | Namespace for SkyWalking cluster. |SW_CONFIG_ETCD_NAMESPACE | /skywalking |
-| - | - | authentication | Indicates whether there is authentication. | SW_CONFIG_ETCD_AUTHENTICATION | false |
-| - | - | user | Etcd auth username. | SW_CONFIG_ETCD_USER | |
-| - | - | password | Etcd auth password. | SW_CONFIG_ETCD_PASSWORD | |
-| - | - | period | The period of data sync (in seconds). | SW_CONFIG_ZK_PERIOD | 60
-| - | consul | hostPort| Hosts and ports for Consul cluster.| SW_CONFIG_CONSUL_HOST_AND_PORTS|localhost:8500|
-| - | - | aclToken| ACL Token of Consul. Empty string means `without ACL token`.| SW_CONFIG_CONSUL_ACL_TOKEN | - |
-| - | - | period | The period of data sync (in seconds). | SW_CONFIG_CONSUL_PERIOD | 60 |
-| - | k8s-configmap | namespace | Deployment namespace of the config map. |SW_CLUSTER_K8S_NAMESPACE|default|
-| - | - | labelSelector| Labels for locating configmap. |SW_CLUSTER_K8S_LABEL|app=collector,release=skywalking|
-| - | - | period | The period of data sync (in seconds). | SW_CONFIG_ZK_PERIOD | 60 |
-| - | nacos | serverAddr | Nacos Server Host. | SW_CONFIG_NACOS_SERVER_ADDR | 127.0.0.1|
-| - | - | port | Nacos Server Port. | SW_CONFIG_NACOS_SERVER_PORT | 8848 |
-| - | - | group | Nacos Configuration namespace. | SW_CONFIG_NACOS_SERVER_NAMESPACE | - |
-| - | - | period | The period of data sync (in seconds). | SW_CONFIG_CONFIG_NACOS_PERIOD | 60 |
-| - | - | username | Nacos Auth username. | SW_CONFIG_NACOS_USERNAME | - |
-| - | - | password | Nacos Auth password. | SW_CONFIG_NACOS_PASSWORD | - |
-| - | - | accessKey | Nacos Auth accessKey. | SW_CONFIG_NACOS_ACCESSKEY | - |
-| - | - | secretKey | Nacos Auth secretKey.  | SW_CONFIG_NACOS_SECRETKEY | - |
-| exporter | grpc | targetHost | The host of target gRPC server for receiving export data. | SW_EXPORTER_GRPC_HOST | 127.0.0.1 |
-| - | - | targetPort | The port of target gRPC server for receiving export data. | SW_EXPORTER_GRPC_PORT | 9870 |
-| health-checker | default | checkIntervalSeconds | The period of checking OAP internal health status (in seconds). | SW_HEALTH_CHECKER_INTERVAL_SECONDS | 5 |
-| configuration-discovery | default | disableMessageDigest | If true, agent receives the latest configuration every time, even without making any changes. By default, OAP uses the SHA512 message digest mechanism to detect changes in configuration. | SW_DISABLE_MESSAGE_DIGEST | false
+| - | grpc| host | DCS server binding hostname. | SW_DCS_SERVER_HOST | -                                                                       |
+| - | - | port | DCS server binding port. | SW_DCS_SERVER_PORT | 80                                                                      |
+| - | - | clusterName | Cluster name when reading the latest configuration from DSC server. | SW_DCS_CLUSTER_NAME | SkyWalking                                                              |
+| - | - | period | The period of reading data from DSC server by the OAP (in seconds). | SW_DCS_PERIOD | 20                                                                      |
+| - | apollo| apolloMeta| `apollo.meta` in Apollo. | SW_CONFIG_APOLLO | http://localhost:8080                                                   |
+| - | - | apolloCluster | `apollo.cluster` in Apollo. | SW_CONFIG_APOLLO_CLUSTER | default                                                                 |
+| - | - | apolloEnv | `env` in Apollo. | SW_CONFIG_APOLLO_ENV | -                                                                       |
+| - | - | appId | `app.id` in Apollo. | SW_CONFIG_APOLLO_APP_ID | skywalking                                                              |
+| - | - | period | The period of data sync (in seconds). | SW_CONFIG_APOLLO_PERIOD | 60                                                                      |
+| - | zookeeper|namespace| The namespace (represented by root path) that isolates the configurations in the Zookeeper. |SW_CONFIG_ZK_NAMESPACE| `/`, root path                                                          |
+| - | - | hostPort| Hosts and ports of Zookeeper Cluster. |SW_CONFIG_ZK_HOST_PORT| localhost:2181                                                          |
+| - | - | baseSleepTimeMs|The period of Zookeeper client between two retries (in milliseconds). |SW_CONFIG_ZK_BASE_SLEEP_TIME_MS| 1000                                                                    |
+| - | - | maxRetries| The maximum retry time. |SW_CONFIG_ZK_MAX_RETRIES| 3                                                                       |
+| - | - | period | The period of data sync (in seconds). | SW_CONFIG_ZK_PERIOD | 60                                                                      |
+| - | etcd| endpoints | Hosts and ports for etcd cluster (separated by commas if multiple). | SW_CONFIG_ETCD_ENDPOINTS | http://localhost:2379                                                   |
+| - | - | namespace | Namespace for SkyWalking cluster. |SW_CONFIG_ETCD_NAMESPACE | /skywalking                                                             |
+| - | - | authentication | Indicates whether there is authentication. | SW_CONFIG_ETCD_AUTHENTICATION | false                                                                   |
+| - | - | user | Etcd auth username. | SW_CONFIG_ETCD_USER |                                                                         |
+| - | - | password | Etcd auth password. | SW_CONFIG_ETCD_PASSWORD |                                                                         |
+| - | - | period | The period of data sync (in seconds). | SW_CONFIG_ZK_PERIOD | 60                                                                      
+| - | consul | hostPort| Hosts and ports for Consul cluster.| SW_CONFIG_CONSUL_HOST_AND_PORTS| localhost:8500                                                          |
+| - | - | aclToken| ACL Token of Consul. Empty string means `without ACL token`.| SW_CONFIG_CONSUL_ACL_TOKEN | -                                                                       |
+| - | - | period | The period of data sync (in seconds). | SW_CONFIG_CONSUL_PERIOD | 60                                                                      |
+| - | k8s-configmap | namespace | Deployment namespace of the config map. |SW_CLUSTER_K8S_NAMESPACE| default                                                                 |
+| - | - | labelSelector| Labels for locating configmap. |SW_CLUSTER_K8S_LABEL| app=collector,release=skywalking                                        |
+| - | - | period | The period of data sync (in seconds). | SW_CONFIG_ZK_PERIOD | 60                                                                      |
+| - | nacos | serverAddr | Nacos Server Host. | SW_CONFIG_NACOS_SERVER_ADDR | 127.0.0.1                                                               |
+| - | - | port | Nacos Server Port. | SW_CONFIG_NACOS_SERVER_PORT | 8848                                                                    |
+| - | - | group | Nacos Configuration namespace. | SW_CONFIG_NACOS_SERVER_NAMESPACE | -                                                                       |
+| - | - | period | The period of data sync (in seconds). | SW_CONFIG_CONFIG_NACOS_PERIOD | 60                                                                      |
+| - | - | username | Nacos Auth username. | SW_CONFIG_NACOS_USERNAME | -                                                                       |
+| - | - | password | Nacos Auth password. | SW_CONFIG_NACOS_PASSWORD | -                                                                       |
+| - | - | accessKey | Nacos Auth accessKey. | SW_CONFIG_NACOS_ACCESSKEY | -                                                                       |
+| - | - | secretKey | Nacos Auth secretKey.  | SW_CONFIG_NACOS_SECRETKEY | -                                                                       |
+| exporter | grpc | targetHost | The host of target gRPC server for receiving export data. | SW_EXPORTER_GRPC_HOST | 127.0.0.1                                                               |
+| - | - | targetPort | The port of target gRPC server for receiving export data. | SW_EXPORTER_GRPC_PORT | 9870                                                                    |
+| health-checker | default | checkIntervalSeconds | The period of checking OAP internal health status (in seconds). | SW_HEALTH_CHECKER_INTERVAL_SECONDS | 5                                                                       |
+| configuration-discovery | default | disableMessageDigest | If true, agent receives the latest configuration every time, even without making any changes. By default, OAP uses the SHA512 message digest mechanism to detect changes in configuration. | SW_DISABLE_MESSAGE_DIGEST | false                                                                   
 | receiver-event|default| gRPC services that handle events data. | - | - |
 
 ## Note
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
index 03baaa3..0c1ebd5 100755
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
@@ -18,8 +18,6 @@
 
 package org.apache.skywalking.oap.server.core;
 
-import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import org.apache.skywalking.oap.server.configuration.api.ConfigurationModule;
@@ -30,7 +28,6 @@ import org.apache.skywalking.oap.server.core.analysis.StreamAnnotationListener;
 import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
 import org.apache.skywalking.oap.server.core.analysis.meter.MeterSystem;
 import org.apache.skywalking.oap.server.core.analysis.metrics.ApdexMetrics;
-import org.apache.skywalking.oap.server.core.analysis.worker.ManagementStreamProcessor;
 import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor;
 import org.apache.skywalking.oap.server.core.analysis.worker.TopNStreamProcessor;
 import org.apache.skywalking.oap.server.core.annotation.AnnotationScan;
@@ -101,7 +98,6 @@ import org.apache.skywalking.oap.server.library.server.ServerException;
 import org.apache.skywalking.oap.server.library.server.grpc.GRPCServer;
 import org.apache.skywalking.oap.server.library.server.http.HTTPServer;
 import org.apache.skywalking.oap.server.library.server.http.HTTPServerConfig;
-import org.apache.skywalking.oap.server.library.util.ResourceUtils;
 import org.apache.skywalking.oap.server.telemetry.TelemetryModule;
 import org.apache.skywalking.oap.server.telemetry.api.TelemetryRelatedContext;
 
@@ -385,19 +381,8 @@ public class CoreModuleProvider extends ModuleProvider {
         CacheUpdateTimer.INSTANCE.start(getManager(), moduleConfig.getMetricsDataTTL());
 
         try {
-            final File[] templateFiles = ResourceUtils.getPathFiles("ui-initialized-templates");
-            for (final File templateFile : templateFiles) {
-                if (!templateFile.getName().endsWith(".yml") && !templateFile.getName().endsWith(".yaml")) {
-                    continue;
-                }
-                new UITemplateInitializer(new FileInputStream(templateFile))
-                    .read()
-                    .forEach(uiTemplate -> {
-                        ManagementStreamProcessor.getInstance().in(uiTemplate);
-                    });
-            }
-
-        } catch (FileNotFoundException e) {
+            new UITemplateInitializer(getManager()).initAll();
+        } catch (IOException e) {
             throw new ModuleStartException(e.getMessage(), e);
         }
     }
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 d1bdb87..1b4c84e 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
@@ -18,38 +18,82 @@
 
 package org.apache.skywalking.oap.server.core.management.ui.template;
 
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.File;
 import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-import lombok.extern.slf4j.Slf4j;
-import org.yaml.snakeyaml.Yaml;
+import java.util.Locale;
+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;
 
 /**
- * UITemplateInitializer load the template from the config file in YAML format. The template definition is by JSON
- * format in default, but it depends on the UI implementation only.
+ * UITemplateInitializer load the template from the config file in json format. It depends on the UI implementation only.
+ * Each config file should be only one dashboard setting json object.
+ * The dashboard names should be different in the same Layer and entity.
  */
-@Slf4j
 public class UITemplateInitializer {
-    private Map yamlData;
-
-    public UITemplateInitializer(InputStream inputStream) {
-        Yaml yaml = new Yaml();
-        try {
-            yamlData = yaml.loadAs(inputStream, Map.class);
-        } finally {
-            try {
-                inputStream.close();
-            } catch (IOException e) {
-                log.warn(e.getMessage(), e);
+    public static Layer[] SUPPORTED_LAYER = new Layer[] {
+        Layer.MESH,
+        Layer.GENERAL,
+        Layer.K8S,
+        Layer.BROWSER,
+        Layer.SO11Y_OAP
+    };
+    private final UITemplateManagementService uiTemplateManagementService;
+    private final ObjectMapper mapper;
+
+    public UITemplateInitializer(ModuleManager manager) {
+        this.uiTemplateManagementService = manager.find(CoreModule.NAME)
+                                                  .provider()
+                                                  .getService(UITemplateManagementService.class);
+        this.mapper = new ObjectMapper();
+        this.mapper.enable(JsonParser.Feature.ALLOW_COMMENTS);
+    }
+
+    public void initAll() throws IOException {
+        for (Layer layer : UITemplateInitializer.SUPPORTED_LAYER) {
+            File[] templateFiles = ResourceUtils.getPathFiles("ui-initialized-templates/" + layer.name().toLowerCase(
+                Locale.ROOT));
+            for (File file : templateFiles) {
+                initTemplate(file);
             }
         }
     }
 
-    public List<UITemplate> read() {
-        List<UITemplate> uiTemplates = new ArrayList<>();
-        //Todo: implement later when new template file ready
-        return uiTemplates;
+    public void initTemplate(File template) throws IOException {
+        JsonNode jsonNode = mapper.readTree(template);
+        if (jsonNode.size() > 1) {
+            throw new IllegalArgumentException(
+                "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);
+
+        DashboardSetting setting = new DashboardSetting();
+        setting.setId(inId);
+        setting.setConfiguration(configNode.toString());
+
+        uiTemplateManagementService.addOrUpdate(setting);
+    }
+
+    private void verifyNameConflict(File template, String inId, String inName) throws IOException {
+        List<DashboardConfiguration> 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)) {
+                throw new IllegalArgumentException(
+                    "File:  " + template.getName() + " name: " + inName + " 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 c64374f..7fe250e 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
@@ -68,4 +68,13 @@ public class UITemplateManagementService implements Service {
     public TemplateChangeStatus disableTemplate(String id) throws IOException {
         return getUITemplateManagementDAO().disableTemplate(id);
     }
+
+    public TemplateChangeStatus addOrUpdate(DashboardSetting setting) throws IOException {
+        DashboardConfiguration configuration = getUITemplateManagementDAO().getTemplate(setting.getId());
+        if (configuration == null) {
+            return getUITemplateManagementDAO().addTemplate(setting);
+        } else {
+            return getUITemplateManagementDAO().changeTemplate(setting);
+        }
+    }
 }
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/input/DashboardSetting.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/input/DashboardSetting.java
index 354e239..2fdc55f 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/input/DashboardSetting.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/input/DashboardSetting.java
@@ -28,13 +28,12 @@ import org.apache.skywalking.oap.server.library.util.BooleanUtils;
 public class DashboardSetting {
     private String id;
     private String configuration;
-    private long updateTime;
 
     public UITemplate toEntity() {
         UITemplate uiTemplate = new UITemplate();
         uiTemplate.setTemplateId(this.id);
         uiTemplate.setConfiguration(this.getConfiguration());
-        uiTemplate.setUpdateTime(this.updateTime);
+        uiTemplate.setUpdateTime(System.currentTimeMillis());
         uiTemplate.setDisabled(BooleanUtils.FALSE);
         return uiTemplate;
     }
diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializerTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializerTest.java
deleted file mode 100644
index 4e6d4a6..0000000
--- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializerTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.skywalking.oap.server.core.management.ui.template;
-
-import java.io.FileNotFoundException;
-import org.junit.Test;
-
-public class UITemplateInitializerTest {
-    @Test
-    public void testReadFile() throws FileNotFoundException {
-        //Todo: implement later when new template file ready
-    }
-}
diff --git a/oap-server/server-core/src/test/resources/test-ui-templates/ui-initialized-templates.yml b/oap-server/server-core/src/test/resources/test-ui-templates/ui-initialized-templates.yml
deleted file mode 100644
index 2982491..0000000
--- a/oap-server/server-core/src/test/resources/test-ui-templates/ui-initialized-templates.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# UI templates initialized file includes the default template when the SkyWalking OAP starts up at the first time.
-#
-# 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: |-
-      ui exported definition in JSONsdfsd
-      sdjfkasld
-      sdfui
-      skdfj:dafjisa
-      adifaosi
-    # 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.
-    # disable: false
-  - name: "APM (Service Mesh)"
-    # 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: |-
-      Mesh metrics configuration.
-    # 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: true
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryConfig.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryConfig.java
index 35f1f7a..9ae7f72 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryConfig.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryConfig.java
@@ -30,4 +30,5 @@ import org.apache.skywalking.oap.server.library.module.ModuleConfig;
 public class GraphQLQueryConfig extends ModuleConfig {
     private boolean enableLogTestTool;
     private int maxQueryComplexity = 100;
+    private boolean enableUpdateUITemplate = false;
 }
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryProvider.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryProvider.java
index 582f68c..01434c7 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryProvider.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryProvider.java
@@ -109,7 +109,7 @@ public class GraphQLQueryProvider extends ModuleProvider {
                      .file("query-protocol/profile.graphqls")
                      .resolvers(new ProfileQuery(getManager()), new ProfileMutation(getManager()))
                      .file("query-protocol/ui-configuration.graphqls")
-                     .resolvers(new UIConfigurationManagement(getManager()))
+                     .resolvers(new UIConfigurationManagement(getManager(), config))
                      .file("query-protocol/browser-log.graphqls")
                      .resolvers(new BrowserLogQuery(getManager()))
                      .file("query-protocol/event.graphqls")
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/UIConfigurationManagement.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/UIConfigurationManagement.java
index cf68f65..5bbd0ba 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/UIConfigurationManagement.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/UIConfigurationManagement.java
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.util.List;
 import java.util.UUID;
 import lombok.RequiredArgsConstructor;
+import org.apache.skywalking.oap.query.graphql.GraphQLQueryConfig;
 import org.apache.skywalking.oap.server.core.CoreModule;
 import org.apache.skywalking.oap.server.core.management.ui.template.UITemplateManagementService;
 import org.apache.skywalking.oap.server.core.query.input.DashboardSetting;
@@ -42,6 +43,7 @@ import org.apache.skywalking.oap.server.library.module.ModuleManager;
 public class UIConfigurationManagement implements GraphQLQueryResolver, GraphQLMutationResolver {
     private final ModuleManager manager;
     private UITemplateManagementService uiTemplateManagementService;
+    private final GraphQLQueryConfig config;
 
     private UITemplateManagementService getUITemplateManagementService() {
         if (uiTemplateManagementService == null) {
@@ -61,20 +63,45 @@ public class UIConfigurationManagement implements GraphQLQueryResolver, GraphQLM
     }
 
     public TemplateChangeStatus addTemplate(NewDashboardSetting setting) throws IOException {
+        if (!config.isEnableUpdateUITemplate()) {
+            return TemplateChangeStatus.builder().status(false)
+                                       .id("")
+                                       .message(
+                                           "The dashboard creation has been disabled. Check SW_ENABLE_UPDATE_UI_TEMPLATE on " +
+                                               "configuration-vocabulary.md(https://skywalking.apache.org/docs/main/latest/en/setup/backend/configuration-vocabulary/#configuration-vocabulary) " +
+                                               "to activate it.")
+                                       .build();
+        }
         DashboardSetting dashboardSetting = new DashboardSetting();
         //Backend generate the Id for new template
         dashboardSetting.setId(UUID.randomUUID().toString());
-        dashboardSetting.setUpdateTime(System.currentTimeMillis());
         dashboardSetting.setConfiguration(setting.getConfiguration());
         return getUITemplateManagementService().addTemplate(dashboardSetting);
     }
 
     public TemplateChangeStatus changeTemplate(DashboardSetting setting) throws IOException {
-        setting.setUpdateTime(System.currentTimeMillis());
+        if (!config.isEnableUpdateUITemplate()) {
+            return TemplateChangeStatus.builder().status(false)
+                                       .id(setting.getId())
+                                       .message(
+                                           "The dashboard update has been disabled. Check SW_ENABLE_UPDATE_UI_TEMPLATE on " +
+                                               "configuration-vocabulary.md(https://skywalking.apache.org/docs/main/latest/en/setup/backend/configuration-vocabulary/#configuration-vocabulary) " +
+                                               "to activate it.")
+                                       .build();
+        }
         return getUITemplateManagementService().changeTemplate(setting);
     }
 
     public TemplateChangeStatus disableTemplate(String id) throws IOException {
+        if (!config.isEnableUpdateUITemplate()) {
+            return TemplateChangeStatus.builder().status(false)
+                                       .id(id)
+                                       .message(
+                                           "The dashboard disable has been disabled. Check SW_ENABLE_UPDATE_UI_TEMPLATE on " +
+                                               "configuration-vocabulary.md(https://skywalking.apache.org/docs/main/latest/en/setup/backend/configuration-vocabulary/#configuration-vocabulary) " +
+                                               "to activate it.")
+                                       .build();
+        }
         return getUITemplateManagementService().disableTemplate(id);
     }
 }
diff --git a/oap-server/server-starter/src/main/resources/application.yml b/oap-server/server-starter/src/main/resources/application.yml
index a401e11..d074f6c 100755
--- a/oap-server/server-starter/src/main/resources/application.yml
+++ b/oap-server/server-starter/src/main/resources/application.yml
@@ -416,6 +416,8 @@ query:
     # Maximum complexity allowed for the GraphQL query that can be used to
     # abort a query if the total number of data fields queried exceeds the defined threshold.
     maxQueryComplexity: ${SW_QUERY_MAX_QUERY_COMPLEXITY:100}
+    # Allow user add, disable and update UI template
+    enableUpdateUITemplate: ${SW_ENABLE_UPDATE_UI_TEMPLATE:false}
 
 alarm:
   selector: ${SW_ALARM:default}
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/apm.yml b/oap-server/server-starter/src/main/resources/ui-initialized-templates/apm.yml
deleted file mode 100644
index 293d235..0000000
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/apm.yml
+++ /dev/null
@@ -1,655 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# UI templates initialized file includes the default template when the SkyWalking OAP starts up at the first time.
-#
-# 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"
-    # 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 / PPM",
-                  "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
-                },
-                {
-                  "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_resp_time",
-                  "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": 4,
-                  "title": "Service Apdex",
-                  "height": "100",
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "service_apdex",
-                  "queryMetricType": "readMetricsValue",
-                  "chartType": "ChartNum",
-                  "aggregation": "/",
-                  "aggregationNum": "10000"
-                },
-                {
-                  "width": 4,
-                  "title": "Successful Rate",
-                  "height": "100",
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "service_sla",
-                  "queryMetricType": "readMetricsValue",
-                  "chartType": "ChartNum",
-                  "unit": "%",
-                  "aggregation": "/",
-                  "aggregationNum": "100"
-                },
-                {
-                  "width": 4,
-                  "title": "Service Load",
-                  "height": "100",
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "service_cpm",
-                  "queryMetricType": "readMetricsValue",
-                  "chartType": "ChartNum",
-                  "unit": "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)"
-                },
-                {
-                  "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": "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 / PPM",
-                  "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
-                },
-                {
-                  "width": 3,
-                  "title": "Service Throughput",
-                  "height": "200",
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "service_throughput_received,service_throughput_sent",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "Bytes",
-                  "tips": "This metrics is only avaible for TCP services"
-                },
-                {
-                  "width": 3,
-                  "title": "Message Queue Consuming Count",
-                  "height": "200",
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "service_mq_consume_count",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "",
-                  "tips": "The number of consumed messages."
-                },
-                {
-                  "width": 3,
-                  "title": "Message Queue Avg Consuming Latency",
-                  "height": "200",
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "service_mq_consume_latency",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "ms",
-                  "tips": "The avg latency of message consuming. Latency = timestamp(received) - timestamp(producing)"
-                },
-                {
-                  "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 / PPM",
-                  "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
-                },
-                {
-                  "width": "4",
-                  "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": "3",
-                  "title": "Service Instance Load",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "service_instance_cpm",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "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)"
-                },
-                {
-                  "width": 3,
-                  "title": "Service Instance Throughput",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "service_instance_throughput_received,service_instance_throughput_sent",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "Bytes"
-                },
-                {
-                  "width": "3",
-                  "title": "Service Instance Successful Rate",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "service_instance_sla",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "%",
-                  "aggregation": "/",
-                  "aggregationNum": "100"
-                },
-                {
-                  "width": "3",
-                  "title": "Service Instance Latency",
-                  "height": "200",
-                  "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": "1048576"
-                },
-                {
-                  "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, instance_jvm_normal_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": "ChartBar",
-                  "metricName": "instance_jvm_young_gc_count, instance_jvm_old_gc_count, instance_jvm_normal_gc_count"
-                },
-                {
-                  "width": 3,
-                  "title": "JVM Thread Count (Java Service)",
-                  "height": "250",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "instance_jvm_thread_live_count, instance_jvm_thread_daemon_count, instance_jvm_thread_peak_count"
-                },
-                {
-                  "width": 3,
-                  "title": "JVM Thread State Count (Java Service)",
-                  "height": "250",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "instance_jvm_thread_runnable_state_thread_count, instance_jvm_thread_blocked_state_thread_count, instance_jvm_thread_waiting_state_thread_count, instance_jvm_thread_timed_waiting_state_thread_count",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartBar"
-                },
-                {
-                  "width": 3,
-                  "title": "JVM Class Count (Java Service)",
-                  "height": "250",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "instance_jvm_class_loaded_class_count, instance_jvm_class_total_unloaded_class_count, instance_jvm_class_total_loaded_class_count",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartArea"
-                },
-                {
-                  "width": 3,
-                  "title": "Thread Pool(Java Service)",
-                  "height": "250",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "meter_thread_pool",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine"
-                },      
-                {
-                  "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": "ChartBar"
-                },
-                {
-                  "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",
-                  "aggregation": "/",
-                  "aggregationNum": "1048576"
-                },
-                {
-                  "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"
-                },
-                 {
-                   "width": "3",
-                   "title": "Database Connection Pool",
-                   "height": "250",
-                   "entityType": "ServiceInstance",
-                   "independentSelector": false,
-                   "metricType": "LABELED_VALUE",
-                   "metricName": "meter_datasource",
-                   "queryMetricType": "readLabeledMetricsValues",
-                   "chartType": "ChartLine"
-                }
-              ]
-            },
-            {
-              "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 / PPM",
-                  "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
-                },
-                {
-                  "width": "4",
-                  "title": "Slow Endpoints in Current Service",
-                  "height": "280",
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "queryMetricType": "sortMetrics",
-                  "chartType": "ChartSlow",
-                  "metricName": "endpoint_resp_time",
-                  "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": 4,
-                  "title": "Endpoint Load",
-                  "height": 200,
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "endpoint_cpm",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine"
-                },
-                {
-                  "width": 4,
-                  "title": "Endpoint Avg Response Time",
-                  "height": 200,
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "endpoint_resp_time",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "ms"
-                },
-                {
-                  "width": 4,
-                  "title": "Endpoint Response Time Percentile",
-                  "height": 200,
-                  "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": 4,
-                  "title": "Endpoint Successful Rate",
-                  "height": 200,
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "endpoint_sla",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "%",
-                  "aggregation": "/",
-                  "aggregationNum": "100"
-                },
-                {
-                  "width": 4,
-                  "title": "Message Queue Consuming Count",
-                  "height": "200",
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "endpoint_mq_consume_count",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "",
-                  "tips": "The number of consumed messages."
-                },
-                {
-                  "width": 4,
-                  "title": "Message Queue Avg Consuming Latency",
-                  "height": "200",
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "endpoint_mq_consume_latency",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "ms",
-                  "tips": "The avg latency of message consuming. Latency = timestamp(received) - timestamp(producing)"
-                }
-              ]
-            }
-          ]
-        }
-      ]
-    # 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-starter/src/main/resources/ui-initialized-templates/browser.yml b/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser.yml
deleted file mode 100644
index 26cc902..0000000
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser.yml
+++ /dev/null
@@ -1,366 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# UI templates initialized file includes the default template when the SkyWalking OAP starts up at the first time.
-#
-# 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: "Web Browser"
-    # 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": "Web Browser",
-          "type": "browser",
-          "children": [
-            {
-              "name": "Web App",
-              "children": [
-                {
-                  "width": "4",
-                  "title": "All Browsers App Load (CPM - calls per minute)",
-                  "height": "250",
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "sortMetrics",
-                  "chartType": "ChartSlow",
-                  "metricName": "browser_app_pv"
-                },
-                {
-                  "width": "4",
-                  "title": "All Browsers App Error Rate",
-                  "height": "250",
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "sortMetrics",
-                  "chartType": "ChartSlow",
-                  "metricName": "browser_app_error_rate",
-                  "unit": "%",
-                  "aggregation": "/",
-                  "aggregationNum": "100"
-                },
-                {
-                  "width": "4",
-                  "title": "All Browsers App Error Count",
-                  "height": "250",
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "sortMetrics",
-                  "chartType": "ChartSlow",
-                  "metricName": "browser_app_error_sum"
-                },
-                {
-                  "width": "4",
-                  "title": "App Load (CPM - calls per minute)",
-                  "height": "250",
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "browser_app_pv"
-                },
-                {
-                  "width": "4",
-                  "title": "App Error Rate",
-                  "height": "250",
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "browser_app_error_rate",
-                  "aggregation": "/",
-                  "aggregationNum": "100",
-                  "unit": "%"
-                },
-                {
-                  "width": "4",
-                  "title": "App Error Count",
-                  "height": "250",
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartBar",
-                  "metricName": "browser_app_error_sum"
-                },
-                {
-                  "width": "4",
-                  "title": "Load of Versions In The Selected App (CPM - calls per minute)",
-                  "height": "250",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "sortMetrics",
-                  "chartType": "ChartSlow",
-                  "metricName": "browser_app_single_version_pv",
-                  "parentService": true
-                },
-                {
-                  "width": "4",
-                  "title": "Error Rate of Versions In The Selected App",
-                  "height": "250",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "sortMetrics",
-                  "chartType": "ChartSlow",
-                  "metricName": "browser_app_single_version_error_rate",
-                  "parentService": true,
-                  "unit": "%",
-                  "aggregation": "/",
-                  "aggregationNum": "100"
-                },
-                {
-                  "width": "4",
-                  "title": "Error Count of Versions In The Selected App",
-                  "height": "250",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "sortMetrics",
-                  "chartType": "ChartSlow",
-                  "metricName": "browser_app_single_version_error_sum",
-                  "parentService": true
-                },
-                {
-                  "width": "4",
-                  "title": "Load of The Selected Version (CPM - calls per minute) ",
-                  "height": "250",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "browser_app_single_version_pv"
-                },
-                {
-                  "width": "4",
-                  "title": "Error Rate  of The Selected Version",
-                  "height": "250",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "browser_app_single_version_error_rate",
-                  "aggregation": "/",
-                  "aggregationNum": "100"
-                },
-                {
-                  "width": "4",
-                  "title": "Error Count  of The Selected Version",
-                  "height": "250",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartBar",
-                  "metricName": "browser_app_single_version_error_sum"
-                }
-              ]
-            },
-            {
-              "name": "Pages",
-              "children": [
-                {
-                  "width": "4",
-                  "title": "Top Hot Pages  (CPM - calls per minute)",
-                  "height": "250",
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "sortMetrics",
-                  "chartType": "ChartSlow",
-                  "metricName": "browser_app_page_pv",
-                  "parentService": true
-                },
-                {
-                  "width": "4",
-                  "title": "Top Unstable Pages / Error Rate",
-                  "height": "250",
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "sortMetrics",
-                  "chartType": "ChartSlow",
-                  "metricName": "browser_app_page_error_rate",
-                  "unit": "%",
-                  "parentService": true,
-                  "aggregation": "/",
-                  "aggregationNum": "100"
-                },
-                {
-                  "width": "4",
-                  "title": "Top Unstable Pages / Error Count",
-                  "height": "250",
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "sortMetrics",
-                  "chartType": "ChartSlow",
-                  "metricName": "browser_app_page_error_sum",
-                  "parentService": true
-                },
-                {
-                  "width": "6",
-                  "title": "Page Error Count Layout",
-                  "height": 350,
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartBar",
-                  "metricName": "browser_app_page_ajax_error_sum,browser_app_page_resource_error_sum,browser_app_page_js_error_sum,browser_app_page_unknown_error_sum"
-                },
-                {
-                  "width": "6",
-                  "title": "Page Performance",
-                  "height": 350,
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "browser_app_page_redirect_avg,browser_app_page_dns_avg,browser_app_page_ttfb_avg,browser_app_page_tcp_avg,browser_app_page_trans_avg,browser_app_page_dom_analysis_avg,browser_app_page_fpt_avg,browser_app_page_dom_ready_avg,browser_app_page_load_page_avg,browser_app_page_res_avg,browser_app_page_ssl_avg,browser_app_page_ttl_avg,browser_app_page_first_pack_avg,browser_app_page_fmp_avg",
-                  "unit": "ms"
-                },
-                {
-                  "width": "4",
-                  "title": "Page FPT Latency",
-                  "height": "250",
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "browser_app_page_fpt_percentile",
-                  "unit": "ms",
-                  "metricLabels": "P50, P75, P90, P95, P99",
-                  "labelsIndex": "0,1,2,3,4"
-                },
-                {
-                  "width": "4",
-                  "title": "Page TTL Latency",
-                  "height": "250",
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "browser_app_page_ttl_percentile",
-                  "metricLabels": "P50, P75, P90, P95, P99",
-                  "labelsIndex": "0,1,2,3,4",
-                  "unit": "ms"
-                },
-                {
-                  "width": "4",
-                  "title": "Page DOM Ready Latency",
-                  "height": "250",
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "browser_app_page_dom_ready_percentile",
-                  "metricLabels": "P50, P75, P90, P95, P99",
-                  "labelsIndex": "0,1,2,3,4",
-                  "unit": "ms"
-                },
-                {
-                  "width": "4",
-                  "title": "Page Load Latency",
-                  "height": "250",
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "browser_app_page_load_page_percentile",
-                  "unit": "ms",
-                  "metricLabels": "P50, P75, P90, P95, P99",
-                  "labelsIndex": "0,1,2,3,4"
-                },
-                {
-                  "width": "4",
-                  "title": "Page First Pack Latency",
-                  "height": "250",
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "browser_app_page_first_pack_percentile",
-                  "metricLabels": "P50, P75, P90, P95, P99",
-                  "labelsIndex": "0,1,2,3,4",
-                  "unit": "ms"
-                },
-                {
-                  "width": "4",
-                  "title": "Page FMP Latency",
-                  "height": "250",
-                  "entityType": "Endpoint",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "sortOrder": "DES",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "browser_app_page_fmp_percentile",
-                  "metricLabels": "P50, P75, P90, P95, P99",
-                  "labelsIndex": "0,1,2,3,4",
-                  "unit": "ms"
-                }
-              ]
-            }
-          ]
-        }
-      ]
-    # 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
\ No newline at end of file
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-app.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-app.json
new file mode 100644
index 0000000..b6e6a13
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-app.json
@@ -0,0 +1,320 @@
+/**
+ * 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-app",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "12",
+          "type": "Tab",
+          "widget": {
+            "title": "Title"
+          },
+          "graph": {},
+          "standard": {},
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "activedTabIndex": 2,
+          "children": [
+            {
+              "name": "Overview",
+              "children": [
+                {
+                  "x": 16,
+                  "y": 16,
+                  "w": 8,
+                  "h": 16,
+                  "i": "2",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Error Rate of Versions In The Selected App"
+                  },
+                  "graph": {
+                    "type": "TopList",
+                    "topN": "10"
+                  },
+                  "standard": {
+                    "divide": 100,
+                    "unit": "%"
+                  },
+                  "metrics": [
+                    "browser_app_single_version_error_rate"
+                  ],
+                  "metricTypes": [
+                    "sortMetrics"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 32,
+                  "w": 8,
+                  "h": 16,
+                  "i": "3",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Load of Versions In The Selected App (CPM - calls per minute)"
+                  },
+                  "graph": {
+                    "type": "TopList",
+                    "topN": "10"
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "browser_app_single_version_pv"
+                  ],
+                  "metricTypes": [
+                    "sortMetrics"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 16,
+                  "w": 8,
+                  "h": 16,
+                  "i": "5",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "App Error Count"
+                  },
+                  "graph": {
+                    "type": "Bar",
+                    "showBackground": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "browser_app_error_sum"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 8,
+                  "h": 16,
+                  "i": "7",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "All Browsers App Load (CPM - calls per minute)"
+                  },
+                  "graph": {
+                    "type": "TopList",
+                    "topN": "10"
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "browser_app_pv"
+                  ],
+                  "metricTypes": [
+                    "sortMetrics"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 0,
+                  "w": 8,
+                  "h": 16,
+                  "i": "8",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "All Browsers App Error Count"
+                  },
+                  "graph": {
+                    "type": "TopList",
+                    "topN": "10"
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "browser_app_error_sum"
+                  ],
+                  "metricTypes": [
+                    "sortMetrics"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 16,
+                  "y": 0,
+                  "w": 8,
+                  "h": 16,
+                  "i": "9",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "App Load (CPM - calls per minute)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "browser_app_pv"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 32,
+                  "w": 8,
+                  "h": 16,
+                  "i": "10",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "All Browsers App Error Rate"
+                  },
+                  "graph": {
+                    "type": "TopList",
+                    "topN": "10"
+                  },
+                  "standard": {
+                    "divide": 100,
+                    "unit": "%"
+                  },
+                  "metrics": [
+                    "browser_app_error_rate"
+                  ],
+                  "metricTypes": [
+                    "sortMetrics"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 16,
+                  "w": 8,
+                  "h": 16,
+                  "i": "11",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "App Error Rate"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "divide": 100,
+                    "unit": "%"
+                  },
+                  "metrics": [
+                    "browser_app_error_rate"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Version",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 48,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {
+                    "type": "InstanceList",
+                    "dashboardName": "",
+                    "fontSize": 12
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "browser_app_single_version_pv"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Page",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {
+                    "type": "EndpointList",
+                    "dashboardName": "Browser-Page",
+                    "fontSize": 12,
+                    "showXAxis": false,
+                    "showYAxis": false
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "browser_app_page_pv"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            }
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "BROWSER",
+      "entity": "Service",
+      "name": "Browser-App",
+      "id": "Browser-app",
+      "isRoot": false
+    }
+  }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-page.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-page.json
new file mode 100644
index 0000000..0571033
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-page.json
@@ -0,0 +1,385 @@
+/**
+ * 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-Page",
+    "configuration": {
+      "children": [
+        {
+          "x": 16,
+          "y": 45,
+          "w": 8,
+          "h": 15,
+          "i": "0",
+          "type": "Widget",
+          "widget": {
+            "title": "Page FMP Latency"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 1,
+            "unit": "ms",
+            "metricLabels": "P50,P75,P90,P95,P99",
+            "labelsIndex": "0,1,2,3,4"
+          },
+          "metrics": [
+            "browser_app_page_fmp_percentile"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 8,
+          "y": 45,
+          "w": 8,
+          "h": 15,
+          "i": "1",
+          "type": "Widget",
+          "widget": {
+            "title": "Page First Pack Latency"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 1,
+            "unit": "ms",
+            "metricLabels": "P50,P75,P90,P95,P99",
+            "labelsIndex": "0,1,2,3,4"
+          },
+          "metrics": [
+            "browser_app_page_first_pack_percentile"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 30,
+          "w": 8,
+          "h": 15,
+          "i": "2",
+          "type": "Widget",
+          "widget": {
+            "title": "Page FPT Latency"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "unit": "ms",
+            "metricLabels": "P50, P75, P90, P95, P99"
+          },
+          "metrics": [
+            "browser_app_page_fpt_percentile"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 16,
+          "y": 30,
+          "w": 8,
+          "h": 15,
+          "i": "3",
+          "type": "Widget",
+          "widget": {
+            "title": "Page DOM Ready Latency"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 1,
+            "unit": "ms",
+            "metricLabels": "P50,P75,P90,P95,P99",
+            "labelsIndex": "0,1,2,3,4"
+          },
+          "metrics": [
+            "browser_app_page_dom_ready_percentile"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 8,
+          "y": 30,
+          "w": 8,
+          "h": 15,
+          "i": "4",
+          "type": "Widget",
+          "widget": {
+            "title": "Page TTL Latency"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 1,
+            "unit": "ms",
+            "metricLabels": "P50,P75,P90,P95,P99",
+            "labelsIndex": "0,1,2,3,4"
+          },
+          "metrics": [
+            "browser_app_page_ttl_percentile"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 0,
+          "w": 8,
+          "h": 15,
+          "i": "5",
+          "type": "Widget",
+          "widget": {
+            "title": "Top Hot Pages  (CPM - calls per minute)"
+          },
+          "graph": {
+            "type": "TopList",
+            "topN": "10"
+          },
+          "standard": {
+            "divide": 1,
+            "unit": "ms",
+            "metricLabels": "P50,P75,P90,P95,P99",
+            "labelsIndex": "0,1,2,3,4"
+          },
+          "metrics": [
+            "browser_app_page_pv"
+          ],
+          "metricTypes": [
+            "sortMetrics"
+          ],
+          "moved": false
+        },
+        {
+          "x": 16,
+          "y": 0,
+          "w": 8,
+          "h": 15,
+          "i": "6",
+          "type": "Widget",
+          "widget": {
+            "title": "Top Unstable Pages / Error Count"
+          },
+          "graph": {
+            "type": "TopList",
+            "topN": "10"
+          },
+          "standard": {
+            "divide": 1,
+            "unit": "ms",
+            "metricLabels": "P50,P75,P90,P95,P99",
+            "labelsIndex": "0,1,2,3,4"
+          },
+          "metrics": [
+            "browser_app_page_error_sum"
+          ],
+          "metricTypes": [
+            "sortMetrics"
+          ],
+          "moved": false
+        },
+        {
+          "x": 8,
+          "y": 0,
+          "w": 8,
+          "h": 15,
+          "i": "7",
+          "type": "Widget",
+          "widget": {
+            "title": "Top Unstable Pages / Error Rate"
+          },
+          "graph": {
+            "type": "TopList",
+            "topN": "10"
+          },
+          "standard": {
+            "divide": 100,
+            "unit": "%"
+          },
+          "metrics": [
+            "browser_app_page_error_rate"
+          ],
+          "metricTypes": [
+            "sortMetrics"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 45,
+          "w": 8,
+          "h": 15,
+          "i": "8",
+          "type": "Widget",
+          "widget": {
+            "title": "Page Load Latency"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 1,
+            "unit": "ms",
+            "metricLabels": "P50,P75,P90,P95,P99",
+            "labelsIndex": "0,1,2,3,4"
+          },
+          "metrics": [
+            "browser_app_page_load_page_percentile"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 12,
+          "y": 15,
+          "w": 12,
+          "h": 15,
+          "i": "9",
+          "type": "Widget",
+          "widget": {
+            "title": "Page Performance"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 1,
+            "unit": "ms"
+          },
+          "metrics": [
+            "browser_app_page_res_avg",
+            "browser_app_page_load_page_avg",
+            "browser_app_page_trans_avg",
+            "browser_app_page_fpt_avg",
+            "browser_app_page_dom_analysis_avg",
+            "browser_app_page_dns_avg",
+            "browser_app_page_dom_ready_avg",
+            "browser_app_page_redirect_avg",
+            "browser_app_page_tcp_avg",
+            "browser_app_page_ttfb_avg"
+          ],
+          "metricTypes": [
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 15,
+          "w": 12,
+          "h": 15,
+          "i": "10",
+          "type": "Widget",
+          "widget": {
+            "title": "Page Error Count Layout"
+          },
+          "graph": {
+            "type": "Bar",
+            "showBackground": true
+          },
+          "standard": {
+            "divide": 1,
+            "unit": "ms",
+            "metricLabels": "P50,P75,P90,P95,P99",
+            "labelsIndex": "0,1,2,3,4"
+          },
+          "metrics": [
+            "browser_app_page_resource_error_sum",
+            "browser_app_page_js_error_sum",
+            "browser_app_page_unknown_error_sum",
+            "browser_app_page_ajax_error_sum"
+          ],
+          "metricTypes": [
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues"
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "BROWSER",
+      "entity": "Endpoint",
+      "name": "Browser-Page",
+      "id": "Browser-Page",
+      "isRoot": false
+    }
+  }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-version.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-version.json
new file mode 100644
index 0000000..9dcae2d
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-version.json
@@ -0,0 +1,117 @@
+/**
+ * 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-Version",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 24,
+          "w": 24,
+          "h": 12,
+          "i": "0",
+          "type": "Widget",
+          "widget": {
+            "title": "Error Count  of The Selected Version"
+          },
+          "graph": {
+            "type": "Bar",
+            "showBackground": true
+          },
+          "standard": {
+            "divide": 100,
+            "unit": "%"
+          },
+          "metrics": [
+            "browser_app_single_version_error_sum"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 12,
+          "w": 24,
+          "h": 12,
+          "i": "1",
+          "type": "Widget",
+          "widget": {
+            "title": "Error Rate  of The Selected Version"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 100,
+            "unit": "%"
+          },
+          "metrics": [
+            "browser_app_single_version_error_rate"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 12,
+          "i": "2",
+          "type": "Widget",
+          "widget": {
+            "title": "Load of The Selected Version (CPM - calls per minute) "
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 100,
+            "unit": "%"
+          },
+          "metrics": [
+            "browser_app_single_version_pv"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "BROWSER",
+      "entity": "ServiceInstance",
+      "name": "Browser-Version",
+      "id": "Browser-Version",
+      "isRoot": false
+    }
+  }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/database.yml b/oap-server/server-starter/src/main/resources/ui-initialized-templates/database.yml
deleted file mode 100644
index c6deec2..0000000
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/database.yml
+++ /dev/null
@@ -1,142 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# UI templates initialized file includes the default template when the SkyWalking OAP starts up at the first time.
-#
-# 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: "Database"
-    # 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": "Database",
-          "type": "database",
-          "children": [
-            {
-              "name": "Database",
-              "children": [
-                {
-                  "width": 3,
-                  "title": "Database Avg Response Time",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "database_access_resp_time",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "ms"
-                },
-                {
-                  "width": 3,
-                  "title": "Database Access Successful Rate",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "database_access_sla",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "%",
-                  "aggregation": "/",
-                  "aggregationNum": "100"
-                },
-                {
-                  "width": 3,
-                  "title": "Database Traffic",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "database_access_cpm",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "CPM - calls per minute"
-                },
-                {
-                  "width": 3,
-                  "title": "Database Access Latency Percentile",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "database_access_percentile",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricLabels": "P50, P75, P90, P95, P99",
-                  "labelsIndex": "0, 1, 2, 3, 4",
-                  "unit": "ms"
-                },
-                {
-                  "width": "6",
-                  "title": "Slow Statements",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "SAMPLED_RECORD",
-                  "metricName": "top_n_database_statement",
-                  "queryMetricType": "readSampledRecords",
-                  "chartType": "ChartSlow",
-                  "parentService": true,
-                  "sortOrder": "DES",
-                  "unit": "ms"
-                },
-                {
-                  "width": 3,
-                  "title": "All Database Loads",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "database_access_cpm",
-                  "queryMetricType": "sortMetrics",
-                  "chartType": "ChartSlow",
-                  "parentService": false,
-                  "sortOrder": "DES",
-                  "unit": "CPM - calls per minute"
-                },
-                {
-                  "width": 3,
-                  "title": "Un-Health Databases (Successful Rate)",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "database_access_sla",
-                  "queryMetricType": "sortMetrics",
-                  "chartType": "ChartSlow",
-                  "parentService": false,
-                  "sortOrder": "ASC",
-                  "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
\ No newline at end of file
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/event.yml b/oap-server/server-starter/src/main/resources/ui-initialized-templates/event.yml
deleted file mode 100644
index 45e8032..0000000
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/event.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-templates:
-  - name: "Event"
-    type: "DASHBOARD"
-    configuration: |-
-      [
-        {
-          "name": "Event",
-          "type": "service",
-          "children": [
-            {
-              "name": "Global",
-              "children": [
-                {
-                  "width": "3",
-                  "title": "Event Count by Severity",
-                  "height": "280",
-                  "entityType": "All",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "event_total,event_normal_count,event_error_count",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine"
-                },
-                {
-                  "width": "3",
-                  "title": "Event Count by Lifecycle",
-                  "height": "280",
-                  "entityType": "All",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "event_start_count,event_shutdown_count",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine"
-                }
-              ]
-            }
-          ]
-        }
-      ]
-    activated: true
-    disabled: false
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-endpoint-relation.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-endpoint-relation.json
new file mode 100644
index 0000000..f2338ec
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-endpoint-relation.json
@@ -0,0 +1,155 @@
+/**
+ * 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": "General-Endpoint-Relation",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 36,
+          "w": 24,
+          "h": 12,
+          "i": "0",
+          "type": "Widget",
+          "widget": {
+            "title": "Service Response Time Percentile"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 100,
+            "unit": "%",
+            "metricLabels": "P50, P75, P90, P95, P99"
+          },
+          "metrics": [
+            "endpoint_relation_percentile"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 24,
+          "w": 24,
+          "h": 12,
+          "i": "1",
+          "type": "Widget",
+          "widget": {
+            "title": "Successful Rate"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 100,
+            "unit": "%"
+          },
+          "metrics": [
+            "endpoint_relation_sla"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 12,
+          "w": 24,
+          "h": 12,
+          "i": "2",
+          "type": "Widget",
+          "widget": {
+            "title": "Load"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 100,
+            "unit": "%",
+            "metricLabels": "P50, P75, P90, P95, P99",
+            "labelsIndex": "0, 1, 2, 3, 4"
+          },
+          "metrics": [
+            "endpoint_relation_cpm"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 12,
+          "i": "3",
+          "type": "Widget",
+          "widget": {
+            "title": "Response Time"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 100,
+            "unit": "%",
+            "metricLabels": "P50, P75, P90, P95, P99",
+            "labelsIndex": "0, 1, 2, 3, 4"
+          },
+          "metrics": [
+            "endpoint_relation_resp_time"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "GENERAL",
+      "entity": "EndpointRelation",
+      "name": "General-Endpoint-Relation",
+      "id": "General-Endpoint-Relation"
+    }
+  }
+]
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
new file mode 100644
index 0000000..e2e3de7
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-endpoint.json
@@ -0,0 +1,394 @@
+/**
+ * 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": "General-Endpoint",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "0",
+          "type": "Tab",
+          "widget": {
+            "title": "Title"
+          },
+          "graph": {},
+          "standard": {},
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "activedTabIndex": 1,
+          "children": [
+            {
+              "name": "Overview",
+              "children": [
+                {
+                  "x": 16,
+                  "y": 0,
+                  "w": 8,
+                  "h": 13,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Successful Rate in Current Service"
+                  },
+                  "graph": {
+                    "type": "TopList",
+                    "topN": "10"
+                  },
+                  "standard": {
+                    "unit": "%",
+                    "divide": "100"
+                  },
+                  "metrics": [
+                    "endpoint_sla"
+                  ],
+                  "metricTypes": [
+                    "sortMetrics"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 0,
+                  "w": 8,
+                  "h": 13,
+                  "i": "1",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Slow Endpoints in Current Service"
+                  },
+                  "graph": {
+                    "type": "TopList",
+                    "topN": "10"
+                  },
+                  "standard": {
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "endpoint_resp_time"
+                  ],
+                  "metricTypes": [
+                    "sortMetrics"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 8,
+                  "h": 13,
+                  "i": "2",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Endpoint Load in Current Service",
+                    "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
+                  },
+                  "graph": {
+                    "type": "TopList",
+                    "topN": "10"
+                  },
+                  "standard": {
+                    "unit": "CPM"
+                  },
+                  "metrics": [
+                    "endpoint_cpm"
+                  ],
+                  "metricTypes": [
+                    "sortMetrics"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 16,
+                  "y": 13,
+                  "w": 8,
+                  "h": 13,
+                  "i": "3",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Endpoint Response Time Percentile"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms",
+                    "metricLabels": "P50, P75, P90, P95, P99",
+                    "labelsIndex": "0,1,2,3,4"
+                  },
+                  "metrics": [
+                    "endpoint_percentile"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 13,
+                  "w": 8,
+                  "h": 13,
+                  "i": "4",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Endpoint Avg Response Time"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "endpoint_resp_time"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "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,
+                  "w": 8,
+                  "h": 13,
+                  "i": "7",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Endpoint Successful Rate"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "%",
+                    "divide": "100"
+                  },
+                  "metrics": [
+                    "endpoint_sla"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 13,
+                  "w": 8,
+                  "h": 13,
+                  "i": "8",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Endpoint Load"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "endpoint_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Topology",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Topology",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {
+                    "showDepth": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false,
+                  "linkDashboard": "Endpoint-Relation",
+                  "nodeDashboard": [],
+                  "linkServerMetrics": [],
+                  "linkClientMetrics": [],
+                  "nodeMetrics": [],
+                  "legend": []
+                }
+              ]
+            },
+            {
+              "name": "Trace",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Trace",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {},
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Log",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Log",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {},
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            }
+          ],
+          "moved": false
+        }
+      ],
+      "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-relation.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance-relation.json
new file mode 100644
index 0000000..88b91ff
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance-relation.json
@@ -0,0 +1,156 @@
+/**
+ * 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": "General-Instance-Relation",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 36,
+          "w": 24,
+          "h": 12,
+          "i": "1",
+          "type": "Widget",
+          "widget": {
+            "title": "Response Time Percentile"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 100,
+            "unit": "%",
+            "metricLabels": "P50, P75, P90, P95, P99"
+          },
+          "metrics": [
+            "service_instance_relation_client_percentile"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 24,
+          "w": 24,
+          "h": 12,
+          "i": "2",
+          "type": "Widget",
+          "widget": {
+            "title": "Successful Rate"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 100,
+            "unit": "%"
+          },
+          "metrics": [
+            "service_instance_relation_client_call_sla"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 12,
+          "w": 24,
+          "h": 12,
+          "i": "3",
+          "type": "Widget",
+          "widget": {
+            "title": "Load"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 100,
+            "unit": "%",
+            "metricLabels": "P50, P75, P90, P95, P99",
+            "labelsIndex": "0,1,2,3,4"
+          },
+          "metrics": [
+            "service_instance_relation_client_cpm"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 12,
+          "i": "4",
+          "type": "Widget",
+          "widget": {
+            "title": "Response Time"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 100,
+            "unit": "%",
+            "metricLabels": "P50, P75, P90, P95, P99",
+            "labelsIndex": "0,1,2,3,4"
+          },
+          "metrics": [
+            "service_instance_relation_client_resp_time"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "GENERAL",
+      "entity": "ServiceInstanceRelation",
+      "name": "General-Instance-Relation",
+      "id": "General-Instance-Relation",
+      "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
new file mode 100644
index 0000000..f1361c6
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance.json
@@ -0,0 +1,618 @@
+/**
+ * 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": "General-Instance",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "0",
+          "type": "Tab",
+          "widget": {
+            "title": "Title"
+          },
+          "graph": {},
+          "standard": {
+            "unit": "%"
+          },
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "activedTabIndex": 2,
+          "children": [
+            {
+              "name": "Overview",
+              "children": [
+                {
+                  "x": 18,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Instance Latency"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "service_instance_resp_time"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "1",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Instance Successful Rate",
+                    "tips": ""
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "%",
+                    "divide": "100"
+                  },
+                  "metrics": [
+                    "service_instance_sla"
+                  ],
+                  "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
+                },
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "3",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Instance Load",
+                    "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "CPM"
+                  },
+                  "metrics": [
+                    "service_instance_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 13,
+                  "w": 6,
+                  "h": 13,
+                  "i": "10",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Database Connection Pool"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "meter_datasource"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Trace",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Trace",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {},
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Log",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Log",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {},
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "JVM",
+              "children": [
+                {
+                  "x": 6,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "5",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "JVM Memory (Java Service)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "MB",
+                    "divide": "1048576"
+                  },
+                  "metrics": [
+                    "instance_jvm_memory_noheap_max",
+                    "instance_jvm_memory_noheap",
+                    "instance_jvm_memory_heap",
+                    "instance_jvm_memory_heap_max"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 18,
+                  "y": 13,
+                  "w": 6,
+                  "h": 13,
+                  "i": "16",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Thread Pool"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "meter_thread_pool"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 13,
+                  "w": 6,
+                  "h": 13,
+                  "i": "12",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "JVM Thread Count"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "instance_jvm_thread_live_count",
+                    "instance_jvm_thread_daemon_count",
+                    "instance_jvm_thread_peak_count"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 6,
+                  "y": 13,
+                  "w": 6,
+                  "h": 13,
+                  "i": "13",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "JVM Thread State Count"
+                  },
+                  "graph": {
+                    "type": "Bar",
+                    "showBackground": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "instance_jvm_thread_timed_waiting_state_thread_count",
+                    "instance_jvm_thread_blocked_state_thread_count",
+                    "instance_jvm_thread_waiting_state_thread_count",
+                    "instance_jvm_thread_runnable_state_thread_count"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "14",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "JVM CPU"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "%"
+                  },
+                  "metrics": [
+                    "instance_jvm_cpu"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 13,
+                  "w": 6,
+                  "h": 13,
+                  "i": "15",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "JVM Class Count"
+                  },
+                  "graph": {
+                    "type": "Area",
+                    "opacity": 0.4,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "instance_jvm_class_loaded_class_count",
+                    "instance_jvm_class_total_loaded_class_count",
+                    "instance_jvm_class_total_unloaded_class_count"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "6",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "JVM GC Time"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "instance_jvm_young_gc_time",
+                    "instance_jvm_old_gc_time",
+                    "instance_jvm_normal_gc_time"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 18,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "7",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "JVM GC Count"
+                  },
+                  "graph": {
+                    "type": "Bar",
+                    "showBackground": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "instance_jvm_young_gc_count",
+                    "instance_jvm_old_gc_count",
+                    "instance_jvm_normal_gc_count"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": ".NET",
+              "children": [
+                {
+                  "x": 18,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "4",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "CLR Thread"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "instance_clr_available_worker_threads",
+                    "instance_clr_available_completion_port_threads",
+                    "instance_clr_max_completion_port_threads"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "8",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "CLR Heap Memory"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "MB",
+                    "divide": "1048576"
+                  },
+                  "metrics": [
+                    "instance_clr_heap_memory"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 6,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "9",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "CLR GC"
+                  },
+                  "graph": {
+                    "type": "Bar",
+                    "showBackground": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "instance_clr_gen1_collect_count",
+                    "instance_clr_gen0_collect_count",
+                    "instance_clr_gen2_collect_count"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "11",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "CLR CPU  (.NET Service)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "%"
+                  },
+                  "metrics": [
+                    "instance_clr_cpu"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            }
+          ],
+          "moved": false
+        }
+      ],
+      "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
new file mode 100644
index 0000000..20b75b7
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-root.json
@@ -0,0 +1,163 @@
+/**
+ * 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": "General-Root",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "1",
+          "type": "Tab",
+          "widget": {
+            "title": "Title"
+          },
+          "graph": {},
+          "standard": {},
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "activedTabIndex": 1,
+          "children": [
+            {
+              "name": "Services",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 48,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": ""
+                  },
+                  "graph": {
+                    "type": "ServiceList",
+                    "dashboardName": "General-Service",
+                    "fontSize": 12,
+                    "showXAxis": false,
+                    "showYAxis": false,
+                    "showGroup": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "service_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Topology",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 48,
+                  "i": "0",
+                  "type": "Topology",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {
+                    "showDepth": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false,
+                  "linkDashboard": "General-Service-Relation",
+                  "nodeDashboard": [
+                    {
+                      "scope": "Service",
+                      "dashboard": "General-Service"
+                    },
+                    {
+                      "scope": "ServiceInstance",
+                      "dashboard": "General-Instance"
+                    },
+                    {
+                      "scope": "Endpoint",
+                      "dashboard": "General-Endpoint"
+                    }
+                  ],
+                  "linkServerMetrics": [
+                    "service_relation_server_resp_time",
+                    "service_relation_server_cpm"
+                  ],
+                  "linkClientMetrics": [
+                    "service_relation_client_cpm",
+                    "service_relation_client_resp_time"
+                  ],
+                  "nodeMetrics": [],
+                  "legend": []
+                }
+              ]
+            },
+            {
+              "name": "Trace",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Trace",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {},
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            }
+          ],
+          "moved": false
+        }
+      ],
+      "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-relation.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-service-relation.json
new file mode 100644
index 0000000..e25b7e6
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-service-relation.json
@@ -0,0 +1,334 @@
+/**
+ * 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": "General-Service-Relation",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "0",
+          "type": "Tab",
+          "widget": {
+            "title": "Title"
+          },
+          "graph": {},
+          "standard": {},
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "activedTabIndex": 1,
+          "children": [
+            {
+              "name": "Overview",
+              "children": [
+                {
+                  "x": 12,
+                  "y": 24,
+                  "w": 12,
+                  "h": 12,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Load (Server)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "CPM - Calls Per Minute"
+                  },
+                  "metrics": [
+                    "service_relation_server_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 24,
+                  "w": 12,
+                  "h": 12,
+                  "i": "1",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Successful Rate (Server)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "%",
+                    "divide": 100
+                  },
+                  "metrics": [
+                    "service_relation_server_call_sla"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 0,
+                  "w": 12,
+                  "h": 12,
+                  "i": "2",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Response Time Percentile (Server)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms",
+                    "metricLabels": "P50, P75, P90, P95, P99",
+                    "labelsIndex": "0,1,2,3,4"
+                  },
+                  "metrics": [
+                    "service_relation_server_percentile"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 12,
+                  "h": 12,
+                  "i": "3",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Response Time (Server)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "service_relation_server_resp_time"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 12,
+                  "w": 12,
+                  "h": 12,
+                  "i": "4",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Response Time (Client)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "service_relation_client_resp_time"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 12,
+                  "w": 12,
+                  "h": 12,
+                  "i": "5",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Response Time Percentile (Client)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms",
+                    "metricLabels": "P50, P75, P90, P95, P99",
+                    "labelsIndex": "0,1,2,3,4"
+                  },
+                  "metrics": [
+                    "service_relation_client_percentile"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 36,
+                  "w": 12,
+                  "h": 12,
+                  "i": "6",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Successful Rate (Client)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "divide": 100,
+                    "unit": "%",
+                    "metricLabels": "",
+                    "labelsIndex": ""
+                  },
+                  "metrics": [
+                    "service_relation_client_call_sla"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 36,
+                  "w": 12,
+                  "h": 12,
+                  "i": "7",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Load (Client)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "divide": 1,
+                    "unit": "CPM - Calls Per Minute",
+                    "metricLabels": "",
+                    "labelsIndex": ""
+                  },
+                  "metrics": [
+                    "service_relation_client_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Topology",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Topology",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {
+                    "showDepth": true
+                  },
+                  "standard": {
+                    "divide": 1,
+                    "unit": "CPM - Calls Per Minute",
+                    "metricLabels": "",
+                    "labelsIndex": ""
+                  },
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            }
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "GENERAL",
+      "entity": "ServiceRelation",
+      "name": "General-Service-Relation",
+      "id": "General-Service-Relation",
+      "isRoot": false
+    }
+  }
+]
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
new file mode 100644
index 0000000..cb998af
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-service.json
@@ -0,0 +1,537 @@
+/**
+ * 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": "General-Service",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "4",
+          "type": "Tab",
+          "widget": {
+            "title": "Title"
+          },
+          "graph": {},
+          "standard": {},
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "activedTabIndex": 3,
+          "children": [
+            {
+              "name": "Overview",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 7,
+                  "h": 5,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Apdex"
+                  },
+                  "graph": {
+                    "type": "Card",
+                    "fontSize": 14,
+                    "textAlign": "center",
+                    "showUint": true
+                  },
+                  "standard": {
+                    "divide": "10000"
+                  },
+                  "metrics": [
+                    "service_apdex"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValue"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 7,
+                  "y": 0,
+                  "w": 9,
+                  "h": 5,
+                  "i": "1",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Successful Rate"
+                  },
+                  "graph": {
+                    "type": "Card",
+                    "fontSize": 14,
+                    "textAlign": "center",
+                    "showUint": true
+                  },
+                  "standard": {
+                    "0": "1",
+                    "1": "0",
+                    "2": "0",
+                    "divide": "100",
+                    "unit": "%"
+                  },
+                  "metrics": [
+                    "service_sla"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValue"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 16,
+                  "y": 0,
+                  "w": 8,
+                  "h": 5,
+                  "i": "2",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Load",
+                    "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM)"
+                  },
+                  "graph": {
+                    "type": "Card",
+                    "fontSize": 14,
+                    "textAlign": "center",
+                    "showUint": true
+                  },
+                  "standard": {
+                    "divide": 100,
+                    "unit": "CPM"
+                  },
+                  "metrics": [
+                    "service_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValue"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 5,
+                  "w": 6,
+                  "h": 11,
+                  "i": "3",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Avg Response Time"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "service_resp_time"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 6,
+                  "y": 5,
+                  "w": 6,
+                  "h": 11,
+                  "i": "4",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Apdex"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "divide": "10000"
+                  },
+                  "metrics": [
+                    "service_apdex"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 5,
+                  "w": 6,
+                  "h": 11,
+                  "i": "5",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Response Time Percentile"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms",
+                    "metricLabels": "P50, P75, P90, P95, P99",
+                    "labelsIndex": "0, 1, 2, 3, 4"
+                  },
+                  "metrics": [
+                    "service_percentile"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 18,
+                  "y": 5,
+                  "w": 6,
+                  "h": 11,
+                  "i": "6",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Successful Rate"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "divide": 100,
+                    "unit": "%"
+                  },
+                  "metrics": [
+                    "service_sla"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 16,
+                  "w": 6,
+                  "h": 11,
+                  "i": "7",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Load",
+                    "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "divide": 1,
+                    "unit": "CPM"
+                  },
+                  "metrics": [
+                    "service_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 6,
+                  "y": 16,
+                  "w": 6,
+                  "h": 11,
+                  "i": "9",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Message Queue Consuming Count"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "divide": 1,
+                    "unit": ""
+                  },
+                  "metrics": [
+                    "service_mq_consume_count"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 16,
+                  "w": 6,
+                  "h": 11,
+                  "i": "10",
+                  "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": {
+                    "divide": "1",
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "service_mq_consume_latency"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Instance",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": ""
+                  },
+                  "graph": {
+                    "type": "InstanceList",
+                    "dashboardName": "General-Instance",
+                    "fontSize": 12
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "service_instance_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Endpoint",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": ""
+                  },
+                  "graph": {
+                    "type": "EndpointList",
+                    "dashboardName": "General-Endpoint",
+                    "fontSize": 12,
+                    "showXAxis": false,
+                    "showYAxis": false
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "endpoint_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Topology",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 47,
+                  "i": "0",
+                  "type": "Topology",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {
+                    "showDepth": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false,
+                  "linkDashboard": "General-Service-Relation",
+                  "nodeDashboard": [
+                    {
+                      "scope": "Service",
+                      "dashboard": "General-Service"
+                    },
+                    {
+                      "scope": "ServiceInstance",
+                      "dashboard": "General-Instance"
+                    },
+                    {
+                      "scope": "Endpoint",
+                      "dashboard": "General-Endpoint"
+                    }
+                  ],
+                  "linkServerMetrics": [],
+                  "linkClientMetrics": [],
+                  "nodeMetrics": [],
+                  "legend": []
+                }
+              ]
+            },
+            {
+              "name": "Trace",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 48,
+                  "i": "0",
+                  "type": "Trace",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {},
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Profile",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Profile",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {},
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Log",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 48,
+                  "i": "0",
+                  "type": "Log",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {},
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            }
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "GENERAL",
+      "entity": "Service",
+      "name": "General-Service",
+      "id": "General-Service"
+    }
+  }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/istio-dp.yml b/oap-server/server-starter/src/main/resources/ui-initialized-templates/istio-dp.yml
deleted file mode 100644
index b706460..0000000
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/istio-dp.yml
+++ /dev/null
@@ -1,174 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-templates:
-  - name: "Istio Data Plane"
-    type: "DASHBOARD"
-    configuration: |-
-      [
-        {
-          "name": "Istio Data Plane",
-          "type": "service",
-          "serviceGroup": "istio-dp",
-          "children": [
-            {
-              "name": "Data Plane",
-              "children": [
-                {
-                  "width": "3",
-                  "title": "Heap Memory Used",
-                  "height": 350,
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "envoy_heap_memory_max_used,envoy_heap_memory_used,envoy_memory_allocated_max,envoy_memory_allocated,envoy_memory_physical_size,envoy_memory_physical_size_max",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "MB",
-                  "aggregation": "/",
-                  "aggregationNum": "1048576"
-                },
-                {
-                  "width": "3",
-                  "title": "Connections Used",
-                  "height": 350,
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "envoy_total_connections_used,envoy_parent_connections_used",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine"
-                },
-                {
-                  "width": "3",
-                  "title": "Concurrency",
-                  "height": 350,
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "envoy_worker_threads,envoy_worker_threads_max",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine"
-                },
-                {
-                  "width": "3",
-                  "title": "Envoy Bug Failure",
-                  "height": 350,
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "envoy_bug_failures",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine"
-                },
-                {
-                  "width": "3",
-                  "title": "Membership Healthy",
-                  "height": 350,
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "envoy_cluster_membership_healthy",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine"
-                },
-                {
-                  "width": "3",
-                  "title": "Upstream Connection Active",
-                  "height": 350,
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "envoy_cluster_up_cx_active",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine"
-                },
-                {
-                  "width": "3",
-                  "title": "Upstream Connection Increase",
-                  "height": 350,
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "envoy_cluster_up_cx_incr",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "unit": "Per Minute",
-                  "chartType": "ChartLine"
-                },
-                {
-                  "width": "3",
-                  "title": "Upstream Request Active",
-                  "height": 350,
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "envoy_cluster_up_rq_active",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine"
-                },
-                {
-                  "width": "3",
-                  "title": "Upstream Request Increase",
-                  "height": 350,
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "envoy_cluster_up_rq_incr",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "unit": "Per Minute",
-                  "chartType": "ChartLine"
-                },
-                {
-                    "width": "3",
-                    "title": "Upstream Request Pending Active",
-                    "height": 350,
-                    "entityType": "ServiceInstance",
-                    "independentSelector": false,
-                    "metricType": "LABELED_VALUE",
-                    "metricName": "envoy_cluster_up_rq_pending_active",
-                    "queryMetricType": "readLabeledMetricsValues",
-                    "chartType": "ChartLine"
-                },
-                {
-                  "width": "3",
-                  "title": "LB Healthy Panic Increase",
-                  "height": 350,
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "envoy_cluster_lb_healthy_panic_incr",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "unit": "Per Minute",
-                  "chartType": "ChartLine"
-                },
-                {
-                  "width": "3",
-                  "title": "Upstream Connection None Healthy Increase",
-                  "height": 350,
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "envoy_cluster_up_cx_none_healthy_incr",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "unit": "Per Minute",
-                  "chartType": "ChartLine"
-                }
-              ]
-            }
-          ]
-        }
-      ]
-    activated: true
-    disabled: false
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/istio.yml b/oap-server/server-starter/src/main/resources/ui-initialized-templates/istio.yml
deleted file mode 100644
index 1993f09..0000000
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/istio.yml
+++ /dev/null
@@ -1,175 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# UI templates initialized file includes the default template when the SkyWalking OAP starts up at the first time.
-#
-# 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: "Istio"
-    # 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": "Istio",
-          "type": "service",
-          "serviceGroup": "istio-ctrl",
-          "children": [
-            {
-              "name": "Control Plane",
-              "children": [
-                {
-                  "width": 3,
-                  "title": "Istio Versions",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "meter_istio_pilot_version",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartArea"
-                },
-                {
-                  "width": 3,
-                  "title": "Memory",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_istio_virtual_memory,meter_resident_memory,meter_go_alloc,meter_go_heap_inuse,meter_go_stack_inuse",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartArea",
-                  "unit": "MB",
-                  "aggregation": "/",
-                  "aggregationNum": "1048576"
-                },
-                {
-                  "width": 3,
-                  "title": "CPU",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_istio_cpu",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartArea",
-                  "unit": "%"
-                },
-                {
-                  "width": 3,
-                  "title": "Goroutines",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_istio_go_goroutines",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine"
-                },
-                {
-                  "width": "4",
-                  "title": "Pilot pushes",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "meter_istio_pilot_xds_pushes",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartBar"
-                },
-                {
-                  "width": "4",
-                  "title": "Pilot Errors",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_pilot_xds_cds_reject,meter_pilot_xds_eds_reject,meter_pilot_xds_rds_reject,meter_pilot_xds_lds_reject,meter_pilot_xds_write_timeout,meter_pilot_total_xds_internal_errors,meter_pilot_total_xds_rejects,meter_pilot_xds_push_context_errors,meter_pilot_xds_push_timeout",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartArea"
-                },
-                {
-                  "width": "4",
-                  "title": "Proxy Push Time",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "meter_istio_pilot_proxy_push_percentile",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartArea",
-                  "metricLabels": "50,90,99",
-                  "labelsIndex": "50,90,99",
-                  "unit": "%"
-                },
-                {
-                  "width": "6",
-                  "title": "Conflicts",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_istio_pilot_conflict_il,meter_pilot_conflict_ol_http_tcp,meter_pilot_conflict_ol_tcp_tcp,meter_pilot_conflict_ol_tcp_http",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartBar"
-                },
-                {
-                  "width": "6",
-                  "title": "ADS Monitoring",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_istio_pilot_virt_services,meter_pilot_services,meter_pilot_xds",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartArea"
-                },
-                {
-                  "width": "6",
-                  "title": "Configuration Validation",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "meter_istio_galley_validation_passed,meter_galley_validation_failed"
-                },
-                {
-                  "width": "6",
-                  "title": "Sidecar Injection",
-                  "height": 350,
-                  "entityType": "Service",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_istio_sidecar_injection_success_total",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartArea"
-                }
-              ]
-            }
-          ]
-        }
-      ]
-    # 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-starter/src/main/resources/ui-initialized-templates/k8s.yml b/oap-server/server-starter/src/main/resources/ui-initialized-templates/k8s.yml
deleted file mode 100644
index 9745d0d..0000000
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/k8s.yml
+++ /dev/null
@@ -1,512 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# UI templates initialized file includes the default template when the SkyWalking OAP starts up at the first time.
-#
-# 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: "K8s"
-    # 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": "K8s",
-              "type": "service",
-              "serviceGroup": "k8s-cluster",
-              "children": [
-                  {
-                      "name": "Cluster",
-                      "children": [
-                          {
-                              "width": "2",
-                              "title": "Node Total",
-                              "height": "100",
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_cluster_node_total",
-                              "queryMetricType": "readMetricsValue",
-                              "chartType": "ChartNum"
-                          },
-                          {
-                              "width": "2",
-                              "title": "Namespace Total",
-                              "height": "100",
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_cluster_namespace_total",
-                              "queryMetricType": "readMetricsValue",
-                              "chartType": "ChartNum"
-                          },
-                          {
-                              "width": "2",
-                              "title": "Deployment Total",
-                              "height": "100",
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_cluster_deployment_total",
-                              "queryMetricType": "readMetricsValue",
-                              "chartType": "ChartNum"
-                          },
-                          {
-                              "width": "2",
-                              "title": "Service Total",
-                              "height": "100",
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_cluster_service_total",
-                              "queryMetricType": "readMetricsValue",
-                              "chartType": "ChartNum"
-                          },
-                          {
-                              "width": "2",
-                              "title": "Pod Total",
-                              "height": "100",
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_cluster_pod_total",
-                              "queryMetricType": "readMetricsValue",
-                              "chartType": "ChartNum"
-                          },
-                          {
-                              "width": 2,
-                              "title": "Container Total",
-                              "height": "100",
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_cluster_container_total",
-                              "queryMetricType": "readMetricsValue",
-                              "chartType": "ChartNum"
-                          },
-                          {
-                              "width": "4",
-                              "title": "CPU Resources",
-                              "height": 200,
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_cluster_cpu_cores,k8s_cluster_cpu_cores_requests,k8s_cluster_cpu_cores_limits,k8s_cluster_cpu_cores_allocatable",
-                              "queryMetricType": "readMetricsValues",
-                              "chartType": "ChartArea",
-                              "unit": "m"
-                          },
-                          {
-                              "width": "4",
-                              "title": "Memory Resources",
-                              "height": 200,
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_cluster_memory_total,k8s_cluster_memory_requests,k8s_cluster_memory_limits,k8s_cluster_memory_allocatable",
-                              "queryMetricType": "readMetricsValues",
-                              "chartType": "ChartArea",
-                              "aggregation": "/",
-                              "aggregationNum": "1073741824",
-                              "unit": "GB"
-                          },
-                          {
-                              "width": "4",
-                              "title": "Storage Resources",
-                              "height": 200,
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_cluster_storage_total,k8s_cluster_storage_allocatable",
-                              "queryMetricType": "readMetricsValues",
-                              "chartType": "ChartArea",
-                              "aggregation": "/",
-                              "aggregationNum": "1073741824",
-                              "unit": "GB"
-                          },
-                          {
-                              "width": "4",
-                              "title": "Node Status",
-                              "height": "200",
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_cluster_node_status",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartTable",
-                              "tableHeaderCol1": "Status-Node",
-                              "showTableValues": "false"
-                          },
-                          {
-                              "width": "4",
-                              "title": "Deployment Status",
-                              "height": 200,
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_cluster_deployment_status",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartTable",
-                              "tableHeaderCol1": "Deployment-Available",
-                              "showTableValues": "false"
-                          },
-                          {
-                              "width": "4",
-                              "title": "Deployment Spec Replicas",
-                              "height": 200,
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartTable",
-                              "metricName": "k8s_cluster_deployment_spec_replicas",
-                              "showTableValues": "true",
-                              "tableHeaderCol1": "Deployment",
-                              "tableHeaderCol2": "Replicas"
-                          },
-                          {
-                              "width": "4",
-                              "title": "Service Status",
-                              "height": 200,
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_cluster_service_pod_status",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartTable",
-                              "showTableValues": "false",
-                              "tableHeaderCol1": "Status-Service"
-                          },
-                          {
-                              "width": "4",
-                              "title": "Pod Status Not Running",
-                              "height": 200,
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_cluster_pod_status_not_running",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartTable",
-                              "tableHeaderCol1": "Status-Pod"
-                          },
-                          {
-                              "width": "4",
-                              "title": "Pod Status Waiting",
-                              "height": 200,
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_cluster_pod_status_waiting",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartTable",
-                              "tableHeaderCol1": "Container-Pod-Waiting Reason",
-                              "showTableValues": "false"
-                          },
-                          {
-                              "width": "4",
-                              "title": "Pod Status Terminated",
-                              "height": 200,
-                              "entityType": "Service",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_cluster_container_status_terminated",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartBar"
-                          }
-                      ]
-                  },
-                  {
-                      "name": "Node",
-                      "children": [
-                          {
-                              "width": "3",
-                              "title": "Pod Total",
-                              "height": 350,
-                              "entityType": "ServiceInstance",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_node_pod_total",
-                              "queryMetricType": "readMetricsValue",
-                              "chartType": "ChartNum"
-                          },
-                          {
-                              "width": "3",
-                              "title": "Node Status",
-                              "height": 350,
-                              "entityType": "ServiceInstance",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_node_node_status",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartTable",
-                              "tableHeaderCol1": "Status",
-                              "showTableValues": "false"
-                          },
-                          {
-                              "width": "3",
-                              "title": "CPU Resources",
-                              "height": "350",
-                              "entityType": "ServiceInstance",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_node_cpu_cores,k8s_node_cpu_cores_allocatable,k8s_node_cpu_cores_requests,k8s_node_cpu_cores_limits",
-                              "queryMetricType": "readMetricsValues",
-                              "chartType": "ChartArea",
-                              "unit": "m"
-                          },
-                          {
-                              "width": "3",
-                              "title": "Memory Resources",
-                              "height": "350",
-                              "entityType": "ServiceInstance",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "unit": "GB",
-                              "queryMetricType": "readMetricsValues",
-                              "chartType": "ChartArea",
-                              "metricName": "k8s_node_memory_total,k8s_node_memory_allocatable,k8s_node_memory_requests,k8s_node_memory_limits",
-                              "aggregation": "/",
-                              "aggregationNum": "1073741824"
-                          },
-                          {
-                              "width": "3",
-                              "title": "Storage Resources",
-                              "height": 350,
-                              "entityType": "ServiceInstance",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "unit": "GB",
-                              "queryMetricType": "readMetricsValues",
-                              "chartType": "ChartArea",
-                              "metricName": "k8s_node_storage_total,k8s_node_storage_allocatable",
-                              "aggregation": "/",
-                              "aggregationNum": "1073741824"
-                          },
-                          {
-                              "width": 3,
-                              "title": "CPU Usage",
-                              "height": 350,
-                              "entityType": "ServiceInstance",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_node_cpu_usage",
-                              "queryMetricType": "readMetricsValues",
-                              "chartType": "ChartLine",
-                              "unit": "m"
-                          },
-                          {
-                              "width": 3,
-                              "title": "Memory Usage",
-                              "height": 350,
-                              "entityType": "ServiceInstance",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_node_memory_usage",
-                              "queryMetricType": "readMetricsValues",
-                              "chartType": "ChartLine",
-                              "aggregation": "/",
-                              "aggregationNum": "1073741824",
-                              "unit": "GB"
-                          },
-                          {
-                              "width": "3",
-                              "title": "Network I/O",
-                              "height": 350,
-                              "entityType": "ServiceInstance",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_node_network_receive,k8s_node_network_transmit",
-                              "queryMetricType": "readMetricsValues",
-                              "chartType": "ChartLine",
-                              "unit": "KB/s",
-                              "aggregation": "/",
-                              "aggregationNum": "1024"
-                          }
-                      ]
-                  },
-                  {
-                      "name": "Service",
-                      "children": [
-                          {
-                              "width": 3,
-                              "title": "Service Pod Total",
-                              "height": "248",
-                              "entityType": "Endpoint",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_service_pod_total",
-                              "queryMetricType": "readMetricsValue",
-                              "chartType": "ChartNum"
-                          },
-                          {
-                              "width": 3,
-                              "title": "Service Pod Status",
-                              "height": "248",
-                              "entityType": "Endpoint",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_service_pod_status",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartTable",
-                              "tableHeaderCol1": "Status-Pod",
-                              "showTableValues": "false"
-                          },
-                          {
-                              "width": 3,
-                              "title": "Service CPU Resources",
-                              "height": "248",
-                              "entityType": "Endpoint",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_service_cpu_cores_requests,k8s_service_cpu_cores_limits",
-                              "queryMetricType": "readMetricsValues",
-                              "chartType": "ChartArea",
-                              "unit": "m"
-                          },
-                          {
-                              "width": 3,
-                              "title": "Service Memory Resources",
-                              "height": "248",
-                              "entityType": "Endpoint",
-                              "independentSelector": false,
-                              "metricType": "REGULAR_VALUE",
-                              "metricName": "k8s_service_memory_requests,k8s_service_memory_limits",
-                              "queryMetricType": "readMetricsValues",
-                              "chartType": "ChartArea",
-                              "aggregation": "/",
-                              "aggregationNum": "1048576",
-                              "unit": "MB"
-                          },
-                          {
-                              "width": 3,
-                              "title": "Pod CPU Usage",
-                              "height": "248",
-                              "entityType": "Endpoint",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_service_pod_cpu_usage",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartLine",
-                              "unit": "m"
-                          },
-                          {
-                              "width": 3,
-                              "title": "Pod Memory Usage",
-                              "height": "248",
-                              "entityType": "Endpoint",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_service_pod_memory_usage",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartLine",
-                              "aggregation": "/",
-                              "aggregationNum": "1048576",
-                              "unit": "MB"
-                          },
-                          {
-                              "width": 3,
-                              "title": "Pod Waiting",
-                              "height": "248",
-                              "entityType": "Endpoint",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_service_pod_status_waiting",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartTable",
-                              "showTableValues": "false",
-                              "tableHeaderCol1": "Container-Pod-Waiting Reason"
-                          },
-                          {
-                              "width": 3,
-                              "title": "Pod Terminated",
-                              "height": "248",
-                              "entityType": "Endpoint",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_service_pod_status_terminated",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartBar"
-                          },
-                          {
-                              "width": 3,
-                              "title": "Pod Restarts",
-                              "height": "248",
-                              "entityType": "Endpoint",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_service_pod_status_restarts_total",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartTable",
-                              "tableHeaderCol1": "Pod",
-                              "showTableValues": "true",
-                              "tableHeaderCol2": "Restarts Total"
-                          },
-                          {
-                              "width": 3,
-                              "title": "Pod Network Receive",
-                              "height": "248",
-                              "entityType": "Endpoint",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_service_pod_network_receive",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartLine",
-                              "aggregation": "/",
-                              "aggregationNum": "1024",
-                              "unit": "KB/s"
-                          },
-                          {
-                              "width": 3,
-                              "title": "Pod Network Transmit",
-                              "height": "248",
-                              "entityType": "Endpoint",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_service_pod_network_transmit",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartLine",
-                              "aggregationNum": "1024",
-                              "aggregation": "/",
-                              "unit": "KB/s"
-                          },
-                          {
-                              "width": 3,
-                              "title": "Pod Storage Usage",
-                              "height": "248",
-                              "entityType": "Endpoint",
-                              "independentSelector": false,
-                              "metricType": "LABELED_VALUE",
-                              "metricName": "k8s_service_pod_fs_usage",
-                              "queryMetricType": "readLabeledMetricsValues",
-                              "chartType": "ChartArea",
-                              "aggregation": "/",
-                              "aggregationNum": "1048576",
-                              "unit": "MB"
-                          }
-                      ]
-                  }
-              ]
-          }
-      ]
-    # 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-starter/src/main/resources/ui-initialized-templates/k8s/k8s-cluster.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/k8s/k8s-cluster.json
new file mode 100644
index 0000000..1cdd611
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/k8s/k8s-cluster.json
@@ -0,0 +1,485 @@
+/**
+ * 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": "K8S-Cluster",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "16",
+          "type": "Tab",
+          "widget": {
+            "title": "Title"
+          },
+          "graph": {},
+          "standard": {},
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "activedTabIndex": 1,
+          "children": [
+            {
+              "name": "Overview",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 6,
+                  "w": 8,
+                  "h": 12,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "CPU Resources"
+                  },
+                  "graph": {
+                    "type": "Area",
+                    "opacity": 0.4,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "m"
+                  },
+                  "metrics": [
+                    "k8s_cluster_cpu_cores",
+                    "k8s_cluster_cpu_cores_requests",
+                    "k8s_cluster_cpu_cores_limits",
+                    "k8s_cluster_cpu_cores_allocatable"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 6,
+                  "w": 8,
+                  "h": 12,
+                  "i": "1",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Memory Resources"
+                  },
+                  "graph": {
+                    "type": "Area",
+                    "opacity": 0.4,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "GB",
+                    "divide": 1073741824
+                  },
+                  "metrics": [
+                    "k8s_cluster_memory_total",
+                    "k8s_cluster_memory_requests",
+                    "k8s_cluster_memory_limits",
+                    "k8s_cluster_memory_allocatable"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues",
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 16,
+                  "y": 6,
+                  "w": 8,
+                  "h": 12,
+                  "i": "2",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Storage Resources"
+                  },
+                  "graph": {
+                    "type": "Area",
+                    "opacity": 0.4,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "GB",
+                    "divide": 1073741824
+                  },
+                  "metrics": [
+                    "k8s_cluster_storage_total",
+                    "k8s_cluster_storage_allocatable"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues",
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 16,
+                  "y": 34,
+                  "w": 8,
+                  "h": 14,
+                  "i": "3",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Pod Status Waiting"
+                  },
+                  "graph": {
+                    "type": "Table",
+                    "showTableValues": false,
+                    "tableHeaderCol1": "Container-Pod-Waiting Reason",
+                    "tableHeaderCol2": ""
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "k8s_cluster_pod_status_waiting"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 34,
+                  "w": 8,
+                  "h": 14,
+                  "i": "4",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Status"
+                  },
+                  "graph": {
+                    "type": "Table",
+                    "showTableValues": true,
+                    "tableHeaderCol1": "Status-Service",
+                    "tableHeaderCol2": ""
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "k8s_cluster_service_pod_status"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 34,
+                  "w": 8,
+                  "h": 14,
+                  "i": "5",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Pod Status Not Running"
+                  },
+                  "graph": {
+                    "type": "Table",
+                    "showTableValues": false,
+                    "tableHeaderCol1": "Status-Pod",
+                    "tableHeaderCol2": ""
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "k8s_cluster_pod_status_not_running"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 18,
+                  "w": 8,
+                  "h": 16,
+                  "i": "6",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Node Status"
+                  },
+                  "graph": {
+                    "type": "Table",
+                    "showTableValues": false,
+                    "tableHeaderCol1": "Status-Node",
+                    "tableHeaderCol2": ""
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "k8s_cluster_node_status"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 16,
+                  "y": 18,
+                  "w": 8,
+                  "h": 16,
+                  "i": "7",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Deployment Spec Replicas"
+                  },
+                  "graph": {
+                    "type": "Table",
+                    "showTableValues": true,
+                    "tableHeaderCol1": "Deployment",
+                    "tableHeaderCol2": "Replicas"
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "k8s_cluster_deployment_spec_replicas"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 18,
+                  "w": 8,
+                  "h": 16,
+                  "i": "8",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Deployment Status"
+                  },
+                  "graph": {
+                    "type": "Table",
+                    "showTableValues": true,
+                    "tableHeaderCol1": "Deployment-Available",
+                    "tableHeaderCol2": ""
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "k8s_cluster_deployment_status"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 20,
+                  "y": 0,
+                  "w": 4,
+                  "h": 6,
+                  "i": "10",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Container Total"
+                  },
+                  "graph": {
+                    "type": "Card",
+                    "fontSize": 14,
+                    "textAlign": "center",
+                    "showUint": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "k8s_cluster_container_total"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValue"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 16,
+                  "y": 0,
+                  "w": 4,
+                  "h": 6,
+                  "i": "11",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Pod Total"
+                  },
+                  "graph": {
+                    "type": "Card",
+                    "fontSize": 14,
+                    "textAlign": "center",
+                    "showUint": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "k8s_cluster_pod_total"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValue"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 0,
+                  "w": 4,
+                  "h": 6,
+                  "i": "12",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Total"
+                  },
+                  "graph": {
+                    "type": "Card",
+                    "fontSize": 14,
+                    "textAlign": "center",
+                    "showUint": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "k8s_cluster_service_total"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValue"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 4,
+                  "h": 6,
+                  "i": "13",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Node Total"
+                  },
+                  "graph": {
+                    "type": "Card",
+                    "fontSize": 14,
+                    "textAlign": "center",
+                    "showUint": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "k8s_cluster_node_total"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValue"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 4,
+                  "y": 0,
+                  "w": 4,
+                  "h": 6,
+                  "i": "14",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Namespace Total"
+                  },
+                  "graph": {
+                    "type": "Card",
+                    "fontSize": 14,
+                    "textAlign": "center",
+                    "showUint": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "k8s_cluster_namespace_total"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValue"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 0,
+                  "w": 4,
+                  "h": 6,
+                  "i": "15",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Deployment Total"
+                  },
+                  "graph": {
+                    "type": "Card",
+                    "fontSize": 14,
+                    "textAlign": "center",
+                    "showUint": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "k8s_cluster_deployment_total"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValue"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Node",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 48,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": ""
+                  },
+                  "graph": {
+                    "type": "InstanceList",
+                    "dashboardName": "V9-K8S-Node",
+                    "fontSize": 12
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "k8s_node_cpu_usage"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            }
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "K8S",
+      "entity": "Service",
+      "name": "K8S-Cluster",
+      "id": "K8S-Cluster",
+      "isRoot": false
+    }
+  }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/k8s/k8s-node.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/k8s/k8s-node.json
new file mode 100644
index 0000000..1ec901d
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/k8s/k8s-node.json
@@ -0,0 +1,271 @@
+/**
+ * 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": "K8S-Node",
+    "configuration": {
+      "children": [
+        {
+          "x": 16,
+          "y": 16,
+          "w": 8,
+          "h": 16,
+          "i": "0",
+          "type": "Widget",
+          "widget": {
+            "title": "CPU Usage"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "unit": "m"
+          },
+          "metrics": [
+            "k8s_node_cpu_usage"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 8,
+          "y": 32,
+          "w": 8,
+          "h": 16,
+          "i": "1",
+          "type": "Widget",
+          "widget": {
+            "title": "Network I/O"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 1024,
+            "unit": "KB/s"
+          },
+          "metrics": [
+            "k8s_node_network_receive",
+            "k8s_node_network_transmit"
+          ],
+          "metricTypes": [
+            "readMetricsValues",
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 8,
+          "y": 0,
+          "w": 8,
+          "h": 16,
+          "i": "2",
+          "type": "Widget",
+          "widget": {
+            "title": "Node Status"
+          },
+          "graph": {
+            "type": "Table",
+            "showTableValues": false,
+            "tableHeaderCol1": "",
+            "tableHeaderCol2": ""
+          },
+          "standard": {},
+          "metrics": [
+            "k8s_node_node_status"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 8,
+          "y": 16,
+          "w": 8,
+          "h": 16,
+          "i": "3",
+          "type": "Widget",
+          "widget": {
+            "title": "Storage Resources"
+          },
+          "graph": {
+            "type": "Area",
+            "opacity": 0.4,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 1073741824,
+            "unit": "GB"
+          },
+          "metrics": [
+            "k8s_node_storage_total",
+            "k8s_node_storage_allocatable"
+          ],
+          "metricTypes": [
+            "readMetricsValues",
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 16,
+          "y": 0,
+          "w": 8,
+          "h": 16,
+          "i": "5",
+          "type": "Widget",
+          "widget": {
+            "title": "CPU Resources"
+          },
+          "graph": {
+            "type": "Area",
+            "opacity": 0.4,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "unit": "m"
+          },
+          "metrics": [
+            "k8s_node_cpu_cores_limits",
+            "k8s_node_cpu_cores_requests",
+            "k8s_node_cpu_cores",
+            "k8s_node_cpu_cores_allocatable"
+          ],
+          "metricTypes": [
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 16,
+          "w": 8,
+          "h": 16,
+          "i": "6",
+          "type": "Widget",
+          "widget": {
+            "title": "Memory Resources"
+          },
+          "graph": {
+            "type": "Area",
+            "opacity": 0.4,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 1073741824,
+            "unit": "GB"
+          },
+          "metrics": [
+            "k8s_node_memory_total",
+            "k8s_node_memory_allocatable",
+            "k8s_node_memory_requests",
+            "k8s_node_memory_limits"
+          ],
+          "metricTypes": [
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 32,
+          "w": 8,
+          "h": 16,
+          "i": "7",
+          "type": "Widget",
+          "widget": {
+            "title": "Memory Usage"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "divide": 1073741824,
+            "unit": "GB"
+          },
+          "metrics": [
+            "k8s_node_memory_usage"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 0,
+          "w": 8,
+          "h": 16,
+          "i": "8",
+          "type": "Widget",
+          "widget": {
+            "title": "Pod Total"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {},
+          "metrics": [
+            "k8s_node_pod_total"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "K8S",
+      "entity": "ServiceInstance",
+      "name": "K8S-Node",
+      "id": "K8S-Node",
+      "isRoot": false
+    }
+  }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/k8s/k8s-root.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/k8s/k8s-root.json
new file mode 100644
index 0000000..8a9c4d5
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/k8s/k8s-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": "K8S-Root",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "0",
+          "type": "Widget",
+          "widget": {
+            "title": ""
+          },
+          "graph": {
+            "type": "ServiceList",
+            "dashboardName": "K8S-Cluster",
+            "fontSize": 12,
+            "showXAxis": false,
+            "showYAxis": false,
+            "showGroup": true
+          },
+          "standard": {},
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "K8S",
+      "entity": "All",
+      "name": "K8S-Root",
+      "isRoot": true,
+      "id": "K8S-Root"
+    }
+  }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-all.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-all.json
new file mode 100644
index 0000000..de52fe3
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-all.json
@@ -0,0 +1,132 @@
+/**
+ * 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-Root",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "1",
+          "type": "Tab",
+          "widget": {
+            "title": "Title"
+          },
+          "graph": {},
+          "standard": {},
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "activedTabIndex": 1,
+          "children": [
+            {
+              "name": "Services",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 48,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": ""
+                  },
+                  "graph": {
+                    "type": "ServiceList",
+                    "dashboardName": "Mesh-Service",
+                    "fontSize": 12,
+                    "showXAxis": false,
+                    "showYAxis": false,
+                    "showGroup": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "service_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Topology",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Topology",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {
+                    "showDepth": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false,
+                  "linkDashboard": "Mesh-Service-Relation",
+                  "nodeDashboard": [
+                    {
+                      "scope": "Service",
+                      "dashboard": "Mesh-Service"
+                    },
+                    {
+                      "scope": "ServiceInstance",
+                      "dashboard": "Mesh-Instance"
+                    },
+                    {
+                      "scope": "Endpoint",
+                      "dashboard": "Mesh-Endpoint"
+                    }
+                  ],
+                  "linkServerMetrics": [],
+                  "linkClientMetrics": [],
+                  "nodeMetrics": [],
+                  "legend": []
+                }
+              ]
+            }
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "MESH",
+      "entity": "All",
+      "name": "Mesh-Root",
+      "id": "Mesh-Root",
+      "isRoot": true
+    }
+  }
+]
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
new file mode 100644
index 0000000..62f2146
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-endpoint.json
@@ -0,0 +1,365 @@
+/**
+ * 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-Endpoint",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "1",
+          "type": "Tab",
+          "widget": {
+            "title": "Title"
+          },
+          "graph": {},
+          "standard": {},
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "activedTabIndex": 2,
+          "children": [
+            {
+              "name": "Overview",
+              "children": [
+                {
+                  "x": 16,
+                  "y": 0,
+                  "w": 8,
+                  "h": 13,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Successful Rate in Current Service"
+                  },
+                  "graph": {
+                    "type": "TopList",
+                    "topN": "10"
+                  },
+                  "standard": {
+                    "unit": "%",
+                    "divide": "100"
+                  },
+                  "metrics": [
+                    "endpoint_sla"
+                  ],
+                  "metricTypes": [
+                    "sortMetrics"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 0,
+                  "w": 8,
+                  "h": 13,
+                  "i": "1",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Slow Endpoints in Current Service"
+                  },
+                  "graph": {
+                    "type": "TopList",
+                    "topN": "10"
+                  },
+                  "standard": {
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "endpoint_resp_time"
+                  ],
+                  "metricTypes": [
+                    "sortMetrics"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 8,
+                  "h": 13,
+                  "i": "2",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Endpoint Load in Current Service",
+                    "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
+                  },
+                  "graph": {
+                    "type": "TopList",
+                    "topN": "10"
+                  },
+                  "standard": {
+                    "unit": "CPM"
+                  },
+                  "metrics": [
+                    "endpoint_cpm"
+                  ],
+                  "metricTypes": [
+                    "sortMetrics"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 16,
+                  "y": 13,
+                  "w": 8,
+                  "h": 13,
+                  "i": "3",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Endpoint Response Time Percentile"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms",
+                    "metricLabels": "P50, P75, P90, P95, P99",
+                    "labelsIndex": "0,1,2,3,4"
+                  },
+                  "metrics": [
+                    "endpoint_percentile"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 13,
+                  "w": 8,
+                  "h": 13,
+                  "i": "4",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Endpoint Avg Response Time"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "endpoint_resp_time"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "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,
+                  "w": 8,
+                  "h": 13,
+                  "i": "7",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Endpoint Successful Rate"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "%",
+                    "divide": "100"
+                  },
+                  "metrics": [
+                    "endpoint_sla"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 13,
+                  "w": 8,
+                  "h": 13,
+                  "i": "8",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Endpoint Load"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                  },
+                  "metrics": [
+                    "endpoint_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Topology",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 48,
+                  "i": "0",
+                  "type": "Topology",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {
+                    "showDepth": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Log",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Log",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {},
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            }
+          ],
+          "moved": false
+        }
+      ],
+      "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
new file mode 100644
index 0000000..155ed1a
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-instance.json
@@ -0,0 +1,195 @@
+/**
+ * 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-Instance",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "1",
+          "type": "Tab",
+          "widget": {
+            "title": "Title"
+          },
+          "graph": {},
+          "standard": {},
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "activedTabIndex": 0,
+          "children": [
+            {
+              "name": "Overview",
+              "children": [
+                {
+                  "x": 18,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Instance Latency"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "service_instance_resp_time"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "1",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Instance Successful Rate",
+                    "tips": ""
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "%",
+                    "divide": "100"
+                  },
+                  "metrics": [
+                    "service_instance_sla"
+                  ],
+                  "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
+                },
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 6,
+                  "h": 13,
+                  "i": "3",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Instance Load",
+                    "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "CPM / PPM"
+                  },
+                  "metrics": [
+                    "service_instance_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Log",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 48,
+                  "i": "0",
+                  "type": "Log",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {},
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            }
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "MESH",
+      "entity": "ServiceInstance",
+      "name": "Mesh-Instance",
+      "id": "Mesh-Instance"
+    }
+  }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service-relation.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service-relation.json
new file mode 100644
index 0000000..e035fa6
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service-relation.json
@@ -0,0 +1,583 @@
+/**
+ * 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-Service-Relation",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "0",
+          "type": "Tab",
+          "widget": {
+            "title": "Title"
+          },
+          "graph": {},
+          "standard": {},
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "activedTabIndex": 1,
+          "children": [
+            {
+              "name": "Overview",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 24,
+                  "w": 12,
+                  "h": 12,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Load (Server)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "CPM - Calls Per Minute"
+                  },
+                  "metrics": [
+                    "service_relation_server_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 16,
+                  "y": 0,
+                  "w": 8,
+                  "h": 12,
+                  "i": "1",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Successful Rate (Server)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "%",
+                    "divide": 100
+                  },
+                  "metrics": [
+                    "service_relation_server_call_sla"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 0,
+                  "w": 8,
+                  "h": 12,
+                  "i": "2",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Response Time Percentile (Server)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms",
+                    "metricLabels": "P50, P75, P90, P95, P99",
+                    "labelsIndex": "0,1,2,3,4"
+                  },
+                  "metrics": [
+                    "service_relation_server_percentile"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 8,
+                  "h": 12,
+                  "i": "3",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Response Time (Server)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "service_relation_server_resp_time"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 12,
+                  "w": 8,
+                  "h": 12,
+                  "i": "4",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Response Time (Client)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "service_relation_client_resp_time"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 12,
+                  "w": 8,
+                  "h": 12,
+                  "i": "5",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Response Time Percentile (Client)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms",
+                    "metricLabels": "P50, P75, P90, P95, P99",
+                    "labelsIndex": "0,1,2,3,4"
+                  },
+                  "metrics": [
+                    "service_relation_client_percentile"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 16,
+                  "y": 12,
+                  "w": 8,
+                  "h": 12,
+                  "i": "6",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Successful Rate (Client)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "divide": 100,
+                    "unit": "%",
+                    "metricLabels": "",
+                    "labelsIndex": ""
+                  },
+                  "metrics": [
+                    "service_relation_client_call_sla"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 36,
+                  "w": 12,
+                  "h": 12,
+                  "i": "7",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Load (Client)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "divide": 1,
+                    "unit": "CPM - Calls Per Minute",
+                    "metricLabels": "",
+                    "labelsIndex": ""
+                  },
+                  "metrics": [
+                    "service_relation_client_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 24,
+                  "w": 12,
+                  "h": 12,
+                  "i": "8",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Throughput (Server)",
+                    "tips": "This metrics is only avaible for TCP services"
+                  },
+                  "graph": {},
+                  "standard": {
+                    "unit": "Bytes"
+                  },
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 36,
+                  "w": 12,
+                  "h": 12,
+                  "i": "9",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Throughput  (Client)",
+                    "tips": "This metrics is only avaible for TCP services"
+                  },
+                  "graph": {},
+                  "standard": {
+                    "unit": "Bytes"
+                  },
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Topology",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Topology",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {
+                    "showDepth": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Envoy",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 26,
+                  "w": 8,
+                  "h": 13,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Upstream Connection None Healthy Increase"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "Per Minute"
+                  },
+                  "metrics": [
+                    "envoy_sr_cluster_up_cx_none_healthy_incr"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 16,
+                  "y": 13,
+                  "w": 8,
+                  "h": 13,
+                  "i": "1",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "LB Healthy Panic Increase"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "Per Minute"
+                  },
+                  "metrics": [
+                    "envoy_sr_cluster_lb_healthy_panic_incr"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 13,
+                  "w": 8,
+                  "h": 13,
+                  "i": "2",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Upstream Request Pending Active"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "Per Minute"
+                  },
+                  "metrics": [
+                    "envoy_sr_cluster_up_rq_pending_active"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 8,
+                  "h": 13,
+                  "i": "3",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Upstream Connection Active"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "Per Minute"
+                  },
+                  "metrics": [
+                    "envoy_sr_cluster_up_cx_active"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 16,
+                  "y": 0,
+                  "w": 8,
+                  "h": 13,
+                  "i": "4",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Upstream Request Active"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "Per Minute"
+                  },
+                  "metrics": [
+                    "envoy_sr_cluster_up_rq_active"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 8,
+                  "y": 0,
+                  "w": 8,
+                  "h": 13,
+                  "i": "5",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Upstream Connection Increase"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "Per Minute"
+                  },
+                  "metrics": [
+                    "envoy_sr_cluster_up_cx_incr"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 13,
+                  "w": 8,
+                  "h": 13,
+                  "i": "6",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Upstream Request Increase"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "Per Minute"
+                  },
+                  "metrics": [
+                    "envoy_sr_cluster_up_rq_incr"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            }
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "MESH",
+      "entity": "ServiceRelation",
+      "name": "Mesh-Service-Relation",
+      "id": "Mesh-Service-Relation",
+      "isRoot": false
+    }
+  }
+]
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
new file mode 100644
index 0000000..288c1b7
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service.json
@@ -0,0 +1,427 @@
+/**
+ * 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-Service",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "0",
+          "type": "Tab",
+          "widget": {
+            "title": "Title"
+          },
+          "graph": {},
+          "standard": {},
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "activedTabIndex": 4,
+          "children": [
+            {
+              "name": "Overview",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 7,
+                  "h": 5,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Apdex"
+                  },
+                  "graph": {
+                    "type": "Card",
+                    "fontSize": 14,
+                    "textAlign": "center",
+                    "showUint": true
+                  },
+                  "standard": {
+                    "divide": "10000"
+                  },
+                  "metrics": [
+                    "service_apdex"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValue"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 7,
+                  "y": 0,
+                  "w": 9,
+                  "h": 5,
+                  "i": "1",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Successful Rate"
+                  },
+                  "graph": {
+                    "type": "Card",
+                    "fontSize": 14,
+                    "textAlign": "center",
+                    "showUint": true
+                  },
+                  "standard": {
+                    "divide": "100",
+                    "unit": "%"
+                  },
+                  "metrics": [
+                    "service_sla"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValue"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 16,
+                  "y": 0,
+                  "w": 8,
+                  "h": 5,
+                  "i": "2",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Load",
+                    "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
+                  },
+                  "graph": {
+                    "type": "Card",
+                    "fontSize": 14,
+                    "textAlign": "center",
+                    "showUint": true
+                  },
+                  "standard": {
+                    "divide": 100,
+                    "unit": "CPM / PPM"
+                  },
+                  "metrics": [
+                    "service_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValue"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 5,
+                  "w": 6,
+                  "h": 11,
+                  "i": "3",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Avg Response Time"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms"
+                  },
+                  "metrics": [
+                    "service_resp_time"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 6,
+                  "y": 5,
+                  "w": 6,
+                  "h": 11,
+                  "i": "4",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Apdex"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "divide": "10000"
+                  },
+                  "metrics": [
+                    "service_apdex"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 12,
+                  "y": 5,
+                  "w": 6,
+                  "h": 11,
+                  "i": "5",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Response Time Percentile"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "ms",
+                    "metricLabels": "P50, P75, P90, P95, P99",
+                    "labelsIndex": "0, 1, 2, 3, 4"
+                  },
+                  "metrics": [
+                    "service_percentile"
+                  ],
+                  "metricTypes": [
+                    "readLabeledMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 18,
+                  "y": 5,
+                  "w": 6,
+                  "h": 11,
+                  "i": "6",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Successful Rate"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "divide": 100,
+                    "unit": "%"
+                  },
+                  "metrics": [
+                    "service_sla"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 0,
+                  "y": 16,
+                  "w": 6,
+                  "h": 11,
+                  "i": "7",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Load",
+                    "tips": "For HTTP 1/2, gRPC, RPC services, this means Calls Per Minute (CPM), for TCP services, this means Packets Per Minute (PPM)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "standard": {
+                    "unit": "CPM / PPM",
+                    "divide": 1
+                  },
+                  "metrics": [
+                    "service_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                },
+                {
+                  "x": 6,
+                  "y": 16,
+                  "w": 6,
+                  "h": 11,
+                  "i": "8",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Service Throughput",
+                    "tips": "This metrics is only avaible for TCP services"
+                  },
+                  "graph": {},
+                  "standard": {
+                    "unit": "Bytes"
+                  },
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Instance",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {
+                    "type": "InstanceList",
+                    "dashboardName": "Mesh-Instance",
+                    "fontSize": 12
+                  },
+                  "standard": {},
+                  "metrics": [
+                    "service_instance_cpm"
+                  ],
+                  "metricTypes": [
+                    "readMetricsValues"
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Endpoint",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {
+                    "type": "EndpointList",
+                    "dashboardName": "",
+                    "fontSize": 12,
+                    "showXAxis": false,
+                    "showYAxis": false
+                  },
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Topology",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Topology",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {
+                    "showDepth": true
+                  },
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            },
+            {
+              "name": "Log",
+              "children": [
+                {
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 49,
+                  "i": "0",
+                  "type": "Log",
+                  "widget": {
+                    "title": "Title"
+                  },
+                  "graph": {},
+                  "standard": {},
+                  "metrics": [
+                    ""
+                  ],
+                  "metricTypes": [
+                    ""
+                  ],
+                  "moved": false
+                }
+              ]
+            }
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "MESH",
+      "entity": "Service",
+      "name": "Mesh-Service",
+      "id": "Mesh-Service"
+    }
+  }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/self-observability.yml b/oap-server/server-starter/src/main/resources/ui-initialized-templates/self-observability.yml
deleted file mode 100644
index 7ba920d..0000000
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/self-observability.yml
+++ /dev/null
@@ -1,230 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# UI templates initialized file includes the default template when the SkyWalking OAP starts up at the first time.
-#
-# 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: SelfObservability
-    type: "DASHBOARD"
-    configuration: |-
-      [
-        {
-          "name": "SelfObservability",
-          "type": "service",
-          "serviceGroup": "oap",
-          "children": [
-            {
-              "name": "oap-server",
-              "children": [
-                {
-                  "width": "3",
-                  "title": "CPU",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_oap_instance_cpu_percentage",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "%"
-                },
-                {
-                  "width": "3",
-                  "title": "Memory",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_oap_instance_jvm_memory_bytes_used",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "MB",
-                  "aggregation": "/",
-                  "aggregationNum": "1000000"
-                },
-                {
-                  "width": "3",
-                  "title": "GC Count",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "meter_oap_instance_jvm_gc_count",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartBar",
-                  "unit": "Per Minute"
-                },
-                {
-                  "width": 3,
-                  "title": "GC Time",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_oap_instance_jvm_young_gc_time,meter_oap_instance_jvm_old_gc_time",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine",
-                  "unit": "Millisecond"
-                },
-                {
-                  "width": 3,
-                  "title": "Trace Analysis Count",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_oap_instance_trace_count,meter_oap_instance_trace_analysis_error_count",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartBar",
-                  "unit": "Per Minute"
-                },
-                {
-                  "width": 3,
-                  "title": "Trace Analysis Latency",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "meter_oap_instance_trace_latency_percentile",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine",
-                  "labelsIndex": "50,70,90,99",
-                  "metricLabels": "50,70,90,99",
-                  "unit": "Millisecond"
-                },
-                {
-                  "width": 3,
-                  "title": "Mesh Analysis Count",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_oap_instance_mesh_count,meter_oap_instance_mesh_analysis_error_count",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartBar",
-                  "unit": "Per Minute"
-                },
-                {
-                  "width": 3,
-                  "title": "Mesh Analysis Latency",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "meter_oap_instance_mesh_latency_percentile",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricLabels": "50,70,90,99",
-                  "labelsIndex": "50,70,90,99",
-                  "unit": "Millisecond"
-                },
-                {
-                  "width": "3",
-                  "title": "Aggregation",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "meter_oap_instance_metrics_aggregation",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartBar",
-                  "unit": "Per Minute"
-                },
-                {
-                  "width": 3,
-                  "title": "Persistence Count",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_oap_instance_persistence_prepare_count,meter_oap_instance_persistence_execute_count,meter_oap_instance_persistence_error_count",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartBar",
-                  "unit": "Per 5 Minutes"
-                },
-                {
-                  "width": 3,
-                  "title": "Persistence Preparing Latency ",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "unit": "Millisecond",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricName": "meter_oap_instance_persistence_prepare_percentile",
-                  "metricLabels": "50,70,90,99",
-                  "labelsIndex": "50,70,90,99"
-                },
-                {
-                  "width": 3,
-                  "title": "Persistence Execution Latency ",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "LABELED_VALUE",
-                  "metricName": "meter_oap_instance_persistence_execute_percentile",
-                  "queryMetricType": "readLabeledMetricsValues",
-                  "chartType": "ChartLine",
-                  "metricLabels": "50,70,90,99",
-                  "labelsIndex": "50,70,90,99",
-                  "unit": "Millisecond"
-                },
-                {
-                  "width": 3,
-                  "title": "Thread Count",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_oap_jvm_thread_live_count,meter_oap_jvm_thread_daemon_count,meter_oap_jvm_thread_peak_count",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartLine"
-                },
-                {
-                  "width": 3,
-                  "title": "Thread State Count",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_oap_jvm_thread_runnable_count,meter_oap_jvm_thread_blocked_count,meter_oap_jvm_thread_waiting_count,meter_oap_jvm_thread_timed_waiting_count",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartBar"
-                },
-                {
-                  "width": 3,
-                  "title": "Class Count",
-                  "height": "200",
-                  "entityType": "ServiceInstance",
-                  "independentSelector": false,
-                  "metricType": "REGULAR_VALUE",
-                  "metricName": "meter_oap_jvm_class_loaded_count,meter_oap_jvm_class_total_unloaded_count,meter_oap_jvm_class_total_loaded_count",
-                  "queryMetricType": "readMetricsValues",
-                  "chartType": "ChartArea"
-                }
-              ]
-            }
-          ]
-        }
-      ]
-    # 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
\ No newline at end of file
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-all.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-all.json
new file mode 100644
index 0000000..d3b51fe
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-all.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": "Self-Observability-OAP-Root",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "0",
+          "type": "Widget",
+          "widget": {
+            "title": "Title"
+          },
+          "graph": {
+            "type": "ServiceList",
+            "dashboardName": "Self-Observability-OAP-Service",
+            "fontSize": 12,
+            "showXAxis": false,
+            "showYAxis": false,
+            "showGroup": true
+          },
+          "standard": {},
+          "metrics": [
+            ""
+          ],
+          "metricTypes": [
+            ""
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "SO11Y_OAP",
+      "entity": "All",
+      "name": "Self-Observability-OAP-Root",
+      "id": "Self-Observability-OAP-Root",
+      "isRoot": true
+    }
+  }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-instance.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-instance.json
new file mode 100644
index 0000000..60f957d
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-instance.json
@@ -0,0 +1,471 @@
+/**
+ * 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": "Self-Observability-OAP-Instance",
+    "configuration": {
+      "children": [
+        {
+          "x": 12,
+          "y": 12,
+          "w": 6,
+          "h": 13,
+          "i": "0",
+          "type": "Widget",
+          "widget": {
+            "title": "GC Count"
+          },
+          "graph": {
+            "type": "Bar",
+            "showBackground": true
+          },
+          "standard": {
+            "unit": "Per Minute"
+          },
+          "metrics": [
+            "meter_oap_instance_jvm_gc_count"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 6,
+          "y": 12,
+          "w": 6,
+          "h": 13,
+          "i": "1",
+          "type": "Widget",
+          "widget": {
+            "title": "Memory"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "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_oap_instance_jvm_memory_bytes_used"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 18,
+          "y": 12,
+          "w": 6,
+          "h": 13,
+          "i": "2",
+          "type": "Widget",
+          "widget": {
+            "title": "GC Time"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "unit": "Millisecond"
+          },
+          "metrics": [
+            "meter_oap_instance_jvm_young_gc_time",
+            "meter_oap_instance_jvm_old_gc_time"
+          ],
+          "metricTypes": [
+            "readMetricsValues",
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 12,
+          "y": 25,
+          "w": 6,
+          "h": 13,
+          "i": "3",
+          "type": "Widget",
+          "widget": {
+            "title": "Mesh Analysis Count"
+          },
+          "graph": {
+            "type": "Bar",
+            "showBackground": true
+          },
+          "standard": {
+            "unit": "Per Minute"
+          },
+          "metrics": [
+            "meter_oap_instance_mesh_count",
+            "meter_oap_instance_mesh_analysis_error_count"
+          ],
+          "metricTypes": [
+            "readMetricsValues",
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 6,
+          "y": 25,
+          "w": 6,
+          "h": 13,
+          "i": "4",
+          "type": "Widget",
+          "widget": {
+            "title": "Trace Analysis Latency"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "unit": "Millisecond",
+            "labelsIndex": "50,70,90,99"
+          },
+          "metrics": [
+            "meter_oap_instance_trace_latency_percentile"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 12,
+          "y": 51,
+          "w": 6,
+          "h": 13,
+          "i": "5",
+          "type": "Widget",
+          "widget": {
+            "title": "Class Count"
+          },
+          "graph": {
+            "type": "Area",
+            "opacity": 0.4,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "unit": ""
+          },
+          "metrics": [
+            "meter_oap_jvm_class_loaded_count",
+            "meter_oap_jvm_class_total_unloaded_count",
+            "meter_oap_jvm_class_total_loaded_count"
+          ],
+          "metricTypes": [
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 6,
+          "y": 38,
+          "w": 6,
+          "h": 13,
+          "i": "6",
+          "type": "Widget",
+          "widget": {
+            "title": "Persistence Count"
+          },
+          "graph": {
+            "type": "Bar",
+            "showBackground": true
+          },
+          "standard": {
+            "unit": "Per 5 Minutes"
+          },
+          "metrics": [
+            "meter_oap_instance_persistence_prepare_count",
+            "meter_oap_instance_persistence_execute_count"
+          ],
+          "metricTypes": [
+            "readMetricsValues",
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 51,
+          "w": 6,
+          "h": 13,
+          "i": "7",
+          "type": "Widget",
+          "widget": {
+            "title": "Thread Count"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "unit": ""
+          },
+          "metrics": [
+            "meter_oap_jvm_thread_live_count",
+            "meter_oap_jvm_thread_peak_count",
+            "meter_oap_jvm_thread_daemon_count"
+          ],
+          "metricTypes": [
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 18,
+          "y": 38,
+          "w": 6,
+          "h": 13,
+          "i": "8",
+          "type": "Widget",
+          "widget": {
+            "title": "Persistence Execution Latency "
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "unit": "Millisecond",
+            "metricLabels": "50,70,90,99"
+          },
+          "metrics": [
+            "meter_oap_instance_persistence_execute_percentile"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 12,
+          "y": 38,
+          "w": 6,
+          "h": 13,
+          "i": "9",
+          "type": "Widget",
+          "widget": {
+            "title": "Persistence Preparing Latency "
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "unit": "Millisecond",
+            "metricLabels": "50,70,90,99"
+          },
+          "metrics": [
+            "meter_oap_instance_persistence_prepare_percentile"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 6,
+          "y": 51,
+          "w": 6,
+          "h": 13,
+          "i": "10",
+          "type": "Widget",
+          "widget": {
+            "title": "Thread State Count"
+          },
+          "graph": {
+            "type": "Bar",
+            "showBackground": true
+          },
+          "standard": {
+            "unit": ""
+          },
+          "metrics": [
+            "meter_oap_jvm_thread_runnable_count",
+            "meter_oap_jvm_thread_timed_waiting_count",
+            "meter_oap_jvm_thread_blocked_count",
+            "meter_oap_jvm_thread_waiting_count"
+          ],
+          "metricTypes": [
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues",
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 38,
+          "w": 6,
+          "h": 13,
+          "i": "11",
+          "type": "Widget",
+          "widget": {
+            "title": "Aggregation"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "unit": "Per Minute"
+          },
+          "metrics": [
+            "meter_oap_instance_metrics_aggregation"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 18,
+          "y": 25,
+          "w": 6,
+          "h": 13,
+          "i": "12",
+          "type": "Widget",
+          "widget": {
+            "title": "Mesh Analysis Latency"
+          },
+          "graph": {},
+          "standard": {
+            "unit": "Millisecond",
+            "metricLabels": "50,70,90,99"
+          },
+          "metrics": [
+            "meter_oap_instance_mesh_latency_percentile"
+          ],
+          "metricTypes": [
+            "readLabeledMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 25,
+          "w": 6,
+          "h": 13,
+          "i": "13",
+          "type": "Widget",
+          "widget": {
+            "title": "Trace Analysis Count"
+          },
+          "graph": {
+            "type": "Bar",
+            "showBackground": true
+          },
+          "standard": {
+            "unit": "Per Minute"
+          },
+          "metrics": [
+            "meter_oap_instance_trace_count",
+            "meter_oap_instance_trace_analysis_error_count"
+          ],
+          "metricTypes": [
+            "readMetricsValues",
+            "readMetricsValues"
+          ],
+          "moved": false
+        },
+        {
+          "x": 0,
+          "y": 12,
+          "w": 6,
+          "h": 13,
+          "i": "14",
+          "type": "Widget",
+          "widget": {
+            "title": "CPU"
+          },
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
+          },
+          "standard": {
+            "unit": "%"
+          },
+          "metrics": [
+            "meter_oap_instance_cpu_percentage"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        }
+      ],
+      "name": "Self-Observability-OAP-Instance",
+      "layer": "SO11Y_OAP",
+      "entity": "ServiceInstance",
+      "isRoot": false,
+      "id": "Self-Observability-OAP-Instance"
+    }
+  }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-service.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-service.json
new file mode 100644
index 0000000..88b2636
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-service.json
@@ -0,0 +1,54 @@
+/**
+ * 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": "Self-Observability-OAP-Service",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 52,
+          "i": "0",
+          "type": "Widget",
+          "widget": {
+            "title": ""
+          },
+          "graph": {
+            "type": "InstanceList",
+            "dashboardName": "Self-Observability-OAP-Instance",
+            "fontSize": 12
+          },
+          "standard": {},
+          "metrics": [
+            "meter_oap_instance_cpu_percentage"
+          ],
+          "metricTypes": [
+            "readMetricsValues"
+          ],
+          "moved": false
+        }
+      ],
+      "layer": "SO11Y_OAP",
+      "entity": "Service",
+      "name": "Self-Observability-OAP-Service",
+      "id": "Self-Observability-OAP-Service"
+    }
+  }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/spring-sleuth.yml b/oap-server/server-starter/src/main/resources/ui-initialized-templates/spring-sleuth.yml
deleted file mode 100644
index d2084af..0000000
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/spring-sleuth.yml
+++ /dev/null
@@ -1,185 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# UI templates initialized file includes the default template when the SkyWalking OAP starts up at the first time.
-#
-# 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: Spring-Sleuth
-    type: "DASHBOARD"
-    configuration: |-
-      [
-        {
-          "name":"Spring Sleuth",
-          "type":"service",
-          "children":[
-            {
-              "name":"Sleuth",
-              "children": [{
-                "width": "3",
-                "title": "HTTP Request",
-                "height": "200",
-                "entityType": "ServiceInstance",
-                "independentSelector": false,
-                "metricType": "REGULAR_VALUE",
-                "metricName": "meter_http_server_requests_count",
-                "queryMetricType": "readMetricsValues",
-                "chartType": "ChartLine",
-                "unit": "Count"
-              }, {
-                "width": "3",
-                "title": "HTTP Request Duration",
-                "height": "200",
-                "entityType": "ServiceInstance",
-                "independentSelector": false,
-                "metricType": "REGULAR_VALUE",
-                "metricName": "meter_http_server_requests_duration",
-                "queryMetricType": "readMetricsValues",
-                "chartType": "ChartLine",
-                "unit": "ms"
-              }, {
-                "width": "3",
-                "title": "JDBC Connections",
-                "height": "200",
-                "entityType": "ServiceInstance",
-                "independentSelector": false,
-                "metricType": "REGULAR_VALUE",
-                "queryMetricType": "readMetricsValues",
-                "chartType": "ChartLine",
-                "metricName": "meter_jdbc_connections_max,meter_jdbc_connections_active,meter_jdbc_connections_idle",
-                "unit": "Count"
-              }, {
-                "width": "3",
-                "title": "Tomcat Session",
-                "height": "200",
-                "entityType": "ServiceInstance",
-                "independentSelector": false,
-                "metricType": "REGULAR_VALUE",
-                "queryMetricType": "readMetricsValues",
-                "chartType": "ChartLine",
-                "metricName": "meter_tomcat_sessions_active_max,meter_tomcat_sessions_active_current,meter_tomcat_sessions_rejected",
-                "unit": "Count"
-              }, {
-                "width": "3",
-                "title": "Instance CPU Usage",
-                "height": "200",
-                "entityType": "ServiceInstance",
-                "independentSelector": false,
-                "metricType": "REGULAR_VALUE",
-                "metricName": "meter_process_cpu_usage",
-                "queryMetricType": "readMetricsValues",
-                "chartType": "ChartLine",
-                "aggregation": "+",
-                "aggregationNum": "",
-                "unit": "%"
-              }, {
-                "width": "3",
-                "title": "OS CPU Usage",
-                "height": "200",
-                "entityType": "ServiceInstance",
-                "independentSelector": false,
-                "metricType": "REGULAR_VALUE",
-                "metricName": "meter_system_cpu_usage",
-                "queryMetricType": "readMetricsValues",
-                "chartType": "ChartLine",
-                "aggregation": "+",
-                "aggregationNum": "",
-                "unit": "%"
-              }, {
-                "width": "3",
-                "title": "OS System Load",
-                "height": "200",
-                "entityType": "ServiceInstance",
-                "independentSelector": false,
-                "metricType": "REGULAR_VALUE",
-                "metricName": "meter_system_load_average_1m",
-                "queryMetricType": "readMetricsValues",
-                "chartType": "ChartLine",
-                "unit": "",
-                "aggregation": "+",
-                "aggregationNum": ""
-              }, {
-                "width": "3",
-                "title": "OS Process File",
-                "height": "200",
-                "entityType": "ServiceInstance",
-                "independentSelector": false,
-                "metricType": "REGULAR_VALUE",
-                "metricName": "meter_process_files_max,meter_process_files_open",
-                "queryMetricType": "readMetricsValues",
-                "chartType": "ChartLine",
-                "unit": "Count",
-                "aggregation": "+",
-                "aggregationNum": ""
-              }, {
-                "width": "3",
-                "title": "JVM GC Pause Duration",
-                "height": "200",
-                "entityType": "ServiceInstance",
-                "independentSelector": false,
-                "metricType": "REGULAR_VALUE",
-                "metricName": "meter_jvm_gc_pause_duration",
-                "queryMetricType": "readMetricsValues",
-                "chartType": "ChartLine",
-                "unit": "ms",
-                "aggregation": "+",
-                "aggregationNum": ""
-              }, {
-                "width": "3",
-                "title": "JVM Memory",
-                "height": "200",
-                "entityType": "ServiceInstance",
-                "independentSelector": false,
-                "metricType": "REGULAR_VALUE",
-                "metricName": "meter_jvm_memory_max,meter_jvm_memory_used,meter_jvm_memory_committed",
-                "queryMetricType": "readMetricsValues",
-                "chartType": "ChartLine",
-                "aggregation": "/",
-                "aggregationNum": "1048576",
-                "unit": "MB"
-              }, {
-                "width": "3",
-                "title": "JVM Thread",
-                "height": "200",
-                "entityType": "ServiceInstance",
-                "independentSelector": false,
-                "metricType": "REGULAR_VALUE",
-                "metricName": "meter_jvm_threads_peak,meter_jvm_threads_live,meter_jvm_threads_daemon",
-                "queryMetricType": "readMetricsValues",
-                "chartType": "ChartLine",
-                "unit": "Count"
-              }, {
-                "width": "3",
-                "title": "JVM classes",
-                "height": "200",
-                "entityType": "ServiceInstance",
-                "independentSelector": false,
-                "metricType": "REGULAR_VALUE",
-                "metricName": "meter_jvm_classes_loaded,meter_jvm_classes_unloaded",
-                "queryMetricType": "readMetricsValues",
-                "chartType": "ChartLine",
-                "unit": "Count"
-              }]
-            }
-          ]
-      }
-      ]
-    # 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: false
-    # True means wouldn't show up on the dashboard. Only keeps the definition in the storage.
-    disabled: false
\ No newline at end of file
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/topology-endpoint-relation.yml b/oap-server/server-starter/src/main/resources/ui-initialized-templates/topology-endpoint-relation.yml
deleted file mode 100644
index 779ca3d..0000000
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/topology-endpoint-relation.yml
+++ /dev/null
@@ -1,81 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-templates:
-  - name: "Topology Endpoint Relation"
-    type: "TOPOLOGY_ENDPOINT_RELATION"
-    configuration: |-
-      {
-        "default":[
-          {
-            "width":3,
-            "title":"Response Time",
... 1580 lines suppressed ...