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

lizhimin pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new 9e2445ee9a [ISSUE #9589] Optimize broker metrics initialization (#9598)
9e2445ee9a is described below

commit 9e2445ee9a220ff8f869ebd5a803305a6a0267b1
Author: qianye <[email protected]>
AuthorDate: Tue Aug 12 14:23:00 2025 +0800

    [ISSUE #9589] Optimize broker metrics initialization (#9598)
---
 .../broker/metrics/BrokerMetricsManager.java       | 32 +++++++++-
 .../org/apache/rocketmq/common/BrokerConfig.java   | 74 ++++++++++++++++++++++
 2 files changed, 103 insertions(+), 3 deletions(-)

diff --git 
a/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
 
b/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
index d8d94f8e69..9ee7ffcae0 100644
--- 
a/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
+++ 
b/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
@@ -473,6 +473,10 @@ public class BrokerMetricsManager {
     }
 
     private void initStatsMetrics() {
+        if (!brokerConfig.isEnableStatsMetrics()) {
+            return;
+        }
+
         processorWatermark = 
brokerMeter.gaugeBuilder(GAUGE_PROCESSOR_WATERMARK)
             .setDescription("Request processor watermark")
             .ofLongs()
@@ -508,6 +512,10 @@ public class BrokerMetricsManager {
     }
 
     private void initRequestMetrics() {
+        if (!brokerConfig.isEnableRequestMetrics()) {
+            return;
+        }
+
         messagesInTotal = brokerMeter.counterBuilder(COUNTER_MESSAGES_IN_TOTAL)
             .setDescription("Total number of incoming messages")
             .build();
@@ -543,6 +551,10 @@ public class BrokerMetricsManager {
     }
 
     private void initConnectionMetrics() {
+        if (!brokerConfig.isEnableConnectionMetrics()) {
+            return;
+        }
+
         producerConnection = 
brokerMeter.gaugeBuilder(GAUGE_PRODUCER_CONNECTIONS)
             .setDescription("Producer connections")
             .ofLongs()
@@ -599,6 +611,10 @@ public class BrokerMetricsManager {
     }
 
     private void initLagAndDlqMetrics() {
+        if (!brokerConfig.isEnableLagAndDlqMetrics()) {
+            return;
+        }
+
         consumerLagMessages = 
brokerMeter.gaugeBuilder(GAUGE_CONSUMER_LAG_MESSAGES)
             .setDescription("Consumer lag messages")
             .ofLongs()
@@ -649,6 +665,10 @@ public class BrokerMetricsManager {
     }
 
     private void initTransactionMetrics() {
+        if (!brokerController.getBrokerConfig().isEnableTransactionMetrics()) {
+            return;
+        }
+
         commitMessagesTotal = 
brokerMeter.counterBuilder(COUNTER_COMMIT_MESSAGES_TOTAL)
                 .setDescription("Total number of commit messages")
                 .build();
@@ -677,9 +697,15 @@ public class BrokerMetricsManager {
                 });
     }
     private void initOtherMetrics() {
-        RemotingMetricsManager.initMetrics(brokerMeter, 
BrokerMetricsManager::newAttributesBuilder);
-        messageStore.initMetrics(brokerMeter, 
BrokerMetricsManager::newAttributesBuilder);
-        PopMetricsManager.initMetrics(brokerMeter, brokerController, 
BrokerMetricsManager::newAttributesBuilder);
+        if (brokerConfig.isEnableRemotingMetrics()) {
+            RemotingMetricsManager.initMetrics(brokerMeter, 
BrokerMetricsManager::newAttributesBuilder);
+        }
+        if (brokerConfig.isEnableMessageStoreMetrics()) {
+            messageStore.initMetrics(brokerMeter, 
BrokerMetricsManager::newAttributesBuilder);
+        }
+        if (brokerConfig.isEnablePopMetrics()) {
+            PopMetricsManager.initMetrics(brokerMeter, brokerController, 
BrokerMetricsManager::newAttributesBuilder);
+        }
     }
 
     public void shutdown() {
diff --git a/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java 
b/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
index 77f49554a5..cee64f623b 100644
--- a/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
+++ b/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
@@ -388,6 +388,15 @@ public class BrokerConfig extends BrokerIdentity {
 
     private boolean metricsInDelta = false;
 
+    private boolean enableRemotingMetrics = true;
+    private boolean enableMessageStoreMetrics = true;
+    private boolean enablePopMetrics = true;
+    private boolean enableConnectionMetrics = true;
+    private boolean enableTransactionMetrics = true;
+    private boolean enableStatsMetrics = true;
+    private boolean enableRequestMetrics = true;
+    private boolean enableLagAndDlqMetrics = true;
+
     private long channelExpiredTimeout = 1000 * 120;
     private long subscriptionExpiredTimeout = 1000 * 60 * 10;
 
@@ -1792,6 +1801,71 @@ public class BrokerConfig extends BrokerIdentity {
         this.metricsPromExporterHost = metricsPromExporterHost;
     }
 
+    public boolean isEnablePopMetrics() {
+        return enablePopMetrics;
+    }
+
+    public void setEnablePopMetrics(boolean enablePopMetrics) {
+        this.enablePopMetrics = enablePopMetrics;
+    }
+
+    public boolean isEnableConnectionMetrics() {
+        return enableConnectionMetrics;
+    }
+
+    public void setEnableConnectionMetrics(boolean enableConnectionMetrics) {
+        this.enableConnectionMetrics = enableConnectionMetrics;
+    }
+
+    public boolean isEnableTransactionMetrics() {
+        return enableTransactionMetrics;
+    }
+
+    public void setEnableTransactionMetrics(boolean enableTransactionMetrics) {
+        this.enableTransactionMetrics = enableTransactionMetrics;
+    }
+
+    public boolean isEnableStatsMetrics() {
+        return enableStatsMetrics;
+    }
+
+    public void setEnableStatsMetrics(boolean enableStatsMetrics) {
+        this.enableStatsMetrics = enableStatsMetrics;
+    }
+
+    public boolean isEnableRequestMetrics() {
+        return enableRequestMetrics;
+    }
+
+    public void setEnableRequestMetrics(boolean enableRequestMetrics) {
+        this.enableRequestMetrics = enableRequestMetrics;
+    }
+
+
+    public boolean isEnableLagAndDlqMetrics() {
+        return enableLagAndDlqMetrics;
+    }
+
+    public void setEnableLagAndDlqMetrics(boolean enableLagAndDlqMetrics) {
+        this.enableLagAndDlqMetrics = enableLagAndDlqMetrics;
+    }
+
+    public boolean isEnableRemotingMetrics() {
+        return enableRemotingMetrics;
+    }
+
+    public void setEnableRemotingMetrics(boolean enableRemotingMetrics) {
+        this.enableRemotingMetrics = enableRemotingMetrics;
+    }
+
+    public boolean isEnableMessageStoreMetrics() {
+        return enableMessageStoreMetrics;
+    }
+
+    public void setEnableMessageStoreMetrics(boolean 
enableMessageStoreMetrics) {
+        this.enableMessageStoreMetrics = enableMessageStoreMetrics;
+    }
+
     public int getTransactionOpMsgMaxSize() {
         return transactionOpMsgMaxSize;
     }

Reply via email to