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;
}