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

wankai 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 eef702ead4 Implement self-monitoring for BanyanDB via OAP Server and 
UI (#13527)
eef702ead4 is described below

commit eef702ead4367fd0980d19726ab6b9529dbda27c
Author: Ricky Xiang <[email protected]>
AuthorDate: Mon Oct 27 13:12:30 2025 +0000

    Implement self-monitoring for BanyanDB via OAP Server and UI (#13527)
---
 .github/workflows/skywalking.yaml                  |   2 +
 docs/en/banyandb/dashboards-banyandb.md            |  49 ++
 docs/en/changes/changes.md                         |   2 +
 docs/en/setup/backend/opentelemetry-receiver.md    |  64 +--
 docs/menu.yml                                      |   2 +
 .../skywalking/oap/server/core/analysis/Layer.java |   7 +-
 .../ui/template/UITemplateInitializer.java         |   1 +
 .../src/main/resources/application.yml             |   2 +-
 .../otel-rules/banyandb/banyandb-instance.yaml     |  86 +++
 .../otel-rules/banyandb/banyandb-service.yaml      |  86 +++
 .../banyandb/banyandb-instance.json                | 561 +++++++++++++++++++
 .../banyandb/banyandb-root.json                    |  45 ++
 .../banyandb/banyandb-service.json                 | 601 +++++++++++++++++++++
 .../resources/ui-initialized-templates/menu.yaml   |   7 +-
 test/e2e-v2/cases/banyandb/banyandb-cases.yaml     |  42 ++
 test/e2e-v2/cases/banyandb/docker-compose.yml      |  51 ++
 test/e2e-v2/cases/banyandb/e2e.yaml                |  39 ++
 .../cases/banyandb/expected/metrics-has-value.yml  |  35 ++
 .../cases/banyandb/otel-collector-config.yaml      |  48 ++
 19 files changed, 1696 insertions(+), 34 deletions(-)

diff --git a/.github/workflows/skywalking.yaml 
b/.github/workflows/skywalking.yaml
index 0bd11fca04..0850b6750d 100644
--- a/.github/workflows/skywalking.yaml
+++ b/.github/workflows/skywalking.yaml
@@ -366,6 +366,8 @@ jobs:
             config: test/e2e-v2/cases/storage/banyandb/e2e.yaml
           - name: BanyanDB TLS
             config: test/e2e-v2/cases/storage/banyandb/tls/e2e.yaml
+          - name: BanyanDB monitoring
+            config: test/e2e-v2/cases/banyandb/e2e.yaml
           - name: Storage MySQL
             config: test/e2e-v2/cases/storage/mysql/e2e.yaml
           - name: Storage PostgreSQL
diff --git a/docs/en/banyandb/dashboards-banyandb.md 
b/docs/en/banyandb/dashboards-banyandb.md
new file mode 100644
index 0000000000..8c5f8bdfc0
--- /dev/null
+++ b/docs/en/banyandb/dashboards-banyandb.md
@@ -0,0 +1,49 @@
+# BanyanDB self observability dashboard
+
+[BanyanDB](https://skywalking.apache.org/docs/skywalking-banyandb/next/readme/),
 as an observability database, aims to ingest, analyze and store Metrics, 
Tracing, and Logging data. It's designed to handle observability data generated 
by **Apache SkyWalking**,it also provides a dashboard to visualize the 
self-observability metrics.
+
+## Data flow
+1. 
[BanyanDB](https://skywalking.apache.org/docs/skywalking-banyandb/next/readme/) 
collects metrics data internally and exposes a Prometheus http endpoint to 
retrieve the metrics.
+2. OpenTelemetry Collector fetches metrics from BanyanDB and pushes metrics to 
SkyWalking OAP Server via OpenTelemetry gRPC exporter.
+3. The SkyWalking OAP Server parses the expression with 
[MAL](../concepts-and-designs/mal.md) to filter/calculate/aggregate and store 
the results.
+
+## Set up
+1. Start 
[BanyanDB](https://skywalking.apache.org/docs/skywalking-banyandb/next/readme/),supporting
 both [Standalone 
Mode](https://skywalking.apache.org/docs/skywalking-banyandb/next/installation/standalone/)
 and [Cluster 
Mode](https://skywalking.apache.org/docs/skywalking-banyandb/next/installation/cluster/).
+2. Set up [OpenTelemetry Collector 
](https://opentelemetry.io/docs/collector/getting-started/#docker). For details 
on Prometheus Receiver in OpenTelemetry Collector, refer to 
[here](../../../test/e2e-v2/cases/banyandb/otel-collector-config.yaml).
+3. Config SkyWalking [OpenTelemetry 
receiver](https://skywalking.apache.org/docs/main/next/en/setup/backend/opentelemetry-receiver/).
+
+## BanyanDB monitoring
+Self observability monitoring provides monitoring of the status and resources 
of the 
[BanyanDB](https://skywalking.apache.org/docs/skywalking-banyandb/next/readme/) 
server itself. `banyandb-server` is a `Service` in BanyanDB, and land on the 
`Layer: BANYANDB`.
+
+### Self observability metrics
+
+| Unit | Metric Name                                       | Description | 
Data Source |
+|------|---------------------------------------------------|-------------|-------------|
+| o/s | meter_banyandb_write_rate                        | Write Rate 
(Operations per Second) | BanyanDB |
+| GiB | meter_banyandb_total_memory                      | Total Memory | 
BanyanDB |
+| GiB | meter_banyandb_disk_usage                        | Disk Usage | 
BanyanDB |
+| r/s | meter_banyandb_query_rate                        | Query Rate 
(Requests per Second) | BanyanDB |
+| Count | meter_banyandb_total_cpu                        | Total CPU Cores | 
BanyanDB |
+| c/m | meter_banyandb_write_and_query_errors_rate      | Write and Query 
Errors Rate(Counts per Minute) | BanyanDB |
+| c/s | meter_banyandb_etcd_operation_rate               | Etcd Operation 
Rate(Counts per Second) | BanyanDB |
+| Count | meter_banyandb_active_instance                  | Active Instances | 
BanyanDB |
+| % | meter_banyandb_cpu_usage                        | CPU Usage Percentage | 
BanyanDB |
+| % | meter_banyandb_rss_memory_usage                 | RSS Memory Usage 
Percentage | BanyanDB |
+| % | meter_banyandb_disk_usage_all                   | Disk Usage Percentage 
| BanyanDB |
+| KiB/s | meter_banyandb_network_usage_recv               | Network Receive 
Rate | BanyanDB |
+| KiB/s | meter_banyandb_network_usage_sent               | Network Send Rate 
| BanyanDB |
+| o/s | meter_banyandb_storage_write_rate               | Storage Write Rate 
(Operations per Second) | BanyanDB |
+| s | meter_banyandb_query_latency                    | Query Latency (s) | 
BanyanDB |
+| Count | meter_banyandb_total_data                      | Total Data Elements 
| BanyanDB |
+| r/m | meter_banyandb_merge_file_data                 | Merge File Data 
Rate(Revolutions per Minute) | BanyanDB |
+| s | meter_banyandb_merge_file_latency              | Merge File Latency(s) | 
BanyanDB |
+| Count | meter_banyandb_merge_file_partitions          | Merge File 
Partitions | BanyanDB |
+| o/s | meter_banyandb_series_write_rate               | Series Write Rate 
(Operations per Second) | BanyanDB |
+| o/s | meter_banyandb_series_term_search_rate         | Series Term Search 
Rate (Operations per Second) | BanyanDB |
+| Count | meter_banyandb_total_series                   | Total Series Count | 
BanyanDB |
+| ops | meter_banyandb_stream_write_rate              | Stream Write Rate 
(Operations per Second) | BanyanDB |
+| ops | meter_banyandb_term_search_rate                | Term Search Rate 
(Operations per Second) | BanyanDB |
+| Count | meter_banyandb_total_document                 | Total Document Count 
| BanyanDB |
+
+## Customizations
+You can customize your own metrics/expression/dashboard panel.The metrics 
definition and expression rules are found in `/config/otel-rules/banyandb`.The 
[BanyanDB](https://skywalking.apache.org/docs/skywalking-banyandb/next/readme/) 
dashboard panel configurations are found in 
`/config/ui-initialized-templates/banyandb`.
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index e2bd5937b8..caa250e63c 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -10,6 +10,7 @@
 
 #### OAP Server
 
+* Implement self-monitoring for BanyanDB via OAP Server.
 * BanyanDB: Support `hot/warm/cold` stages configuration.
 * Fix query continues profiling policies error when the policy is already in 
the cache.
 * Support `hot/warm/cold` stages TTL query in the status API and graphQL API.
@@ -116,6 +117,7 @@
 
 #### UI
 
+* Implement self-monitoring for BanyanDB via UI.
 * Enhance the trace `List/Tree/Table` graph to support displaying multiple 
refs of spans and distinguishing different parents.
 * Fix: correct the same labels for metrics.
 * Refactor: use the Fetch API to instead of Axios.
diff --git a/docs/en/setup/backend/opentelemetry-receiver.md 
b/docs/en/setup/backend/opentelemetry-receiver.md
index 6e60c866b2..e17e309b87 100644
--- a/docs/en/setup/backend/opentelemetry-receiver.md
+++ b/docs/en/setup/backend/opentelemetry-receiver.md
@@ -28,39 +28,41 @@ for identification of the metric data.
 
 **Notice:** In the resource scope, dots (.) in the attributes' key names are 
converted to underscores (_), whereas in the metrics scope, they are not 
converted.
 
-| Description                             | Configuration File                 
                 | Data Source                                                  
                                                         |
-|-----------------------------------------|-----------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|
-| Metrics of Istio Control Plane          | otel-rules/istio-controlplane.yaml 
                 | Istio Control Plane -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server                             |
-| Metrics of SkyWalking OAP server itself | otel-rules/oap.yaml                
                 | SkyWalking OAP Server(SelfObservability) -> OpenTelemetry 
Collector -- OTLP exporter --> SkyWalking OAP Server        |
-| Metrics of Linux OS                     | otel-rules/vm.yaml                 
                 | prometheus/node_exporter -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server                        |
-| Metrics of Windows OS                   | otel-rules/windows.yaml            
                 | prometheus-community/windows_exporter -> OpenTelemetry 
Collector -- OTLP exporter --> SkyWalking OAP Server           |
-| Metrics of K8s cluster                  | otel-rules/k8s/k8s-cluster.yaml    
                 | K8s kube-state-metrics -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server                          |
-| Metrics of K8s cluster                  | otel-rules/k8s/k8s-node.yaml       
                 | cAdvisor & K8s kube-state-metrics -> OpenTelemetry Collector 
-- OTLP exporter --> SkyWalking OAP Server               |
-| Metrics of K8s cluster                  | otel-rules/k8s/k8s-service.yaml    
                 | cAdvisor & K8s kube-state-metrics -> OpenTelemetry Collector 
-- OTLP exporter --> SkyWalking OAP Server               |
-| Metrics of MYSQL                        | 
otel-rules/mysql/mysql-instance.yaml                | 
prometheus/mysqld_exporter -> OpenTelemetry Collector -- OTLP exporter --> 
SkyWalking OAP Server                      |
-| Metrics of MYSQL                        | 
otel-rules/mysql/mysql-service.yaml                 | 
prometheus/mysqld_exporter -> OpenTelemetry Collector -- OTLP exporter --> 
SkyWalking OAP Server                      |
-| Metrics of PostgreSQL                   | 
otel-rules/postgresql/postgresql-instance.yaml      | 
prometheus-community/postgres_exporter -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server          |
-| Metrics of PostgreSQL                   | 
otel-rules/postgresql/postgresql-service.yaml       | 
prometheus-community/postgres_exporter -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server          |
-| Metrics of Apache APISIX                | otel-rules/apisix.yaml             
                 | apisix prometheus plugin -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server                        |
-| Metrics of AWS Cloud EKS                | 
otel-rules/aws-eks/eks-cluster.yaml                 | AWS Container Insights 
Receiver -> OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server  
               |
-| Metrics of AWS Cloud EKS                | 
otel-rules/aws-eks/eks-service.yaml                 | AWS Container Insights 
Receiver -> OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server  
               |
-| Metrics of AWS Cloud EKS                | otel-rules/aws-eks/eks-node.yaml   
                 | AWS Container Insights Receiver -> OpenTelemetry Collector 
-- OTLP exporter --> SkyWalking OAP Server                 |
-| Metrics of Elasticsearch                | 
otel-rules/elasticsearch/elasticsearch-cluster.yaml | 
prometheus-community/elasticsearch_exporter -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server     |
-| Metrics of Elasticsearch                | 
otel-rules/elasticsearch/elasticsearch-index.yaml   | 
prometheus-community/elasticsearch_exporter -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server     |
-| Metrics of Elasticsearch                | 
otel-rules/elasticsearch/elasticsearch-node.yaml    | 
prometheus-community/elasticsearch_exporter -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server     |
-| Metrics of Redis                        | 
otel-rules/redis/redis-service.yaml                 | oliver006/redis_exporter 
-> OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server           
             |
-| Metrics of Redis                        | 
otel-rules/redis/redis-instance.yaml                | oliver006/redis_exporter 
-> OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server           
             |
-| Metrics of RabbitMQ                     | 
otel-rules/rabbitmq/rabbitmq-cluster.yaml           | rabbitmq-prometheus -> 
OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server              
               |
-| Metrics of RabbitMQ                     | 
otel-rules/rabbitmq/rabbitmq-node.yaml              | rabbitmq-prometheus -> 
OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server              
               |
-| Metrics of MongoDB                      | 
otel-rules/mongodb/mongodb-cluster.yaml             | percona/mongodb_exporter 
-> OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server           
             |
-| Metrics of MongoDB                      | 
otel-rules/mongodb/mongodb-node.yaml                | percona/mongodb_exporter 
-> OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server           
             |
+| Description                             | Configuration File                 
                 | Data Source                                                  
                                                          |
+|-----------------------------------------|-----------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|
+| Metrics of Istio Control Plane          | otel-rules/istio-controlplane.yaml 
                 | Istio Control Plane -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server                              |
+| Metrics of SkyWalking OAP server itself | otel-rules/oap.yaml                
                 | SkyWalking OAP Server(SelfObservability) -> OpenTelemetry 
Collector -- OTLP exporter --> SkyWalking OAP Server         |
+| Metrics of Linux OS                     | otel-rules/vm.yaml                 
                 | prometheus/node_exporter -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server                         |
+| Metrics of Windows OS                   | otel-rules/windows.yaml            
                 | prometheus-community/windows_exporter -> OpenTelemetry 
Collector -- OTLP exporter --> SkyWalking OAP Server            |
+| Metrics of K8s cluster                  | otel-rules/k8s/k8s-cluster.yaml    
                 | K8s kube-state-metrics -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server                           |
+| Metrics of K8s cluster                  | otel-rules/k8s/k8s-node.yaml       
                 | cAdvisor & K8s kube-state-metrics -> OpenTelemetry Collector 
-- OTLP exporter --> SkyWalking OAP Server                |
+| Metrics of K8s cluster                  | otel-rules/k8s/k8s-service.yaml    
                 | cAdvisor & K8s kube-state-metrics -> OpenTelemetry Collector 
-- OTLP exporter --> SkyWalking OAP Server                |
+| Metrics of MYSQL                        | 
otel-rules/mysql/mysql-instance.yaml                | 
prometheus/mysqld_exporter -> OpenTelemetry Collector -- OTLP exporter --> 
SkyWalking OAP Server                       |
+| Metrics of MYSQL                        | 
otel-rules/mysql/mysql-service.yaml                 | 
prometheus/mysqld_exporter -> OpenTelemetry Collector -- OTLP exporter --> 
SkyWalking OAP Server                       |
+| Metrics of PostgreSQL                   | 
otel-rules/postgresql/postgresql-instance.yaml      | 
prometheus-community/postgres_exporter -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server           |
+| Metrics of PostgreSQL                   | 
otel-rules/postgresql/postgresql-service.yaml       | 
prometheus-community/postgres_exporter -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server           |
+| Metrics of Apache APISIX                | otel-rules/apisix.yaml             
                 | apisix prometheus plugin -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server                         |
+| Metrics of AWS Cloud EKS                | 
otel-rules/aws-eks/eks-cluster.yaml                 | AWS Container Insights 
Receiver -> OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server  
                |
+| Metrics of AWS Cloud EKS                | 
otel-rules/aws-eks/eks-service.yaml                 | AWS Container Insights 
Receiver -> OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server  
                |
+| Metrics of AWS Cloud EKS                | otel-rules/aws-eks/eks-node.yaml   
                 | AWS Container Insights Receiver -> OpenTelemetry Collector 
-- OTLP exporter --> SkyWalking OAP Server                  |
+| Metrics of Elasticsearch                | 
otel-rules/elasticsearch/elasticsearch-cluster.yaml | 
prometheus-community/elasticsearch_exporter -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server      |
+| Metrics of Elasticsearch                | 
otel-rules/elasticsearch/elasticsearch-index.yaml   | 
prometheus-community/elasticsearch_exporter -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server      |
+| Metrics of Elasticsearch                | 
otel-rules/elasticsearch/elasticsearch-node.yaml    | 
prometheus-community/elasticsearch_exporter -> OpenTelemetry Collector -- OTLP 
exporter --> SkyWalking OAP Server      |
+| Metrics of Redis                        | 
otel-rules/redis/redis-service.yaml                 | oliver006/redis_exporter 
-> OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server           
              |
+| Metrics of Redis                        | 
otel-rules/redis/redis-instance.yaml                | oliver006/redis_exporter 
-> OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server           
              |
+| Metrics of RabbitMQ                     | 
otel-rules/rabbitmq/rabbitmq-cluster.yaml           | rabbitmq-prometheus -> 
OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server              
                |
+| Metrics of RabbitMQ                     | 
otel-rules/rabbitmq/rabbitmq-node.yaml              | rabbitmq-prometheus -> 
OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server              
                |
+| Metrics of MongoDB                      | 
otel-rules/mongodb/mongodb-cluster.yaml             | percona/mongodb_exporter 
-> OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server           
              |
+| Metrics of MongoDB                      | 
otel-rules/mongodb/mongodb-node.yaml                | percona/mongodb_exporter 
-> OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server           
              |
 | Metrics of Kafka                        | 
otel-rules/kafka/kafka-cluster.yaml                 | 
prometheus/jmx_exporter/jmx_prometheus_javaagent -> OpenTelemetry Collector -- 
OTLP exporter --> SkyWalking OAP Server |
 | Metrics of Kafka                        | otel-rules/kafka/kafka-broker.yaml 
                 | prometheus/jmx_exporter/jmx_prometheus_javaagent -> 
OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server |
-| Metrics of ClickHouse                   | 
otel-rules/clickhouse/clickhouse-instance.yaml      | ClickHouse(embedded 
prometheus endpoint) -> OpenTelemetry Collector -- OTLP exporter --> SkyWalking 
OAP Server        |
-| Metrics of ClickHouse                   | 
otel-rules/clickhouse/clickhouse-service.yaml       | ClickHouse(embedded 
prometheus endpoint) -> OpenTelemetry Collector -- OTLP exporter --> SkyWalking 
OAP Server        |
-| Metrics of RocketMQ                     | 
otel-rules/rocketmq/rocketmq-cluster.yaml           | rocketmq-exporter -> 
OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server              
                   |
-| Metrics of RocketMQ                     | 
otel-rules/rocketmq/rocketmq-broker.yaml            | rocketmq-exporter -> 
OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server              
                   |
-| Metrics of RocketMQ                     | 
otel-rules/rocketmq/rocketmq-topic.yaml             | rocketmq-exporter -> 
OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server              
                   |
+| Metrics of ClickHouse                   | 
otel-rules/clickhouse/clickhouse-instance.yaml      | ClickHouse(embedded 
prometheus endpoint) -> OpenTelemetry Collector -- OTLP exporter --> SkyWalking 
OAP Server         |
+| Metrics of ClickHouse                   | 
otel-rules/clickhouse/clickhouse-service.yaml       | ClickHouse(embedded 
prometheus endpoint) -> OpenTelemetry Collector -- OTLP exporter --> SkyWalking 
OAP Server         |
+| Metrics of RocketMQ                     | 
otel-rules/rocketmq/rocketmq-cluster.yaml           | rocketmq-exporter -> 
OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server              
                  |
+| Metrics of RocketMQ                     | 
otel-rules/rocketmq/rocketmq-broker.yaml            | rocketmq-exporter -> 
OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server              
                  |
+| Metrics of RocketMQ                     | 
otel-rules/rocketmq/rocketmq-topic.yaml             | rocketmq-exporter -> 
OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server              
                  |
 | Metrics of Flink                        | 
otel-rules/flink/flink-jobManager.yaml              | flink jobManager -> 
OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server              
                   |
 | Metrics of Flink                        | 
otel-rules/flink/flink-taskManager.yaml             | flink taskManager -> 
OpenTelemetry Collector -- OTLP exporter --> SkyWalking OAP Server              
                  |
 | Metrics of Flink                        | otel-rules/flink/flink-job.yaml    
                 | flink jobManager &  flink taskManager-> OpenTelemetry 
Collector -- OTLP exporter --> SkyWalking OAP Server             |
+| Metrics of BanyanDB                     | 
otel-rules/banyandb/banyandb-instance.yaml          | BanyanDB(embedded 
prometheus endpoint) -> OpenTelemetry Collector – OTLP exporter –> SkyWalking 
OAP Server             |
+| Metrics of BanyanDB                     | 
otel-rules/banyandb/banyandb-service.yaml           | BanyanDB(embedded 
prometheus endpoint) -> OpenTelemetry Collector – OTLP exporter –> SkyWalking 
OAP Server             |
\ No newline at end of file
diff --git a/docs/menu.yml b/docs/menu.yml
index 702fd19234..f2a2fe4257 100644
--- a/docs/menu.yml
+++ b/docs/menu.yml
@@ -210,6 +210,8 @@ catalog:
             path: "/en/banyandb/ttl"
           - name: "Data Lifecycle Stages(Hot/Warm/Cold)"
             path: "/en/banyandb/stages"
+          - name: "BanyanDB self observability dashboard"
+            path: "/en/banyandb/dashboards-banyandb"
       - name: "Tracing"
         catalog:
           - name: "Trace Sampling"
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java
index 6e7380d409..487b886278 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java
@@ -256,7 +256,12 @@ public enum Layer {
     /**
      * Apache Flink is a framework and distributed processing engine for 
stateful computations over unbounded and bounded data streams
      */
-    FLINK(42, true);
+    FLINK(42, true),
+
+    /**
+     * BanyanDB is a distributed time-series database with built-in 
self-monitoring for real-time tracking of system health, performance, and 
resource utilization.
+     */
+    BANYANDB(43, true);
 
     private final int value;
     /**
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 c859c0de21..dd01e97c19 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
@@ -80,6 +80,7 @@ public class UITemplateInitializer {
         Layer.KONG.name(),
         Layer.SO11Y_GO_AGENT.name(),
         Layer.FLINK.name(),
+        Layer.BANYANDB.name(),
         "custom"
     };
     private final UITemplateManagementService uiTemplateManagementService;
diff --git a/oap-server/server-starter/src/main/resources/application.yml 
b/oap-server/server-starter/src/main/resources/application.yml
index 7f08264942..fd6356f203 100644
--- a/oap-server/server-starter/src/main/resources/application.yml
+++ b/oap-server/server-starter/src/main/resources/application.yml
@@ -383,7 +383,7 @@ receiver-otel:
   selector: ${SW_OTEL_RECEIVER:default}
   default:
     enabledHandlers: 
${SW_OTEL_RECEIVER_ENABLED_HANDLERS:"otlp-metrics,otlp-logs"}
-    enabledOtelMetricsRules: 
${SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES:"apisix,nginx/*,k8s/*,istio-controlplane,vm,mysql/*,postgresql/*,oap,aws-eks/*,windows,aws-s3/*,aws-dynamodb/*,aws-gateway/*,redis/*,elasticsearch/*,rabbitmq/*,mongodb/*,kafka/*,pulsar/*,bookkeeper/*,rocketmq/*,clickhouse/*,activemq/*,kong/*,flink/*"}
+    enabledOtelMetricsRules: 
${SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES:"apisix,nginx/*,k8s/*,istio-controlplane,vm,mysql/*,postgresql/*,oap,aws-eks/*,windows,aws-s3/*,aws-dynamodb/*,aws-gateway/*,redis/*,elasticsearch/*,rabbitmq/*,mongodb/*,kafka/*,pulsar/*,bookkeeper/*,rocketmq/*,clickhouse/*,activemq/*,kong/*,flink/*,banyandb/*"}
 
 receiver-zipkin:
   selector: ${SW_RECEIVER_ZIPKIN:-}
diff --git 
a/oap-server/server-starter/src/main/resources/otel-rules/banyandb/banyandb-instance.yaml
 
b/oap-server/server-starter/src/main/resources/otel-rules/banyandb/banyandb-instance.yaml
new file mode 100644
index 0000000000..21955331f3
--- /dev/null
+++ 
b/oap-server/server-starter/src/main/resources/otel-rules/banyandb/banyandb-instance.yaml
@@ -0,0 +1,86 @@
+# 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.
+
+# This will parse a textual representation of a duration. The formats
+# accepted are based on the ISO-8601 duration format {@code PnDTnHnMn.nS}
+# with days considered to be exactly 24 hours.
+# <p>
+# Examples:
+# <pre>
+#    "PT20.345S" -- parses as "20.345 seconds"
+#    "PT15M"     -- parses as "15 minutes" (where a minute is 60 seconds)
+#    "PT10H"     -- parses as "10 hours" (where an hour is 3600 seconds)
+#    "P2D"       -- parses as "2 days" (where a day is 24 hours or 86400 
seconds)
+#    "P2DT3H4M"  -- parses as "2 days, 3 hours and 4 minutes"
+#    "P-6H3M"    -- parses as "-6 hours and +3 minutes"
+#    "-P6H3M"    -- parses as "-6 hours and -3 minutes"
+#    "-P-6H+3M"  -- parses as "+6 hours and -3 minutes"
+# </pre>
+filter: "{ tags -> tags.job_name == 'banyandb-monitoring' }"
+expSuffix:  tag({tags -> tags.host_name = 'banyandb::' + 
tags.host_name}).service(['host_name'] , 
Layer.BANYANDB).instance(['host_name'], ['service_instance_id'], Layer.BANYANDB)
+metricPrefix: meter_banyandb
+metricsRules:
+  - name: instance_write_rate
+    exp: 
banyandb_measure_total_written.rate('PT15S')+banyandb_stream_tst_total_written.rate('PT15S')
+  - name: instance_total_memory
+    exp: banyandb_system_memory_state.tagEqual('kind','total')
+  - name: instance_disk_usage
+    exp: 
banyandb_system_disk.tagEqual('kind','used').sum(['host_name','service_instance_id'])
+  - name: instance_query_rate
+    exp: 
banyandb_liaison_grpc_total_started.sum(['method','host_name','service_instance_id'])
+  - name: instance_total_cpu
+    exp: banyandb_system_cpu_num
+  - name: instance_write_and_query_errors_rate
+    exp: 
banyandb_liaison_grpc_total_err.tagEqual('method','query').sum(['method','host_name','service_instance_id']).rate('PT15S')*60
 + 
banyandb_liaison_grpc_total_stream_msg_sent_err.sum(['host_name','service_instance_id']).rate('PT15S')*60
 + 
banyandb_liaison_grpc_total_stream_msg_received_err.sum(['host_name','service_instance_id']).rate('PT15S')*60
 + 
banyandb_queue_sub_total_msg_sent_err.sum(['host_name','service_instance_id']).rate('PT15S')*60
+  - name: instance_etcd_operation_rate
+    exp: 
banyandb_liaison_grpc_total_registry_started.sum(['host_name','service_instance_id']).rate('PT15S')
 + 
banyandb_liaison_grpc_total_started.sum(['host_name','service_instance_id']).rate('PT15S')
+  - name: instance_active_instance
+    exp: up.sum(['host_name','service_instance_id']).downsampling(MIN)
+  - name: instance_cpu_usage
+    exp: 
(((process_cpu_seconds_total.sum(['host_name','service_instance_id']).rate('PT15S')
 / 
banyandb_system_cpu_num.sum(['host_name','service_instance_id']))).max(['host_name','service_instance_id']))*1000
+  - name: instance_rss_memory_usage
+    exp: 
((process_resident_memory_bytes.sum(['host_name','service_instance_id']).downsampling(MAX)
 / 
banyandb_system_memory_state.tagEqual('kind','total').sum(['host_name','service_instance_id'])).max(['host_name','service_instance_id']))*1000
+  - name: instance_disk_usage_all
+    exp: 
((banyandb_system_disk.tagEqual('kind','used').sum(['host_name','service_instance_id'])
 / 
banyandb_system_memory_state.tagEqual('kind','total').sum(['host_name','service_instance_id'])).max(['host_name','service_instance_id']))*1000
+  - name: instance_network_usage_recv
+    exp: 
banyandb_system_net_state.tagEqual('kind','bytes_recv').sum(['host_name','service_instance_id']).rate('PT15S')
+  - name: instance_network_usage_sent
+    exp: 
banyandb_system_net_state.tagEqual('kind','bytes_sent').sum(['host_name','service_instance_id']).rate('PT15S')
+  - name: instance_storage_write_rate
+    exp: 
banyandb_measure_total_written.sum(['group','host_name','service_instance_id']).rate('PT15S')*1000
+  - name: instance_query_latency
+    exp: 
(banyandb_liaison_grpc_total_latency.tagEqual('method','query').sum(['group','host_name','service_instance_id']).rate('PT15S')
 / 
banyandb_liaison_grpc_total_started.tagEqual('method','query').sum(['group','host_name','service_instance_id']).rate('PT15S'))*1000
+  - name: instance_total_data
+    exp: 
banyandb_measure_total_file_elements.sum(['group','host_name','service_instance_id'])
+  - name: instance_merge_file_data
+    exp: 
banyandb_measure_total_merge_loop_started.sum(['group','host_name','service_instance_id']).rate('PT15S')
 * 60 *1000
+  - name: instance_merge_file_latency
+    exp: 
(banyandb_measure_total_merge_latency.tagEqual('type','file').sum(['group','host_name','service_instance_id']).rate('PT15S')
 / 
banyandb_measure_total_merge_loop_started.sum(['group','host_name','service_instance_id']).rate('PT15S'))*1000
+  - name: instance_merge_file_partitions
+    exp: 
(banyandb_measure_total_merged_parts.tagEqual('type','file').sum(['group','host_name','service_instance_id']).rate('PT15S')
 / 
banyandb_measure_total_merge_loop_started.sum(['group','host_name','service_instance_id']).rate('PT15S'))*1000
+  - name: instance_series_write_rate
+    exp: 
(banyandb_measure_inverted_index_total_updates.sum(['group','host_name','service_instance_id']).rate('PT15S'))*1000
+  - name: instance_series_term_search_rate
+    exp: 
banyandb_stream_storage_inverted_index_total_term_searchers_started.sum(['group','host_name','service_instance_id']).rate('PT15S')
+  - name: instance_total_series
+    exp: 
banyandb_measure_inverted_index_total_doc_count.sum(['group','host_name','service_instance_id'])
+  - name: instance_stream_write_rate
+    exp: 
banyandb_stream_tst_inverted_index_total_updates.sum(['group','host_name','service_instance_id']).rate('PT15S')
+  - name: instance_term_search_rate
+    exp: 
banyandb_stream_tst_inverted_index_total_term_searchers_started.sum(['group','host_name','service_instance_id']).rate('PT15S')*
 1000
+  - name: instance_total_document
+    exp: 
banyandb_stream_tst_inverted_index_total_doc_count.sum(['group','host_name','service_instance_id'])
+
+
diff --git 
a/oap-server/server-starter/src/main/resources/otel-rules/banyandb/banyandb-service.yaml
 
b/oap-server/server-starter/src/main/resources/otel-rules/banyandb/banyandb-service.yaml
new file mode 100644
index 0000000000..566f893cc4
--- /dev/null
+++ 
b/oap-server/server-starter/src/main/resources/otel-rules/banyandb/banyandb-service.yaml
@@ -0,0 +1,86 @@
+# 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.
+
+# This will parse a textual representation of a duration. The formats
+# accepted are based on the ISO-8601 duration format {@code PnDTnHnMn.nS}
+# with days considered to be exactly 24 hours.
+# <p>
+# Examples:
+# <pre>
+#    "PT20.345S" -- parses as "20.345 seconds"
+#    "PT15M"     -- parses as "15 minutes" (where a minute is 60 seconds)
+#    "PT10H"     -- parses as "10 hours" (where an hour is 3600 seconds)
+#    "P2D"       -- parses as "2 days" (where a day is 24 hours or 86400 
seconds)
+#    "P2DT3H4M"  -- parses as "2 days, 3 hours and 4 minutes"
+#    "P-6H3M"    -- parses as "-6 hours and +3 minutes"
+#    "-P6H3M"    -- parses as "-6 hours and -3 minutes"
+#    "-P-6H+3M"  -- parses as "+6 hours and -3 minutes"
+# </pre>
+filter: "{ tags -> tags.job_name == 'banyandb-monitoring' }"
+expSuffix:  tag({tags -> tags.host_name = 'banyandb::' + 
tags.host_name}).service(['host_name'] , Layer.BANYANDB)
+metricPrefix: meter_banyandb
+metricsRules:
+  - name: write_rate
+    exp: 
(banyandb_measure_total_written.sum(['host_name','service_instance_id']).rate('PT15S')
 + 
banyandb_stream_tst_total_written.sum(['host_name','service_instance_id']).rate('PT15S'))
+  - name: total_memory
+    exp: 
banyandb_system_memory_state.tagEqual('kind','total').sum(['host_name'])
+  - name: disk_usage
+    exp: 
banyandb_system_disk.tagEqual('kind','used').sum(['host_name','service_instance_id'])
+  - name: query_rate
+    exp: 
banyandb_liaison_grpc_total_started.sum(['method','host_name','service_instance_id'])
+  - name: total_cpu
+    exp: 
banyandb_system_cpu_num.sum(['method','host_name','service_instance_id'])
+  - name: write_and_query_errors_rate
+    exp: 
banyandb_liaison_grpc_total_err.tagEqual('method','query').sum(['method','host_name','service_instance_id']).rate('PT15S')*60
 + 
banyandb_liaison_grpc_total_stream_msg_sent_err.sum(['host_name','service_instance_id']).rate('PT15S')*60
 + 
banyandb_liaison_grpc_total_stream_msg_received_err.sum(['host_name','service_instance_id']).rate('PT15S')*60
 + 
banyandb_queue_sub_total_msg_sent_err.sum(['host_name','service_instance_id']).rate('PT15S')*60
+  - name: etcd_operation_rate
+    exp: 
banyandb_liaison_grpc_total_registry_started.sum(['host_name','service_instance_id']).rate('PT15S')
 + 
banyandb_liaison_grpc_total_started.sum(['host_name','service_instance_id']).rate('PT15S')
+  - name: active_instance
+    exp: up.sum(['host_name','service_instance_id']).downsampling(MIN)
+  - name: cpu_usage
+    exp: 
(((process_cpu_seconds_total.sum(['host_name','service_instance_id']).rate('PT15S')
 / 
banyandb_system_cpu_num.sum(['host_name','service_instance_id']))).max(['host_name','service_instance_id']))*1000
+  - name: rss_memory_usage
+    exp: 
((process_resident_memory_bytes.sum(['host_name','service_instance_id']).downsampling(MAX)
 / 
banyandb_system_memory_state.tagEqual('kind','total').sum(['host_name','service_instance_id'])).max(['host_name','service_instance_id']))*1000
+  - name: disk_usage_all
+    exp: 
((banyandb_system_disk.tagEqual('kind','used').sum(['host_name','service_instance_id'])
 / 
banyandb_system_memory_state.tagEqual('kind','total').sum(['host_name','service_instance_id'])).max(['host_name','service_instance_id']))*1000
+  - name: network_usage_recv
+    exp: 
banyandb_system_net_state.tagEqual('kind','bytes_recv').sum(['host_name','service_instance_id']).rate('PT15S')
+  - name: network_usage_sent
+    exp: 
banyandb_system_net_state.tagEqual('kind','bytes_sent').sum(['host_name','service_instance_id']).rate('PT15S')
+  - name: storage_write_rate
+    exp: 
banyandb_measure_total_written.sum(['group','host_name','service_instance_id']).rate('PT15S')*1000
+  - name: query_latency
+    exp: 
(banyandb_liaison_grpc_total_latency.tagEqual('method','query').sum(['group','host_name','service_instance_id']).rate('PT15S')
 / 
banyandb_liaison_grpc_total_started.tagEqual('method','query').sum(['group','host_name','service_instance_id']).rate('PT15S'))*1000
+  - name: total_data
+    exp: 
banyandb_measure_total_file_elements.sum(['group','host_name','service_instance_id'])
+  - name: merge_file_data
+    exp: 
banyandb_measure_total_merge_loop_started.sum(['group','host_name','service_instance_id']).rate('PT15S')
 * 60 *1000
+  - name: merge_file_latency
+    exp: 
(banyandb_measure_total_merge_latency.tagEqual('type','file').sum(['group','host_name','service_instance_id']).rate('PT15S')
 / 
banyandb_measure_total_merge_loop_started.sum(['group','host_name','service_instance_id']).rate('PT15S'))*1000
+  - name: merge_file_partitions
+    exp: 
(banyandb_measure_total_merged_parts.tagEqual('type','file').sum(['group','host_name','service_instance_id']).rate('PT15S')
 / 
banyandb_measure_total_merge_loop_started.sum(['group','host_name','service_instance_id']).rate('PT15S'))*1000
+  - name: series_write_rate
+    exp: 
(banyandb_measure_inverted_index_total_updates.sum(['group','host_name','service_instance_id']).rate('PT15S'))*1000
+  - name: series_term_search_rate
+    exp: 
banyandb_stream_storage_inverted_index_total_term_searchers_started.sum(['group','host_name','service_instance_id']).rate('PT15S')
+  - name: total_series
+    exp: 
banyandb_measure_inverted_index_total_doc_count.sum(['group','host_name','service_instance_id'])
+  - name: stream_write_rate
+    exp: 
banyandb_stream_tst_inverted_index_total_updates.sum(['group','host_name','service_instance_id']).rate('PT15S')
+  - name: term_search_rate
+    exp: 
banyandb_stream_tst_inverted_index_total_term_searchers_started.sum(['group','host_name','service_instance_id']).rate('PT15S')*
 1000
+  - name: total_document
+    exp: 
banyandb_stream_tst_inverted_index_total_doc_count.sum(['group','host_name','service_instance_id'])
+
+
diff --git 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/banyandb/banyandb-instance.json
 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/banyandb/banyandb-instance.json
new file mode 100644
index 0000000000..82d4c2c246
--- /dev/null
+++ 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/banyandb/banyandb-instance.json
@@ -0,0 +1,561 @@
+[
+    {
+        "id": "BanyanDB-Instance",
+        "configuration": {
+            "children": [
+                {
+                    "x": 0,
+                    "y": 0,
+                    "w": 8,
+                    "h": 11,
+                    "i": "0",
+                    "type": "Widget",
+                    "widget": {
+                        "title": "Write Rate"
+                    },
+                    "graph": {
+                        "type": "Card",
+                        "fontSize": 50,
+                        "textAlign": "center",
+                        "showUnit": true
+                    },
+                    "expressions": [
+                        "latest(meter_banyandb_instance_write_rate)"
+                    ],
+                    "metricConfig": [
+                        {
+                            "label": "Write Rate"
+                        }
+                    ]
+                },
+                {
+                    "x": 8,
+                    "y": 0,
+                    "w": 8,
+                    "h": 11,
+                    "i": "1",
+                    "type": "Widget",
+                    "widget": {
+                        "title": "Total memory"
+                    },
+                    "graph": {
+                        "type": "Card",
+                        "fontSize": 50,
+                        "textAlign": "center",
+                        "showUnit": true
+                    },
+                    "expressions": [
+                        
"latest(meter_banyandb_instance_total_memory/1024/1024/1024)"
+                    ],
+                    "metricConfig": [
+                        {
+                            "unit": "Gib"
+                        }
+                    ]
+                },
+                {
+                    "x": 16,
+                    "y": 0,
+                    "w": 8,
+                    "h": 11,
+                    "i": "2",
+                    "type": "Widget",
+                    "widget": {
+                        "title": "Disk usage"
+                    },
+                    "graph": {
+                        "type": "Card",
+                        "fontSize": 50,
+                        "textAlign": "center",
+                        "showUnit": true
+                    },
+                    "expressions": [
+                        
"latest(meter_banyandb_instance_disk_usage/1024/1024/1024)"
+                    ],
+                    "metricConfig": [
+                        {
+                            "unit": "Gib"
+                        }
+                    ]
+                },
+                {
+                    "x": 0,
+                    "y": 11,
+                    "w": 8,
+                    "h": 11,
+                    "i": "3",
+                    "type": "Widget",
+                    "widget": {
+                        "title": "Query rate"
+                    },
+                    "graph": {
+                        "type": "Card",
+                        "fontSize": 50,
+                        "textAlign": "center",
+                        "showUnit": true
+                    },
+                    "expressions": [
+                        
"latest(meter_banyandb_instance_query_rate{method=\"query\"})"
+                    ],
+                    "metricConfig": [
+                        {
+                            "unit": "rps"
+                        }
+                    ]
+                },
+                {
+                    "x": 8,
+                    "y": 11,
+                    "w": 8,
+                    "h": 11,
+                    "i": "4",
+                    "type": "Widget",
+                    "widget": {
+                        "title": "Total cpu"
+                    },
+                    "graph": {
+                        "type": "Card",
+                        "fontSize": 50,
+                        "textAlign": "center",
+                        "showUnit": true
+                    },
+                    "expressions": [
+                        "latest(meter_banyandb_instance_total_cpu)"
+                    ]
+                },
+                {
+                    "x": 16,
+                    "y": 11,
+                    "w": 8,
+                    "h": 11,
+                    "i": "5",
+                    "type": "Widget",
+                    "widget": {
+                        "title": "Write and query errors rate"
+                    },
+                    "graph": {
+                        "type": "Card",
+                        "fontSize": 50,
+                        "textAlign": "center",
+                        "showUnit": true
+                    },
+                    "expressions": [
+                        
"latest(meter_banyandb_instance_write_and_query_errors_rate)"
+                    ]
+                },
+                {
+                    "x": 8,
+                    "y": 22,
+                    "w": 16,
+                    "h": 11,
+                    "i": "6",
+                    "type": "Widget",
+                    "widget": {
+                        "title": "Active Instances"
+                    },
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "expressions": [
+                        "meter_banyandb_instance_active_instance"
+                    ]
+                },
+                {
+                    "x": 0,
+                    "y": 22,
+                    "w": 8,
+                    "h": 11,
+                    "i": "7",
+                    "type": "Widget",
+                    "widget": {
+                        "title": "Etcd operation rate"
+                    },
+                    "graph": {
+                        "type": "Card",
+                        "fontSize": 50,
+                        "textAlign": "center",
+                        "showUnit": true
+                    },
+                    "expressions": [
+                        "latest(meter_banyandb_instance_etcd_operation_rate)"
+                    ],
+                    "metricConfig": [
+                        {
+                            "unit": "c/s"
+                        }
+                    ]
+                },
+                {
+                    "x": 0,
+                    "y": 33,
+                    "w": 12,
+                    "h": 12,
+                    "i": "8",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_cpu_usage/1000"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Cpu Usage"
+                    }
+                },
+                {
+                    "x": 12,
+                    "y": 33,
+                    "w": 12,
+                    "h": 12,
+                    "i": "9",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_rss_memory_usage/1000"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "RSS memory usage all"
+                    }
+                },
+                {
+                    "x": 0,
+                    "y": 45,
+                    "w": 12,
+                    "h": 13,
+                    "i": "10",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_disk_usage_all/1000"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Disk Usage(ALL)"
+                    }
+                },
+                {
+                    "x": 12,
+                    "y": 45,
+                    "w": 12,
+                    "h": 13,
+                    "i": "11",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_network_usage_recv/1024",
+                        "meter_banyandb_instance_network_usage_sent/1024"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Network Usage(ALL)"
+                    },
+                    "metricConfig": [
+                        {
+                            "unit": "KiB/s"
+                        },
+                        {
+                            "unit": "KiB/s"
+                        }
+                    ]
+                },
+                {
+                    "x": 8,
+                    "y": 69,
+                    "w": 8,
+                    "h": 11,
+                    "i": "12",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_merge_file_latency/1000"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Merge File Latency"
+                    }
+                },
+                {
+                    "x": 16,
+                    "y": 58,
+                    "w": 8,
+                    "h": 11,
+                    "i": "13",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_total_data"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Total Data"
+                    }
+                },
+                {
+                    "x": 16,
+                    "y": 80,
+                    "w": 8,
+                    "h": 11,
+                    "i": "14",
+                    "type": "Widget",
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Total Series"
+                    },
+                    "expressions": [
+                        "meter_banyandb_instance_total_series"
+                    ]
+                },
+                {
+                    "x": 8,
+                    "y": 80,
+                    "w": 8,
+                    "h": 11,
+                    "i": "15",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_merge_file_data"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Merge File Data"
+                    }
+                },
+                {
+                    "x": 16,
+                    "y": 69,
+                    "w": 8,
+                    "h": 11,
+                    "i": "16",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_merge_file_partitions"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Merge File Partitions"
+                    }
+                },
+                {
+                    "x": 0,
+                    "y": 91,
+                    "w": 8,
+                    "h": 12,
+                    "i": "17",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_stream_write_rate"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Write Rate For Streams"
+                    }
+                },
+                {
+                    "x": 0,
+                    "y": 58,
+                    "w": 8,
+                    "h": 11,
+                    "i": "18",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_storage_write_rate/1000"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Write Rate By Group"
+                    }
+                },
+                {
+                    "x": 0,
+                    "y": 80,
+                    "w": 8,
+                    "h": 11,
+                    "i": "19",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_series_write_rate/1000"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Series Write Rate"
+                    }
+                },
+                {
+                    "x": 8,
+                    "y": 58,
+                    "w": 8,
+                    "h": 11,
+                    "i": "20",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_query_latency/1000"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Query Latency"
+                    }
+                },
+                {
+                    "x": 16,
+                    "y": 91,
+                    "w": 8,
+                    "h": 12,
+                    "i": "21",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_total_document"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Total Document"
+                    }
+                },
+                {
+                    "x": 0,
+                    "y": 69,
+                    "w": 8,
+                    "h": 11,
+                    "i": "22",
+                    "type": "Widget",
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Merge File Data"
+                    },
+                    "expressions": [
+                        "meter_banyandb_instance_merge_file_data/1000"
+                    ]
+                },
+                {
+                    "x": 8,
+                    "y": 91,
+                    "w": 8,
+                    "h": 12,
+                    "i": "23",
+                    "type": "Widget",
+                    "expressions": [
+                        "meter_banyandb_instance_term_search_rate/1000"
+                    ],
+                    "graph": {
+                        "type": "Line",
+                        "step": false,
+                        "smooth": false,
+                        "showSymbol": true,
+                        "showXAxis": true,
+                        "showYAxis": true
+                    },
+                    "widget": {
+                        "title": "Term Search Rate"
+                    }
+                }
+            ],
+            "layer": "BANYANDB",
+            "entity": "ServiceInstance",
+            "name": "BanyanDB-Instance",
+            "isRoot": false
+        }
+    }
+]
\ No newline at end of file
diff --git 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/banyandb/banyandb-root.json
 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/banyandb/banyandb-root.json
new file mode 100644
index 0000000000..9b712ec49f
--- /dev/null
+++ 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/banyandb/banyandb-root.json
@@ -0,0 +1,45 @@
+[
+  {
+    "id": "BanyanDB-root",
+    "configuration": {
+      "children": [
+        {
+          "x": 0,
+          "y": 3,
+          "w": 24,
+          "h": 43,
+          "i": "0",
+          "type": "Widget",
+          "graph": {
+            "type": "ServiceList",
+            "dashboardName": "BanyanDB-Service",
+            "fontSize": 12,
+            "showXAxis": false,
+            "showYAxis": false,
+            "showGroup": true
+          }
+        },
+        {
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 3,
+          "i": "1",
+          "type": "Text",
+          "graph": {
+            "fontColor": "theme",
+            "backgroundColor": "theme",
+            "content": "BanyanDB is a distributed time-series database with 
built-in self-monitoring for real-time tracking of system health, performance, 
and resource utilization.",
+            "fontSize": 14,
+            "textAlign": "left",
+            "url": 
"https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-banyandb/";
+          }
+        }
+      ],
+      "layer": "BANYANDB",
+      "entity": "All",
+      "name": "BanyanDB-Root",
+      "isRoot": true
+    }
+  }
+]
\ No newline at end of file
diff --git 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/banyandb/banyandb-service.json
 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/banyandb/banyandb-service.json
new file mode 100644
index 0000000000..bc171cbda5
--- /dev/null
+++ 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/banyandb/banyandb-service.json
@@ -0,0 +1,601 @@
+[
+    {
+        "id": "BanyanDB-Service",
+        "configuration": {
+            "children": [
+                {
+                    "x": 0,
+                    "y": 0,
+                    "w": 24,
+                    "h": 33,
+                    "i": "0",
+                    "type": "Tab",
+                    "children": [
+                        {
+                            "name": "Inspections",
+                            "children": [
+                                {
+                                    "x": 0,
+                                    "y": 0,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "0",
+                                    "type": "Widget",
+                                    "widget": {
+                                        "title": "Write Rate"
+                                    },
+                                    "graph": {
+                                        "type": "Card",
+                                        "fontSize": 50,
+                                        "textAlign": "center",
+                                        "showUnit": true
+                                    },
+                                    "expressions": [
+                                        "latest(meter_banyandb_write_rate)"
+                                    ],
+                                    "metricConfig": [
+                                        {
+                                            "label": "Write Rate"
+                                        }
+                                    ]
+                                },
+                                {
+                                    "x": 8,
+                                    "y": 0,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "1",
+                                    "type": "Widget",
+                                    "widget": {
+                                        "title": "Total memory"
+                                    },
+                                    "graph": {
+                                        "type": "Card",
+                                        "fontSize": 50,
+                                        "textAlign": "center",
+                                        "showUnit": true
+                                    },
+                                    "expressions": [
+                                        
"latest(meter_banyandb_total_memory/1024/1024/1024)"
+                                    ],
+                                    "metricConfig": [
+                                        {
+                                            "unit": "Gib"
+                                        }
+                                    ]
+                                },
+                                {
+                                    "x": 16,
+                                    "y": 0,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "2",
+                                    "type": "Widget",
+                                    "widget": {
+                                        "title": "Disk usage"
+                                    },
+                                    "graph": {
+                                        "type": "Card",
+                                        "fontSize": 50,
+                                        "textAlign": "center",
+                                        "showUnit": true
+                                    },
+                                    "expressions": [
+                                        
"latest(meter_banyandb_disk_usage/1024/1024/1024)"
+                                    ],
+                                    "metricConfig": [
+                                        {
+                                            "unit": "Gib"
+                                        }
+                                    ]
+                                },
+                                {
+                                    "x": 0,
+                                    "y": 11,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "3",
+                                    "type": "Widget",
+                                    "widget": {
+                                        "title": "Query rate"
+                                    },
+                                    "graph": {
+                                        "type": "Card",
+                                        "fontSize": 50,
+                                        "textAlign": "center",
+                                        "showUnit": true
+                                    },
+                                    "expressions": [
+                                        
"latest(meter_banyandb_query_rate{method=\"query\"})"
+                                    ],
+                                    "metricConfig": [
+                                        {
+                                            "unit": "rps"
+                                        }
+                                    ]
+                                },
+                                {
+                                    "x": 8,
+                                    "y": 11,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "4",
+                                    "type": "Widget",
+                                    "widget": {
+                                        "title": "Total cpu"
+                                    },
+                                    "graph": {
+                                        "type": "Card",
+                                        "fontSize": 50,
+                                        "textAlign": "center",
+                                        "showUnit": true
+                                    },
+                                    "expressions": [
+                                        "latest(meter_banyandb_total_cpu)"
+                                    ]
+                                },
+                                {
+                                    "x": 16,
+                                    "y": 11,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "5",
+                                    "type": "Widget",
+                                    "widget": {
+                                        "title": "Write and query errors rate"
+                                    },
+                                    "graph": {
+                                        "type": "Card",
+                                        "fontSize": 50,
+                                        "textAlign": "center",
+                                        "showUnit": true
+                                    },
+                                    "expressions": [
+                                        
"latest(meter_banyandb_write_and_query_errors_rate)"
+                                    ]
+                                },
+                                {
+                                    "x": 8,
+                                    "y": 22,
+                                    "w": 16,
+                                    "h": 11,
+                                    "i": "6",
+                                    "type": "Widget",
+                                    "widget": {
+                                        "title": "Active Instances"
+                                    },
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "expressions": [
+                                        "meter_banyandb_active_instance"
+                                    ]
+                                },
+                                {
+                                    "x": 0,
+                                    "y": 22,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "7",
+                                    "type": "Widget",
+                                    "widget": {
+                                        "title": "Etcd operation rate"
+                                    },
+                                    "graph": {
+                                        "type": "Card",
+                                        "fontSize": 50,
+                                        "textAlign": "center",
+                                        "showUnit": true
+                                    },
+                                    "expressions": [
+                                        
"latest(meter_banyandb_etcd_operation_rate)"
+                                    ],
+                                    "metricConfig": [
+                                        {
+                                            "unit": "c/s"
+                                        }
+                                    ]
+                                },
+                                {
+                                    "x": 0,
+                                    "y": 33,
+                                    "w": 12,
+                                    "h": 12,
+                                    "i": "8",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        "meter_banyandb_cpu_usage/1000"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Cpu Usage"
+                                    }
+                                },
+                                {
+                                    "x": 12,
+                                    "y": 33,
+                                    "w": 12,
+                                    "h": 12,
+                                    "i": "9",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        "meter_banyandb_rss_memory_usage/1000"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "RSS memory usage all"
+                                    }
+                                },
+                                {
+                                    "x": 0,
+                                    "y": 45,
+                                    "w": 12,
+                                    "h": 13,
+                                    "i": "10",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        "meter_banyandb_disk_usage_all/1000"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Disk Usage(ALL)"
+                                    }
+                                },
+                                {
+                                    "x": 12,
+                                    "y": 45,
+                                    "w": 12,
+                                    "h": 13,
+                                    "i": "11",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        
"meter_banyandb_network_usage_recv/1024",
+                                        
"meter_banyandb_network_usage_sent/1024"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Network Usage(ALL)"
+                                    },
+                                    "metricConfig": [
+                                        {
+                                            "unit": "KiB/s"
+                                        },
+                                        {
+                                            "unit": "KiB/s"
+                                        }
+                                    ]
+                                },
+                                {
+                                    "x": 8,
+                                    "y": 69,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "12",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        
"meter_banyandb_merge_file_latency/1000"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Merge File Latency"
+                                    }
+                                },
+                                {
+                                    "x": 16,
+                                    "y": 58,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "13",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        "meter_banyandb_total_data"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Total Data"
+                                    }
+                                },
+                                {
+                                    "x": 16,
+                                    "y": 80,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "14",
+                                    "type": "Widget",
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Total Series"
+                                    },
+                                    "expressions": [
+                                        "meter_banyandb_total_series"
+                                    ]
+                                },
+                                {
+                                    "x": 8,
+                                    "y": 80,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "15",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        "meter_banyandb_merge_file_data"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Merge File Data"
+                                    }
+                                },
+                                {
+                                    "x": 16,
+                                    "y": 69,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "16",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        "meter_banyandb_merge_file_partitions"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Merge File Partitions"
+                                    }
+                                },
+                                {
+                                    "x": 0,
+                                    "y": 91,
+                                    "w": 8,
+                                    "h": 12,
+                                    "i": "17",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        "meter_banyandb_stream_write_rate"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Write Rate For Streams"
+                                    }
+                                },
+                                {
+                                    "x": 0,
+                                    "y": 58,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "18",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        
"meter_banyandb_storage_write_rate/1000"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Write Rate By Group"
+                                    }
+                                },
+                                {
+                                    "x": 0,
+                                    "y": 80,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "19",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        "meter_banyandb_series_write_rate/1000"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Series Write Rate"
+                                    }
+                                },
+                                {
+                                    "x": 8,
+                                    "y": 58,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "20",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        "meter_banyandb_query_latency/1000"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Query Latency"
+                                    }
+                                },
+                                {
+                                    "x": 16,
+                                    "y": 91,
+                                    "w": 8,
+                                    "h": 12,
+                                    "i": "21",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        "meter_banyandb_total_document"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Total Document"
+                                    }
+                                },
+                                {
+                                    "x": 0,
+                                    "y": 69,
+                                    "w": 8,
+                                    "h": 11,
+                                    "i": "22",
+                                    "type": "Widget",
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Merge File Data"
+                                    },
+                                    "expressions": [
+                                        "meter_banyandb_merge_file_data/1000"
+                                    ]
+                                },
+                                {
+                                    "x": 8,
+                                    "y": 91,
+                                    "w": 8,
+                                    "h": 12,
+                                    "i": "23",
+                                    "type": "Widget",
+                                    "expressions": [
+                                        "meter_banyandb_term_search_rate/1000"
+                                    ],
+                                    "graph": {
+                                        "type": "Line",
+                                        "step": false,
+                                        "smooth": false,
+                                        "showSymbol": true,
+                                        "showXAxis": true,
+                                        "showYAxis": true
+                                    },
+                                    "widget": {
+                                        "title": "Term Search Rate"
+                                    }
+                                }
+                            ]
+                        },
+                        {
+                            "name": "Instances",
+                            "children": [
+                                {
+                                    "x": 0,
+                                    "y": 0,
+                                    "w": 24,
+                                    "h": 29,
+                                    "i": "0",
+                                    "type": "Widget",
+                                    "graph": {
+                                        "type": "InstanceList",
+                                        "dashboardName": "BanyanDB-Instance",
+                                        "fontSize": 12
+                                    },
+                                    "expressions": [
+                                        ""
+                                    ],
+                                    "subExpressions": [
+                                        ""
+                                    ]
+                                }
+                            ]
+                        }
+
+                    ]
+                }
+            ],
+            "layer": "BANYANDB",
+            "entity": "Service",
+            "name": "BanyanDB-Service",
+            "isRoot": false
+        }
+    }
+]
\ No newline at end of file
diff --git 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml
 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml
index eec56f0426..d3eaa65bcc 100644
--- 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml
+++ 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml
@@ -257,6 +257,11 @@ menus:
         description: "Satellite: an open-source agent designed for the 
cloud-native infrastructures, which provides a low-cost, high-efficient, and 
more secure way to collect telemetry data. It is the recommended load balancer 
for telemetry collecting."
         documentLink: 
https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-load-balancer/
         i18nKey: self_observability_satellite
+      - title: BanyanDB Server
+        layer: BANYANDB
+        description: BanyanDB is a time-series database designed for 
observability data storage and analysis.
+        documentLink: 
https://skywalking.apache.org/docs/main/next/en/banyandb/dashboards-banyandb/
+        i18nKey: self_observability_banyandb
       - title: SkyWalking Java Agent
         layer: SO11Y_JAVA_AGENT
         description: The Java Agent for Apache SkyWalking, which provides the 
native tracing/metrics/logging/event/profiling abilities for Java projects.
@@ -266,4 +271,4 @@ menus:
         layer: SO11Y_GO_AGENT
         description: The Go Agent for Apache SkyWalking, which provides the 
native tracing/metrics/logging abilities for Golang projects.
         documentLink: 
https://skywalking.apache.org/docs/main/next/en/setup/backend/dashboards-so11y-go-agent/
-        i18nKey: self_observability_go_agent
\ No newline at end of file
+        i18nKey: self_observability_go_agent
diff --git a/test/e2e-v2/cases/banyandb/banyandb-cases.yaml 
b/test/e2e-v2/cases/banyandb/banyandb-cases.yaml
new file mode 100644
index 0000000000..11bc0042fb
--- /dev/null
+++ b/test/e2e-v2/cases/banyandb/banyandb-cases.yaml
@@ -0,0 +1,42 @@
+# 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.
+
+# This file contains BanyanDB instance metrics queries, referencing
+# oap-server/server-starter/src/main/resources/otel-rules/banyandb.yaml
+
+cases:
+  - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression=meter_banyandb_total_memory
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression=meter_banyandb_instance_write_rate
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression=meter_banyandb_instance_total_memory
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression=meter_banyandb_instance_total_cpu
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression=meter_banyandb_instance_etcd_operation_rate
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression=meter_banyandb_instance_active_instance
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression=meter_banyandb_instance_cpu_usage
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression=meter_banyandb_instance_rss_memory_usage
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression=meter_banyandb_instance_disk_usage_all
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression=meter_banyandb_instance_network_usage_recv
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression=meter_banyandb_instance_network_usage_sent
+    expected: expected/metrics-has-value.yml
+
diff --git a/test/e2e-v2/cases/banyandb/docker-compose.yml 
b/test/e2e-v2/cases/banyandb/docker-compose.yml
new file mode 100644
index 0000000000..c95c595a75
--- /dev/null
+++ b/test/e2e-v2/cases/banyandb/docker-compose.yml
@@ -0,0 +1,51 @@
+# 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.
+
+version: '2.1'
+
+services:
+  oap:
+    extends:
+      file: ../../script/docker-compose/base-compose.yml
+      service: oap
+    expose:
+      - 11800
+    ports:
+      - "11800:11800"
+      - "12800:12800"
+    networks:
+      - e2e
+  banyandb:
+    extends:
+      file: ../../script/docker-compose/base-compose.yml
+      service: banyandb
+    ports:
+      - "17913:17913"
+      - "2121:2121"
+
+  otel-collector:
+    image: otel/opentelemetry-collector:${OTEL_COLLECTOR_VERSION}
+    networks:
+      - e2e
+    command: [ "--config=/etc/otel-collector-config.yaml" ]
+    volumes:
+      - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
+    expose:
+      - 55678
+
+networks:
+  e2e:
+
+
diff --git a/test/e2e-v2/cases/banyandb/e2e.yaml 
b/test/e2e-v2/cases/banyandb/e2e.yaml
new file mode 100644
index 0000000000..ce742441ce
--- /dev/null
+++ b/test/e2e-v2/cases/banyandb/e2e.yaml
@@ -0,0 +1,39 @@
+# 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.
+
+# This file is used to show how to write configuration files and can be used 
to test.
+
+setup:
+  env: compose
+  file: docker-compose.yml
+  timeout: 20m
+  init-system-environment: ../../script/env
+  steps:
+    - name: set PATH
+      command: export PATH=/tmp/skywalking-infra-e2e/bin:$PATH
+    - name: install yq
+      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
+    - name: install swctl
+      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
+
+verify:
+  retry:
+    count: 60
+    interval: 3s
+  cases:
+    - includes:
+        - ./banyandb-cases.yaml
+
+
diff --git a/test/e2e-v2/cases/banyandb/expected/metrics-has-value.yml 
b/test/e2e-v2/cases/banyandb/expected/metrics-has-value.yml
new file mode 100644
index 0000000000..e071b36c22
--- /dev/null
+++ b/test/e2e-v2/cases/banyandb/expected/metrics-has-value.yml
@@ -0,0 +1,35 @@
+# 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.
+
+
+debuggingtrace: null
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+        owner: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+        owner: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/banyandb/otel-collector-config.yaml 
b/test/e2e-v2/cases/banyandb/otel-collector-config.yaml
new file mode 100644
index 0000000000..356c5d0920
--- /dev/null
+++ b/test/e2e-v2/cases/banyandb/otel-collector-config.yaml
@@ -0,0 +1,48 @@
+# 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.
+
+receivers:
+  prometheus:
+    config:
+      scrape_configs:
+        - job_name: "banyandb-monitoring" 
+          scrape_interval: 5s
+          static_configs:
+            - targets: ["banyandb:2121"]
+              labels:
+                host_name: root[root]
+
+processors:
+  batch:
+
+exporters:
+  otlp:
+    endpoint: "oap:11800"
+    tls:
+      insecure: true
+  debug:  
+    verbosity: detailed  
+
+service:
+  pipelines:
+    metrics:
+      receivers:
+        - prometheus
+      processors:
+        - batch
+      exporters:
+        - otlp
+
+

Reply via email to