You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/08/04 05:11:56 UTC

[shardingsphere] branch master updated: Add meta data metrics about schema count and database count (#11619)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new ef45079  Add meta data metrics about schema count and database count (#11619)
ef45079 is described below

commit ef45079f96d9f1ceb23956c5a8e6cd9a99f28549
Author: Dachuan J <46...@users.noreply.github.com>
AuthorDate: Wed Aug 4 13:10:40 2021 +0800

    Add meta data metrics about schema count and database count (#11619)
    
    * Add meta data metrics about schema count and database count.
    
    * Fix some code and yaml end line
    
    * Remove log for github build again.
---
 .../agent/core/entity/Interceptor.java             |  2 +
 .../agent/metrics/api/MetricsWrapper.java          | 67 ++++++++--------
 .../metrics/api/advice/ChannelHandlerAdvice.java   |  6 +-
 .../api/advice/CommandExecutorTaskAdvice.java      |  4 +-
 .../metrics/api/advice/PacketCodecAdvice.java      |  4 +-
 .../metrics/api/advice/SQLRouteEngineAdvice.java   | 12 +--
 .../advice/ShardingSphereDataSourceAdvice.java}    | 21 ++---
 .../metrics/api/advice/TransactionAdvice.java      |  4 +-
 .../agent/metrics/api/constant/MetricIds.java      |  8 +-
 .../definition/MetricsPluginDefinitionService.java | 18 ++++-
 .../agent/metrics/api/util/MetricsUtil.java}       | 29 +++----
 .../agent/metrics/api/MetricsWrapperTest.java      | 26 ++++---
 .../agent/metrics/api/fixture/FixtureWrapper.java  | 37 ++-------
 .../pom.xml                                        |  6 ++
 .../prometheus/collector/BuildInfoCollector.java   | 32 ++++----
 .../collector/MetaDataInfoCollector.java           | 91 ++++++++++++++++++++++
 .../prometheus/collector/ProxyInfoCollector.java   | 37 ++++-----
 .../service/PrometheusPluginBootService.java       |  2 +
 .../metrics/prometheus/wrapper/CounterWrapper.java |  4 +-
 .../metrics/prometheus/wrapper/GaugeWrapper.java   | 14 +++-
 .../prometheus/wrapper/HistogramWrapper.java       |  2 +-
 .../wrapper/PrometheusWrapperFactory.java          | 44 ++++++++++-
 .../metrics/prometheus/wrapper/SummaryWrapper.java |  2 +-
 .../src/main/resources/metrics.yaml                | 19 +++++
 .../collector/BuildInfoCollectorTest.java          |  4 +-
 ...torTest.java => MetaDataInfoCollectorTest.java} | 14 ++--
 .../prometheus/wrapper/CounterWrapperTest.java     |  4 +-
 .../prometheus/wrapper/GaugeWrapperTest.java       |  4 +-
 .../prometheus/wrapper/HistogramWrapperTest.java   |  2 +-
 .../prometheus/wrapper/SummaryWrapperTest.java     |  2 +-
 .../src/test/resources/metrics.yaml                | 19 +++++
 31 files changed, 359 insertions(+), 181 deletions(-)

