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

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


The following commit(s) were added to refs/heads/master by this push:
     new 9d8b922708 Add an argument to decide expose the default JVM metrics 
(#3676)
9d8b922708 is described below

commit 9d8b922708162549f2977c75fc9b63a0712bffce
Author: Yong Zhang <[email protected]>
AuthorDate: Mon Dec 5 11:07:58 2022 +0800

    Add an argument to decide expose the default JVM metrics (#3676)
    
    ---
    
    ### Motivation
    
    Expose the default JVM Metrics or not. If you are using the
    BookKeeper as an embedded service and you want to expose metrics
    in your application, you might need to disable this to avoid the
    JVM metrics register duplicated.
    
    ### Modification
    
    - Add a configuration variable to decide whether or not to expose the
    JVM metrics
---
 conf/bk_server.conf                                |  4 ++
 .../prometheus/PrometheusMetricsProvider.java      | 43 ++++++++++++----------
 2 files changed, 27 insertions(+), 20 deletions(-)

diff --git a/conf/bk_server.conf b/conf/bk_server.conf
index c1696ca3be..c94a9b003a 100755
--- a/conf/bk_server.conf
+++ b/conf/bk_server.conf
@@ -877,6 +877,10 @@ zkEnableSecurity=false
 # latency stats rollover interval, in seconds
 # prometheusStatsLatencyRolloverSeconds=60
 
+# Expose the default JVM Metrics or not. If you are using the BookKeeper as an 
embedded service and you want to 
+# expose metrics in your application, you might need to disable this to avoid 
the JVM metrics register duplicated.
+# exposeDefaultJVMMetrics=true
+
 #############################################################################
 ## Codahale Metrics Provider
 #############################################################################
diff --git 
a/stats/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java
 
b/stats/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java
index 0c7465119f..1136b5bade 100644
--- 
a/stats/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java
+++ 
b/stats/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java
@@ -99,6 +99,7 @@ public class PrometheusMetricsProvider implements 
StatsProvider {
     public void start(Configuration conf) {
         boolean httpEnabled = conf.getBoolean(PROMETHEUS_STATS_HTTP_ENABLE, 
DEFAULT_PROMETHEUS_STATS_HTTP_ENABLE);
         boolean bkHttpServerEnabled = conf.getBoolean("httpServerEnabled", 
false);
+        boolean exposeDefaultJVMMetrics = 
conf.getBoolean("exposeDefaultJVMMetrics", true);
         // only start its own http server when prometheus http is enabled and 
bk http server is not enabled.
         if (httpEnabled && !bkHttpServerEnabled) {
             String httpAddr = conf.getString(PROMETHEUS_STATS_HTTP_ADDRESS, 
DEFAULT_PROMETHEUS_STATS_HTTP_ADDR);
@@ -119,26 +120,28 @@ public class PrometheusMetricsProvider implements 
StatsProvider {
             }
         }
 
-        // Include standard JVM stats
-        registerMetrics(new StandardExports());
-        registerMetrics(new MemoryPoolsExports());
-        registerMetrics(new GarbageCollectorExports());
-        registerMetrics(new ThreadExports());
-
-        // Add direct memory allocated through unsafe
-        registerMetrics(Gauge.build("jvm_memory_direct_bytes_used", 
"-").create().setChild(new Child() {
-            @Override
-            public double get() {
-                return poolMxBeanOp.isPresent() ? 
poolMxBeanOp.get().getMemoryUsed() : Double.NaN;
-            }
-        }));
-
-        registerMetrics(Gauge.build("jvm_memory_direct_bytes_max", 
"-").create().setChild(new Child() {
-            @Override
-            public double get() {
-                return PlatformDependent.estimateMaxDirectMemory();
-            }
-        }));
+        if (exposeDefaultJVMMetrics) {
+            // Include standard JVM stats
+            registerMetrics(new StandardExports());
+            registerMetrics(new MemoryPoolsExports());
+            registerMetrics(new GarbageCollectorExports());
+            registerMetrics(new ThreadExports());
+
+            // Add direct memory allocated through unsafe
+            registerMetrics(Gauge.build("jvm_memory_direct_bytes_used", 
"-").create().setChild(new Child() {
+                @Override
+                public double get() {
+                    return poolMxBeanOp.isPresent() ? 
poolMxBeanOp.get().getMemoryUsed() : Double.NaN;
+                }
+            }));
+
+            registerMetrics(Gauge.build("jvm_memory_direct_bytes_max", 
"-").create().setChild(new Child() {
+                @Override
+                public double get() {
+                    return PlatformDependent.estimateMaxDirectMemory();
+                }
+            }));
+        }
 
         executor = Executors.newSingleThreadScheduledExecutor(new 
DefaultThreadFactory("metrics"));
 

Reply via email to