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 d8d94f8e69a..9ee7ffcae09 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 @@ private void registerMetricsView(SdkMeterProviderBuilder providerBuilder) { } private void initStatsMetrics() { + if (!brokerConfig.isEnableStatsMetrics()) { + return; + } + processorWatermark = brokerMeter.gaugeBuilder(GAUGE_PROCESSOR_WATERMARK) .setDescription("Request processor watermark") .ofLongs() @@ -508,6 +512,10 @@ private void initStatsMetrics() { } 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 @@ private void initRequestMetrics() { } private void initConnectionMetrics() { + if (!brokerConfig.isEnableConnectionMetrics()) { + return; + } + producerConnection = brokerMeter.gaugeBuilder(GAUGE_PRODUCER_CONNECTIONS) .setDescription("Producer connections") .ofLongs() @@ -599,6 +611,10 @@ private void initConnectionMetrics() { } private void initLagAndDlqMetrics() { + if (!brokerConfig.isEnableLagAndDlqMetrics()) { + return; + } + consumerLagMessages = brokerMeter.gaugeBuilder(GAUGE_CONSUMER_LAG_MESSAGES) .setDescription("Consumer lag messages") .ofLongs() @@ -649,6 +665,10 @@ private void initLagAndDlqMetrics() { } 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 @@ private void initTransactionMetrics() { }); } 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 77f49554a5c..cee64f623b8 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 void setMetricsPromExporterHost(String metricsPromExporterHost) { 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; }