diff --git a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/entity/Interceptor.java b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/entity/Interceptor.java
index f6a8b1e..aa0adcc 100644
--- a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/entity/Interceptor.java
+++ b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/entity/Interceptor.java
@@ -35,5 +35,7 @@ public final class Interceptor {
     
     private String staticAdvice;
     
+    private String constructAdvice;
+    
     private LinkedList<TargetPoint> points;
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsWrapper.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsWrapper.java
index f219e37..cd07af5 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsWrapper.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/MetricsWrapper.java
@@ -23,82 +23,77 @@ package org.apache.shardingsphere.agent.metrics.api;
 public interface MetricsWrapper {
     
     /**
-     * Counter increase by value.
-     *
-     * @param value value
+     * Metric increase.
      */
-    default void counterInc(long value) {
+    default void inc() {
+        inc(1);
     }
     
     /**
-     * Counter increase by 1L.
+     * Metric increase by value.
+     *
+     * @param value value
      */
-    default void counterInc() {
-        counterInc(1L);
+    default void inc(double value) {
     }
     
     /**
-     * Counter increase by value with labels.
+     * Metric increase with labels.
      *
-     * @param value  value
-     * @param labels counter labels
+     * @param labels labels
      */
-    default void counterInc(long value, String... labels) {
+    default void inc(String... labels) {
+        inc(1, labels);
     }
     
     /**
-     * Counter increase by 1L with labels.
+     * Metric increase by value with labels.
      *
-     * @param labels counter labels
+     * @param value  value
+     * @param labels labels
      */
-    default void counterInc(String... labels) {
-        counterInc(1, labels);
+    default void inc(double value, String... labels) {
     }
     
     /**
-     * Gauge increase by 1L.
+     * Metric decrease.
      */
-    default void gaugeInc() {
-        gaugeInc(1L);
+    default void dec() {
+        dec(1);
     }
     
     /**
-     * Gauge increase by value.
+     * Metric decrease by value.
      *
-     * @param value value
-     */
-    default void gaugeInc(double value) {
-    }
-    
-    /**
-     * Gauge decrease by 1L.
+     * @param value  value
      */
-    default void gaugeDec() {
-        gaugeDec(1L);
+    default void dec(double value) {
     }
     
     /**
-     * Gauge decrease by value.
+     * Metric decrease with labels.
      *
-     * @param value value
+     * @param labels counter labels
      */
-    default void gaugeDec(double value) {
+    default void dec(String... labels) {
+        dec(1, labels);
     }
     
     /**
-     * Histogram observed by value.
+     * Metric decrease by value with labels.
      *
-     * @param value value
+     * @param value  value
+     * @param labels labels
      */
-    default void histogramObserve(double value) {
+    default void dec(double value, String... labels) {
     }
     
     /**
-     * Summary observed by value.
+     * Observed by value.
      *
      * @param value value
      */
-    default void summaryObserve(double value) {
+    default void observe(double value) {
     }
     
     /**
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/ChannelHandlerAdvice.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/ChannelHandlerAdvice.java
index 54beb0c..3416eb6 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/ChannelHandlerAdvice.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/ChannelHandlerAdvice.java
@@ -46,11 +46,11 @@ public final class ChannelHandlerAdvice implements InstanceMethodAroundAdvice {
     @Override
     public void beforeMethod(final AdviceTargetObject target, final Method method, final Object[] args, final MethodInvocationResult result) {
         if (CHANNEL_READ.equals(method.getName())) {
-            MetricsPool.get(MetricIds.PROXY_REQUEST).ifPresent(m -> m.counterInc());
+            MetricsPool.get(MetricIds.PROXY_REQUEST).ifPresent(m -> m.inc());
         } else if (CHANNEL_ACTIVE.equals(method.getName())) {
-            MetricsPool.get(MetricIds.PROXY_COLLECTION).ifPresent(m -> m.gaugeInc());
+            MetricsPool.get(MetricIds.PROXY_COLLECTION).ifPresent(m -> m.inc());
         } else if (CHANNEL_INACTIVE.equals(method.getName())) {
-            MetricsPool.get(MetricIds.PROXY_COLLECTION).ifPresent(m -> m.gaugeDec());
+            MetricsPool.get(MetricIds.PROXY_COLLECTION).ifPresent(m -> m.dec());
         }
     }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/CommandExecutorTaskAdvice.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/CommandExecutorTaskAdvice.java
index 872c36c..1ba94c1 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/CommandExecutorTaskAdvice.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/CommandExecutorTaskAdvice.java
@@ -52,12 +52,12 @@ public final class CommandExecutorTaskAdvice implements InstanceMethodAroundAdvi
         if (COMMAND_EXECUTOR_RUN.equals(method.getName())) {
             try {
                 long elapsedTime = System.currentTimeMillis() - ElapsedTimeThreadLocal.INSTANCE.get();
-                MetricsPool.get(MetricIds.PROXY_EXECUTE_LATENCY_MILLIS).ifPresent(m -> m.histogramObserve(elapsedTime));
+                MetricsPool.get(MetricIds.PROXY_EXECUTE_LATENCY_MILLIS).ifPresent(m -> m.observe(elapsedTime));
             } finally {
                 ElapsedTimeThreadLocal.INSTANCE.remove();
             }
         } else if (COMMAND_EXECUTOR_EXCEPTION.equals(method.getName())) {
-            MetricsPool.get(MetricIds.PROXY_EXECUTE_ERROR).ifPresent(m -> m.counterInc());
+            MetricsPool.get(MetricIds.PROXY_EXECUTE_ERROR).ifPresent(m -> m.inc());
         }
     }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/PacketCodecAdvice.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/PacketCodecAdvice.java
index b465d5c..e50a0f3 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/PacketCodecAdvice.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/PacketCodecAdvice.java
@@ -41,7 +41,7 @@ public final class PacketCodecAdvice implements InstanceMethodAroundAdvice {
     public void beforeMethod(final AdviceTargetObject target, final Method method, final Object[] args, final MethodInvocationResult result) {
         if (METHOD_DECODE.equals(method.getName())) {
             ByteBuf in = (ByteBuf) args[1];
-            MetricsPool.get(MetricIds.PROXY_REQUEST_BYTES).ifPresent(m -> m.histogramObserve(in.readableBytes()));
+            MetricsPool.get(MetricIds.PROXY_REQUEST_BYTES).ifPresent(m -> m.observe(in.readableBytes()));
         }
     }
     
@@ -49,7 +49,7 @@ public final class PacketCodecAdvice implements InstanceMethodAroundAdvice {
     public void afterMethod(final AdviceTargetObject target, final Method method, final Object[] args, final MethodInvocationResult result) {
         if (METHOD_ENCODE.equals(method.getName())) {
             ByteBuf out = (ByteBuf) args[2];
-            MetricsPool.get(MetricIds.PROXY_RESPONSE_BYTES).ifPresent(m -> m.histogramObserve(out.readableBytes()));
+            MetricsPool.get(MetricIds.PROXY_RESPONSE_BYTES).ifPresent(m -> m.observe(out.readableBytes()));
         }
     }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLRouteEngineAdvice.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLRouteEngineAdvice.java
index e5705ec..b2ea92c 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLRouteEngineAdvice.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLRouteEngineAdvice.java
@@ -54,13 +54,13 @@ public final class SQLRouteEngineAdvice implements InstanceMethodAroundAdvice {
         LogicSQL logicSQL = (LogicSQL) args[0];
         SQLStatement sqlStatement = logicSQL.getSqlStatementContext().getSqlStatement();
         if (sqlStatement instanceof InsertStatement) {
-            MetricsPool.get(MetricIds.SQL_INSERT).ifPresent(m -> m.counterInc());
+            MetricsPool.get(MetricIds.SQL_INSERT).ifPresent(m -> m.inc());
         } else if (sqlStatement instanceof DeleteStatement) {
-            MetricsPool.get(MetricIds.SQL_DELETE).ifPresent(m -> m.counterInc());
+            MetricsPool.get(MetricIds.SQL_DELETE).ifPresent(m -> m.inc());
         } else if (sqlStatement instanceof UpdateStatement) {
-            MetricsPool.get(MetricIds.SQL_UPDATE).ifPresent(m -> m.counterInc());
+            MetricsPool.get(MetricIds.SQL_UPDATE).ifPresent(m -> m.inc());
         } else if (sqlStatement instanceof SelectStatement) {
-            MetricsPool.get(MetricIds.SQL_SELECT).ifPresent(m -> m.counterInc());
+            MetricsPool.get(MetricIds.SQL_SELECT).ifPresent(m -> m.inc());
         }
     }
 
@@ -72,10 +72,10 @@ public final class SQLRouteEngineAdvice implements InstanceMethodAroundAdvice {
             routeUnits.forEach(each -> {
                 RouteMapper dataSourceMapper = each.getDataSourceMapper();
                 MetricsPool.get(MetricIds.ROUTE_DATASOURCE)
-                        .ifPresent(m -> m.counterInc(new String[]{dataSourceMapper.getActualName()}));
+                        .ifPresent(m -> m.inc(new String[]{dataSourceMapper.getActualName()}));
                 each.getTableMappers()
                         .forEach(table -> MetricsPool.get(MetricIds.ROUTE_TABLE)
-                                .ifPresent(m -> m.counterInc(new String[]{table.getActualName()})));
+                                .ifPresent(m -> m.inc(new String[]{table.getActualName()})));
             });
         }
     }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapper.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/ShardingSphereDataSourceAdvice.java
similarity index 63%
copy from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapper.java
copy to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/ShardingSphereDataSourceAdvice.java
index 6d58417..1589886 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapper.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/ShardingSphereDataSourceAdvice.java
@@ -15,22 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.agent.metrics.prometheus.wrapper;
+package org.apache.shardingsphere.agent.metrics.api.advice;
 
-import io.prometheus.client.Summary;
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.agent.metrics.api.MetricsWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.agent.api.advice.AdviceTargetObject;
+import org.apache.shardingsphere.agent.api.advice.ConstructorAdvice;
 
-/**
- * Prometheus summary wrapper.
- */
-@RequiredArgsConstructor
-public final class SummaryWrapper implements MetricsWrapper {
-    
-    private final Summary summary;
+@Slf4j
+public final class ShardingSphereDataSourceAdvice implements ConstructorAdvice {
     
     @Override
-    public void summaryObserve(final double value) {
-        summary.observe(value);
+    public void onConstructor(final AdviceTargetObject target, final Object[] args) {
+        log.info("On construction ShardingSphere DataSource: {}", target);
     }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/TransactionAdvice.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/TransactionAdvice.java
index f6b24cc..394a7b9 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/TransactionAdvice.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/advice/TransactionAdvice.java
@@ -43,9 +43,9 @@ public final class TransactionAdvice implements InstanceMethodAroundAdvice {
     public void beforeMethod(final AdviceTargetObject target, final Method method, final Object[] args, final MethodInvocationResult result) {
         String methodName = method.getName();
         if (COMMIT.equals(methodName)) {
-            MetricsPool.get(MetricIds.TRANSACTION_COMMIT).ifPresent(m -> m.counterInc());
+            MetricsPool.get(MetricIds.TRANSACTION_COMMIT).ifPresent(m -> m.inc());
         } else if (ROLLBACK.equals(methodName)) {
-            MetricsPool.get(MetricIds.TRANSACTION_ROLLBACK).ifPresent(m -> m.counterInc());
+            MetricsPool.get(MetricIds.TRANSACTION_ROLLBACK).ifPresent(m -> m.inc());
         }
     }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/constant/MetricIds.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/constant/MetricIds.java
index 29ac524..98ba24c 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/constant/MetricIds.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/constant/MetricIds.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.agent.metrics.api.constant;
 
-public class MetricIds {
+public final class MetricIds {
     
     public static final String PROXY_REQUEST = "proxy_request_total";
     
@@ -48,4 +48,10 @@ public class MetricIds {
     public static final String TRANSACTION_ROLLBACK = "proxy_transaction_rollback_total";
     
     public static final String HIKARI_SET_METRICS_FACTORY = "hikari_set_metrics_factory";
+    
+    public static final String PROXY_INFO = "proxy_info";
+    
+    public static final String BUILD_INFO = "build_info";
+    
+    public static final String METADATA_INFO = "meta_data_info";
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/definition/MetricsPluginDefinitionService.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/definition/MetricsPluginDefinitionService.java
index 4f9c5b2..fc6c0d7 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/definition/MetricsPluginDefinitionService.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/definition/MetricsPluginDefinitionService.java
@@ -39,20 +39,30 @@ public final class MetricsPluginDefinitionService extends AbstractPluginDefiniti
         Yaml yaml = new Yaml();
         InputStream in = this.getClass().getResourceAsStream("/interceptors.yaml");
         Interceptors interceptors = yaml.loadAs(in, Interceptors.class);
-        for (Interceptor interceptor : interceptors.getInterceptors()) { 
+        for (Interceptor interceptor : interceptors.getInterceptors()) {
+            if (null == interceptor.getTarget()) {
+                continue;
+            }
+            PluginInterceptorPoint.Builder builder = defineInterceptor(interceptor.getTarget());
+            if (null != interceptor.getConstructAdvice() && !("".equals(interceptor.getConstructAdvice()))) {
+                builder.onConstructor(ElementMatchers.isConstructor()).implement(interceptor.getConstructAdvice()).build();
+                log.debug("Init construct: {}", interceptor.getConstructAdvice());
+            }
+            if (null == interceptor.getPoints()) {
+                continue;
+            }
             String[] instancePoints = interceptor
                     .getPoints()
                     .stream()
-                    .filter(i -> i.getType().equals("instance"))
+                    .filter(i -> "instance".equals(i.getType()))
                     .map(TargetPoint::getName)
                     .toArray(String[]::new);
             String[] staticPoints = interceptor
                     .getPoints()
                     .stream()
-                    .filter(i -> i.getType().equals("static"))
+                    .filter(i -> "static".equals(i.getType()))
                     .map(TargetPoint::getName)
                     .toArray(String[]::new);
-            PluginInterceptorPoint.Builder builder = defineInterceptor(interceptor.getTarget());
             if (instancePoints.length > 0) {
                 builder.aroundInstanceMethod(ElementMatchers.namedOneOf(instancePoints))
                         .implement(interceptor.getInstanceAdvice())
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapper.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/util/MetricsUtil.java
similarity index 62%
copy from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapper.java
copy to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/util/MetricsUtil.java
index 6d58417..a436b3f 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapper.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/main/java/org/apache/shardingsphere/agent/metrics/api/util/MetricsUtil.java
@@ -15,22 +15,25 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.agent.metrics.prometheus.wrapper;
-
-import io.prometheus.client.Summary;
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.agent.metrics.api.MetricsWrapper;
+package org.apache.shardingsphere.agent.metrics.api.util;
 
 /**
- * Prometheus summary wrapper.
+ * Metrics Utils.
  */
-@RequiredArgsConstructor
-public final class SummaryWrapper implements MetricsWrapper {
-    
-    private final Summary summary;
+public final class MetricsUtil {
     
-    @Override
-    public void summaryObserve(final double value) {
-        summary.observe(value);
+    /**
+     * check if it has proxy class.
+     *
+     * @param  className the class name
+     * @return true if it has proxy class by the class name, otherwise false
+     */
+    public static boolean classExist(final String className) {
+        try {
+            Class.forName(className);
+        } catch (ClassNotFoundException ex) {
+            return false;
+        }
+        return true;
     }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/java/org/apache/shardingsphere/agent/metrics/api/MetricsWrapperTest.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/java/org/apache/shardingsphere/agent/metrics/api/MetricsWrapperTest.java
index f251b66..d93ebe7 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/java/org/apache/shardingsphere/agent/metrics/api/MetricsWrapperTest.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/java/org/apache/shardingsphere/agent/metrics/api/MetricsWrapperTest.java
@@ -27,25 +27,31 @@ public final class MetricsWrapperTest {
     @Test
     public void assertCreate() {
         MetricsWrapper metricsWrapper = new FixtureWrapper();
-        metricsWrapper.counterInc();
+        metricsWrapper.inc();
         assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(1.0d));
-        metricsWrapper.counterInc(1);
+        metricsWrapper.inc(1);
         assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(2.0d));
-        metricsWrapper.counterInc("a");
+        metricsWrapper.inc("a");
         assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(3.0d));
-        metricsWrapper.counterInc(1, "b");
+        metricsWrapper.inc(1, "b");
         assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(4.0d));
-        metricsWrapper.gaugeInc();
+        metricsWrapper.inc();
         assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(5.0d));
-        metricsWrapper.gaugeDec();
+        metricsWrapper.dec();
         assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(4.0d));
-        metricsWrapper.gaugeInc(1);
+        metricsWrapper.inc(1);
         assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(5.0d));
-        metricsWrapper.gaugeDec(1);
+        metricsWrapper.dec(1);
         assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(4.0d));
-        metricsWrapper.histogramObserve(2);
+        metricsWrapper.dec(1);
+        assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(3.0d));
+        metricsWrapper.dec("c");
+        assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(2.0d));
+        metricsWrapper.dec(1, "d");
+        assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(1.0d));
+        metricsWrapper.observe(2);
         assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(2.0d));
-        metricsWrapper.summaryObserve(3);
+        metricsWrapper.observe(3);
         assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(3.0d));
         metricsWrapper.delegate(1);
         assertThat(((FixtureWrapper) metricsWrapper).getFixtureValue(), org.hamcrest.Matchers.is(-1.0d));
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/java/org/apache/shardingsphere/agent/metrics/api/fixture/FixtureWrapper.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/java/org/apache/shardingsphere/agent/metrics/api/fixture/FixtureWrapper.java
index c9bbfaa..a976da0 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/java/org/apache/shardingsphere/agent/metrics/api/fixture/FixtureWrapper.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-api/src/test/java/org/apache/shardingsphere/agent/metrics/api/fixture/FixtureWrapper.java
@@ -29,52 +29,27 @@ public final class FixtureWrapper implements MetricsWrapper {
     private Double fixtureValue = 0.0d;
     
     @Override
-    public void counterInc(final long value) {
+    public void inc(final double value) {
         fixtureValue += value;
     }
     
     @Override
-    public void counterInc() {
-        counterInc(1L);
-    }
-
-    @Override
-    public void counterInc(final long value, final String... labels) {
-        fixtureValue += value;
-    }
-
-    @Override
-    public void counterInc(final String... labels) {
-        counterInc(1, labels);
-    }
-
-    @Override
-    public void gaugeInc() {
-        gaugeInc(1L);
-    }
-    
-    @Override
-    public void gaugeInc(final double value) {
+    public void inc(final double value, final String... labels) {
         fixtureValue += value;
     }
-
-    @Override
-    public void gaugeDec() {
-        gaugeDec(1L);
-    }
     
     @Override
-    public void gaugeDec(final double value) {
+    public void dec(final double value) {
         fixtureValue -= value;
     }
     
     @Override
-    public void histogramObserve(final double value) {        
-        fixtureValue = value;
+    public void dec(final double value, final String... labels) {
+        fixtureValue -= value;
     }
     
     @Override
-    public void summaryObserve(final double value) {
+    public void observe(final double value) {        
         fixtureValue = value;
     }
     
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/pom.xml b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/pom.xml
index 4f51edc..596a360 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/pom.xml
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/pom.xml
@@ -71,6 +71,12 @@
             <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-context</artifactId>
+            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
     
     <build>
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/BuildInfoCollector.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/BuildInfoCollector.java
index d69c6cf..9a84f86 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/BuildInfoCollector.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/BuildInfoCollector.java
@@ -20,10 +20,13 @@ package org.apache.shardingsphere.agent.metrics.prometheus.collector;
 import io.prometheus.client.Collector;
 import io.prometheus.client.GaugeMetricFamily;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.agent.metrics.api.constant.MetricIds;
+import org.apache.shardingsphere.agent.metrics.prometheus.wrapper.PrometheusWrapperFactory;
 
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * Build info collector.
@@ -31,26 +34,29 @@ import java.util.List;
 @Slf4j
 public final class BuildInfoCollector extends Collector {
     
+    private static final String PROXY_BOOTSTRAP_CLASS_STR = "org.apache.shardingsphere.proxy.Bootstrap";
+    
+    private static final PrometheusWrapperFactory FACTORY = new PrometheusWrapperFactory();
+    
     @Override
     public List<MetricFamilySamples> collect() {
         List<MetricFamilySamples> result = new LinkedList<>();
-        GaugeMetricFamily artifactInfo = new GaugeMetricFamily(
-                "build_info",
-                "A metric with a constant '1' value labeled with the version of shardingsphere.",
-                Arrays.asList("version", "name"));
-        Package pkg = getClass().getPackage();
-        String version = pkg.getImplementationVersion();
-        String name = pkg.getImplementationTitle();
-        artifactInfo.addMetric(Arrays.asList(null != version ? version : "unknown", null != name ? name : "unknown"), 1L);
+        Optional<GaugeMetricFamily> artifactInfo = FACTORY.createGaugeMetricFamily(MetricIds.BUILD_INFO);
+        Package pluginPkg = getClass().getPackage();
+        final String pluginVersion = pluginPkg.getImplementationVersion();
+        final String pluginName = pluginPkg.getImplementationTitle();
+        artifactInfo.ifPresent(m -> 
+                m.addMetric(Arrays.asList(null != pluginVersion ? pluginVersion : "unknown", null != pluginName ? pluginName : "unknown"), 1L));
         try {
-            pkg = Class.forName("org.apache.shardingsphere.proxy.Bootstrap").getPackage();
-            version = pkg.getImplementationVersion();
-            name = pkg.getImplementationTitle();
-            artifactInfo.addMetric(Arrays.asList(null != version ? version : "unknown", null != name ? name : "unknown"), 1L);
+            Package proxyPkg = Class.forName(PROXY_BOOTSTRAP_CLASS_STR).getPackage();
+            final String proxyVersion = proxyPkg.getImplementationVersion();
+            final String proxyName = proxyPkg.getImplementationTitle();
+            artifactInfo.ifPresent(m -> 
+                    m.addMetric(Arrays.asList(null != proxyVersion ? proxyVersion : "unknown", null != proxyName ? proxyName : "unknown"), 1L));
         } catch (ClassNotFoundException ex) {
             log.warn("No proxy class find");
         }
-        result.add(artifactInfo);
+        artifactInfo.ifPresent(m -> result.add(m));
         return result;
     }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/MetaDataInfoCollector.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/MetaDataInfoCollector.java
new file mode 100644
index 0000000..95caaaa
--- /dev/null
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/MetaDataInfoCollector.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.agent.metrics.prometheus.collector;
+
+import com.zaxxer.hikari.HikariDataSource;
+import io.prometheus.client.Collector;
+import io.prometheus.client.GaugeMetricFamily;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.agent.metrics.api.constant.MetricIds;
+import org.apache.shardingsphere.agent.metrics.api.util.MetricsUtil;
+import org.apache.shardingsphere.agent.metrics.prometheus.wrapper.PrometheusWrapperFactory;
+import org.apache.shardingsphere.infra.context.metadata.impl.StandardMetaDataContexts;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+
+import javax.sql.DataSource;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+/**
+ * Meta data collector.
+ */
+@Slf4j
+public final class MetaDataInfoCollector extends Collector {
+    
+    private static final String LOGIC_DB_COUNT = "schema_count";
+    
+    private static final String ACTUAL_DB_COUNT = "database_count";
+    
+    private static final PrometheusWrapperFactory FACTORY = new PrometheusWrapperFactory();
+    
+    private static final String PROXY_CONTEXT_CLASS_STR = "org.apache.shardingsphere.proxy.backend.context.ProxyContext";
+    
+    @Override
+    public List<MetricFamilySamples> collect() {
+        List<MetricFamilySamples> result = new LinkedList<>();
+        Optional<GaugeMetricFamily> metaDataInfo = FACTORY.createGaugeMetricFamily(MetricIds.METADATA_INFO);
+        collectProxy(metaDataInfo);
+        metaDataInfo.ifPresent(m -> result.add(m));
+        return result;
+    }
+    
+    private void collectProxy(final Optional<GaugeMetricFamily> metricFamily) {
+        if (!MetricsUtil.classExist(PROXY_CONTEXT_CLASS_STR)) {
+            return;
+        }
+        StandardMetaDataContexts metaDataContexts = (StandardMetaDataContexts) ProxyContext.getInstance().getMetaDataContexts();
+        metricFamily.ifPresent(m -> m.addMetric(Collections.singletonList(LOGIC_DB_COUNT), metaDataContexts.getMetaDataMap().size()));
+        metricFamily.ifPresent(m -> {
+            Map databaseMap = new HashMap<>();
+            metaDataContexts.getMetaDataMap().values().forEach(d ->
+                d.getResource().getDataSources().values().forEach(ds -> 
+                        countDatabase(databaseMap, ds)));
+            m.addMetric(Collections.singletonList(ACTUAL_DB_COUNT), databaseMap.size());
+        });
+    }
+    
+    private void countDatabase(final Map map, final DataSource dataSource) {
+        if (dataSource instanceof HikariDataSource) {
+            String jdbcUrl = ((HikariDataSource) dataSource).getJdbcUrl();
+            try {
+                URI uri = new URI(jdbcUrl.substring(5));
+                if (null != uri.getPath()) {
+                    map.put(uri.getPath(), "");
+                }
+            } catch (URISyntaxException | NullPointerException e) {
+                log.info("Unsupported jdbc url by URI: {}", jdbcUrl);
+            }
+        }
+    }
+}
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/ProxyInfoCollector.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/ProxyInfoCollector.java
index 6cf096b..021f150 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/ProxyInfoCollector.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/ProxyInfoCollector.java
@@ -19,13 +19,17 @@ package org.apache.shardingsphere.agent.metrics.prometheus.collector;
 
 import io.prometheus.client.Collector;
 import io.prometheus.client.GaugeMetricFamily;
+import org.apache.shardingsphere.agent.metrics.api.constant.MetricIds;
+import org.apache.shardingsphere.agent.metrics.api.util.MetricsUtil;
+import org.apache.shardingsphere.agent.metrics.prometheus.wrapper.PrometheusWrapperFactory;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.frontend.ShardingSphereProxy;
 
 import java.util.Arrays;
-import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Optional;
+import java.util.Date;
 
 /**
  * Proxy info collector.
@@ -36,33 +40,26 @@ public final class ProxyInfoCollector extends Collector {
     
     private static final String PROXY_UP_TIME = "uptime";
     
+    private static final String PROXY_CLASS_STR = "org.apache.shardingsphere.proxy.frontend.ShardingSphereProxy";
+    
+    private static final PrometheusWrapperFactory FACTORY = new PrometheusWrapperFactory();
+    
     @Override
-    public List<Collector.MetricFamilySamples> collect() {
+    public List<MetricFamilySamples> collect() {
         List<MetricFamilySamples> result = new LinkedList<>();
-        if (!checkProxy()) {
+        if (!MetricsUtil.classExist(PROXY_CLASS_STR)) {
             return result;
         }
-        GaugeMetricFamily proxyInfo = new GaugeMetricFamily(
-                "proxy_info",
-                "Proxy information.",
-                Arrays.asList("name"));
-        proxyInfo.addMetric(Arrays.asList(PROXY_STATE), ProxyContext.getInstance().getStateContext().getCurrentState().ordinal());
+        Optional<GaugeMetricFamily> proxyInfo = FACTORY.createGaugeMetricFamily(MetricIds.PROXY_INFO);
+        proxyInfo.ifPresent(m -> 
+                m.addMetric(Arrays.asList(PROXY_STATE), ProxyContext.getInstance().getStateContext().getCurrentState().ordinal()));
         Date now = new Date();
         if (0 >= ShardingSphereProxy.getStartTime()) {
-            proxyInfo.addMetric(Arrays.asList(PROXY_UP_TIME), 0);
+            proxyInfo.ifPresent(m -> m.addMetric(Arrays.asList(PROXY_UP_TIME), 0));
         } else {
-            proxyInfo.addMetric(Arrays.asList(PROXY_UP_TIME), now.getTime() - ShardingSphereProxy.getStartTime());
+            proxyInfo.ifPresent(m -> m.addMetric(Arrays.asList(PROXY_UP_TIME), now.getTime() - ShardingSphereProxy.getStartTime()));
         }
-        result.add(proxyInfo);
+        proxyInfo.ifPresent(m -> result.add(m));
         return result;
     }
-    
-    private boolean checkProxy() {
-        try {
-            Class.forName("org.apache.shardingsphere.proxy.frontend.ShardingSphereProxy");
-        } catch (ClassNotFoundException ex) {
-            return false;
-        }
-        return true;
-    }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootService.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootService.java
index de5bfa7..b6d5e60 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootService.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootService.java
@@ -25,6 +25,7 @@ import org.apache.shardingsphere.agent.config.PluginConfiguration;
 import org.apache.shardingsphere.agent.exception.PluginConfigurationException;
 import org.apache.shardingsphere.agent.metrics.api.MetricsPool;
 import org.apache.shardingsphere.agent.metrics.prometheus.collector.BuildInfoCollector;
+import org.apache.shardingsphere.agent.metrics.prometheus.collector.MetaDataInfoCollector;
 import org.apache.shardingsphere.agent.metrics.prometheus.collector.ProxyInfoCollector;
 import org.apache.shardingsphere.agent.metrics.prometheus.wrapper.PrometheusWrapperFactory;
 import org.apache.shardingsphere.agent.spi.boot.PluginBootService;
@@ -88,6 +89,7 @@ public final class PrometheusPluginBootService implements PluginBootService {
     private void registerDefault() {
         new ProxyInfoCollector().register();
         new BuildInfoCollector().register();
+        new MetaDataInfoCollector().register();
     }
     
     private void registerJvm(final boolean enabled) {
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/CounterWrapper.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/CounterWrapper.java
index 86e813e..7eb852f 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/CounterWrapper.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/CounterWrapper.java
@@ -30,12 +30,12 @@ public final class CounterWrapper implements MetricsWrapper {
     private final Counter counter;
     
     @Override
-    public void counterInc(final long value) {        
+    public void inc(final double value) {        
         counter.inc(value);
     }
     
     @Override
-    public void counterInc(final long value, final String... labels) {
+    public void inc(final double value, final String... labels) {
         counter.labels(labels).inc(value);
     }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/GaugeWrapper.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/GaugeWrapper.java
index ce4d0bc..67801dc 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/GaugeWrapper.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/GaugeWrapper.java
@@ -30,12 +30,22 @@ public final class GaugeWrapper implements MetricsWrapper {
     private final Gauge gauge;
     
     @Override
-    public void gaugeInc(final double value) {
+    public void inc(final double value) {
         gauge.inc(value);
     }
     
     @Override
-    public void gaugeDec(final double value) {        
+    public void inc(final double value, final String... labels) {
+        gauge.labels(labels).inc(value);
+    }
+    
+    @Override
+    public void dec(final double value) {
         gauge.dec(value);
     }
+    
+    @Override
+    public void dec(final double value, final String... labels) {
+        gauge.labels(labels).dec(value);
+    }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/HistogramWrapper.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/HistogramWrapper.java
index 637285f..e42a7b8 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/HistogramWrapper.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/HistogramWrapper.java
@@ -30,7 +30,7 @@ public final class HistogramWrapper implements MetricsWrapper {
     private final Histogram histogram;
     
     @Override
-    public void histogramObserve(final double value) {        
+    public void observe(final double value) {        
         histogram.observe(value);
     }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/PrometheusWrapperFactory.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
index b77093e..ff2ad71 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.agent.metrics.prometheus.wrapper;
 
 import io.prometheus.client.Counter;
 import io.prometheus.client.Gauge;
+import io.prometheus.client.GaugeMetricFamily;
 import io.prometheus.client.Histogram;
 import io.prometheus.client.Summary;
 import lombok.extern.slf4j.Slf4j;
@@ -52,9 +53,44 @@ public final class PrometheusWrapperFactory implements MetricsWrapperFactory {
         return createById(id);
     }
     
+    /**
+     * Create the gauge metric family.
+     *
+     * @param id string
+     * @return the optional of gauge metric family
+     */
+    public Optional<GaugeMetricFamily> createGaugeMetricFamily(final String id) {
+        Optional<Map> metricMap = findById(id);
+        if (!metricMap.isPresent()) {
+            return Optional.empty();
+        }
+        Map metric = metricMap.get();
+        if (null == getType(metric)) {
+            return Optional.empty();
+        }
+        switch (getType(metric).toUpperCase()) {
+            case "GAUGEMETRICFAMILY":
+                return createGaugeMetricFamily(metric);
+            default:
+                return Optional.empty();
+        }
+    }
+    
+    private Optional<GaugeMetricFamily> createGaugeMetricFamily(final Map metric) {
+        if (null != getLabels(metric)) {
+            return Optional.of(new GaugeMetricFamily(getName(metric), getHelp(metric), getLabels(metric)));
+        } else {
+            return Optional.of(new GaugeMetricFamily(getName(metric), getHelp(metric), 1));
+        }
+    }
+    
     private Optional<MetricsWrapper> createById(final String id) {
-        Map metric = findById(id);
-        if (null == metric || null == getType(metric)) {
+        Optional<Map> metricMap = findById(id);
+        if (!metricMap.isPresent()) {
+            return Optional.empty();
+        }
+        Map metric = metricMap.get();
+        if (null == getType(metric)) {
             return Optional.empty();
         }
         switch (getType(metric).toUpperCase()) {
@@ -142,8 +178,8 @@ public final class PrometheusWrapperFactory implements MetricsWrapperFactory {
         }        
     }
     
-    private Map findById(final String id) {
-        return (Map) metrics.stream().filter(m -> getId((Map) m).equals(id)).findFirst().get();
+    private Optional<Map> findById(final String id) {
+        return metrics.stream().filter(m -> id.equals(getId((Map) m))).findFirst();
     }
     
     private String getId(final Map metric) {
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapper.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapper.java
index 6d58417..d109cd4 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapper.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapper.java
@@ -30,7 +30,7 @@ public final class SummaryWrapper implements MetricsWrapper {
     private final Summary summary;
     
     @Override
-    public void summaryObserve(final double value) {
+    public void observe(final double value) {
         summary.observe(value);
     }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/metrics.yaml b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/metrics.yaml
index 0968054..5a22019 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/metrics.yaml
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/main/resources/metrics.yaml
@@ -98,3 +98,22 @@ metrics:
     name: proxy_transaction_rollback_total
     type: COUNTER
     help: the shardingsphere proxy transaction rollback count total
+  - id: proxy_info
+    name: proxy_info
+    type: GaugeMetricFamily
+    help: proxy information
+    labels: 
+      - name
+  - id: build_info
+    name: build_info
+    type: GaugeMetricFamily
+    help: build information
+    labels:
+      - version
+      - name
+  - id: meta_data_info
+    name: meta_data_info
+    type: GaugeMetricFamily
+    help: meta data information
+    labels:
+      - name
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/BuildInfoCollectorTest.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/BuildInfoCollectorTest.java
index 515ca14..1f12a1c 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/BuildInfoCollectorTest.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/BuildInfoCollectorTest.java
@@ -22,7 +22,7 @@ import org.junit.Test;
 
 import java.util.List;
 
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertFalse;
 
 public final class BuildInfoCollectorTest {
 
@@ -30,6 +30,6 @@ public final class BuildInfoCollectorTest {
     public void assertCollect() {
         BuildInfoCollector buildInfoCollector = new BuildInfoCollector();
         List<MetricFamilySamples> metricFamilySamples = buildInfoCollector.collect();
-        assertThat(metricFamilySamples.size(), org.hamcrest.Matchers.greaterThan(0));
+        assertFalse(metricFamilySamples.isEmpty());
     }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/BuildInfoCollectorTest.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/MetaDataInfoCollectorTest.java
similarity index 71%
copy from shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/BuildInfoCollectorTest.java
copy to shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/MetaDataInfoCollectorTest.java
index 515ca14..905a14a 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/BuildInfoCollectorTest.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/MetaDataInfoCollectorTest.java
@@ -17,19 +17,19 @@
 
 package org.apache.shardingsphere.agent.metrics.prometheus.collector;
 
-import io.prometheus.client.Collector.MetricFamilySamples;
+import io.prometheus.client.Collector;
 import org.junit.Test;
 
 import java.util.List;
 
-import static org.junit.Assert.assertThat;
-
-public final class BuildInfoCollectorTest {
+import static org.junit.Assert.assertFalse;
 
+public final class MetaDataInfoCollectorTest {
+    
     @Test
     public void assertCollect() {
-        BuildInfoCollector buildInfoCollector = new BuildInfoCollector();
-        List<MetricFamilySamples> metricFamilySamples = buildInfoCollector.collect();
-        assertThat(metricFamilySamples.size(), org.hamcrest.Matchers.greaterThan(0));
+        MetaDataInfoCollector metaDataInfoCollector = new MetaDataInfoCollector();
+        List<Collector.MetricFamilySamples> metricFamilySamples = metaDataInfoCollector.collect();
+        assertFalse(metricFamilySamples.isEmpty());
     }
 }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/CounterWrapperTest.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/CounterWrapperTest.java
index 7a9e071..99bf840 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/CounterWrapperTest.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/CounterWrapperTest.java
@@ -28,8 +28,8 @@ public final class CounterWrapperTest {
     public void assertCreate() {
         Counter counter = Counter.build().name("a").help("help").create();
         CounterWrapper counterWrapper = new CounterWrapper(counter);
-        counterWrapper.counterInc();
-        counterWrapper.counterInc(1);
+        counterWrapper.inc();
+        counterWrapper.inc(1);
         counter = (Counter) ReflectiveUtil.getFieldValue(counterWrapper, "counter");
         org.hamcrest.MatcherAssert.assertThat(counter.get(), Matchers.is(2.0));
     }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/GaugeWrapperTest.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/GaugeWrapperTest.java
index bb0064d..d34941c 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/GaugeWrapperTest.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/GaugeWrapperTest.java
@@ -28,8 +28,8 @@ public final class GaugeWrapperTest {
     public void assertCreate() {
         Gauge gauge = Gauge.build().name("a").help("help").create();
         GaugeWrapper gaugeWrapper = new GaugeWrapper(gauge);
-        gaugeWrapper.gaugeInc();
-        gaugeWrapper.gaugeInc(1);
+        gaugeWrapper.inc();
+        gaugeWrapper.inc(1);
         gauge = (Gauge) ReflectiveUtil.getFieldValue(gaugeWrapper, "gauge");
         org.hamcrest.MatcherAssert.assertThat(gauge.get(), Matchers.is(2.0));
     }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/HistogramWrapperTest.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/HistogramWrapperTest.java
index b4cd78f..dbf5f82 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/HistogramWrapperTest.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/HistogramWrapperTest.java
@@ -29,7 +29,7 @@ public final class HistogramWrapperTest {
     public void assertCreate() {
         Histogram histogram = Histogram.build().name("a").help("help").create();
         HistogramWrapper histogramWrapper = new HistogramWrapper(histogram);
-        histogramWrapper.histogramObserve(1);
+        histogramWrapper.observe(1);
         histogram = (Histogram) ReflectiveUtil.getFieldValue(histogramWrapper, "histogram");
         assertEquals(histogram.collect().size(), 1);
     }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapperTest.java b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapperTest.java
index 8dd1357..0f8690c 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapperTest.java
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/SummaryWrapperTest.java
@@ -29,7 +29,7 @@ public final class SummaryWrapperTest {
     public void assertCreate() {
         Summary summary = Summary.build().name("a").help("help").create();
         SummaryWrapper summaryWrapper = new SummaryWrapper(summary);
-        summaryWrapper.summaryObserve(1);
+        summaryWrapper.observe(1);
         summary = (Summary) ReflectiveUtil.getFieldValue(summaryWrapper, "summary");
         assertEquals(summary.collect().size(), 1);
     }
diff --git a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/resources/metrics.yaml b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/resources/metrics.yaml
index 4bd4059..ac4545a 100644
--- a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/resources/metrics.yaml
+++ b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/shardingsphere-agent-metrics-prometheus/src/test/resources/metrics.yaml
@@ -60,3 +60,22 @@ metrics:
     type: DELEGATE
     name:
     help: 
+  - id: proxy_info
+    name: proxy_info
+    type: GaugeMetricFamily
+    help: proxy information
+    labels:
+      - name
+  - id: build_info
+    name: build_info
+    type: GaugeMetricFamily
+    help: build information
+    labels:
+      - version
+      - name
+  - id: meta_data_info
+    name: meta_data_info
+    type: GaugeMetricFamily
+    help: meta data information
+    labels:
+      - name