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"));