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

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


The following commit(s) were added to refs/heads/master by this push:
     new ec2afb48a STORM-3186: Customizable configuration for metric reporting 
interval (#3132)
ec2afb48a is described below

commit ec2afb48a8cba2d77920d1feca25984a1d9850b5
Author: Rishabh Jain <[email protected]>
AuthorDate: Mon Dec 4 04:23:53 2023 -0800

    STORM-3186: Customizable configuration for metric reporting interval (#3132)
    
    ---------
    
    Co-authored-by: Richard Zowalla <[email protected]>
---
 conf/defaults.yaml                                                | 1 +
 storm-server/src/main/java/org/apache/storm/DaemonConfig.java     | 8 +++++++-
 .../storm/daemon/metrics/reporters/ConsolePreparableReporter.java | 7 ++++++-
 .../storm/daemon/metrics/reporters/CsvPreparableReporter.java     | 7 ++++++-
 4 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/conf/defaults.yaml b/conf/defaults.yaml
index cef7cec45..5b2140091 100644
--- a/conf/defaults.yaml
+++ b/conf/defaults.yaml
@@ -366,6 +366,7 @@ pacemaker.thrift.message.size.max: 10485760
 #default storm daemon metrics reporter plugins
 storm.daemon.metrics.reporter.plugins:
      - "org.apache.storm.daemon.metrics.reporters.JmxPreparableReporter"
+storm.daemon.metrics.reporter.interval.secs: 10
 
 storm.metricstore.class: "org.apache.storm.metricstore.rocksdb.RocksDbStore"
 storm.metricprocessor.class: 
"org.apache.storm.metricstore.NimbusMetricProcessor"
diff --git a/storm-server/src/main/java/org/apache/storm/DaemonConfig.java 
b/storm-server/src/main/java/org/apache/storm/DaemonConfig.java
index 76dae92b4..0d3ded3e0 100644
--- a/storm-server/src/main/java/org/apache/storm/DaemonConfig.java
+++ b/storm-server/src/main/java/org/apache/storm/DaemonConfig.java
@@ -78,6 +78,12 @@ public class DaemonConfig implements Validated {
     @IsString
     public static final String STORM_DAEMON_METRICS_REPORTER_PLUGIN_DOMAIN = 
"storm.daemon.metrics.reporter.plugin.domain";
 
+    /**
+     * We report the metrics with this interval period.
+     */
+    @IsInteger
+    public static final String STORM_DAEMON_METRICS_REPORTER_INTERVAL_SECS = 
"storm.daemon.metrics.reporter.interval.secs";
+
     /**
      * Specify the csv reporter directory for CvsPreparableReporter daemon 
metrics reporter.
      */
@@ -339,7 +345,7 @@ public class DaemonConfig implements Validated {
     @IsInteger
     @IsPositiveNumber
     public static final String UI_PORT = "ui.port";
-    
+
     /**
      * Storm UI's title.
      */
diff --git 
a/storm-server/src/main/java/org/apache/storm/daemon/metrics/reporters/ConsolePreparableReporter.java
 
b/storm-server/src/main/java/org/apache/storm/daemon/metrics/reporters/ConsolePreparableReporter.java
index f8b33f50c..8b81128d1 100644
--- 
a/storm-server/src/main/java/org/apache/storm/daemon/metrics/reporters/ConsolePreparableReporter.java
+++ 
b/storm-server/src/main/java/org/apache/storm/daemon/metrics/reporters/ConsolePreparableReporter.java
@@ -17,13 +17,17 @@ import com.codahale.metrics.MetricRegistry;
 import java.util.Locale;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
+
+import org.apache.storm.DaemonConfig;
 import org.apache.storm.daemon.metrics.MetricsUtils;
+import org.apache.storm.utils.ObjectReader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class ConsolePreparableReporter implements PreparableReporter {
     private static final Logger LOG = 
LoggerFactory.getLogger(ConsolePreparableReporter.class);
     ConsoleReporter reporter = null;
+    Integer reportingIntervalSecs = null;
 
     @Override
     public void prepare(MetricRegistry metricsRegistry, Map<String, Object> 
daemonConf) {
@@ -46,13 +50,14 @@ public class ConsolePreparableReporter implements 
PreparableReporter {
             builder.convertDurationsTo(durationUnit);
         }
         reporter = builder.build();
+        reportingIntervalSecs = 
ObjectReader.getInt(daemonConf.get(DaemonConfig.STORM_DAEMON_METRICS_REPORTER_INTERVAL_SECS),
 10);
     }
 
     @Override
     public void start() {
         if (reporter != null) {
             LOG.debug("Starting...");
-            reporter.start(10, TimeUnit.SECONDS);
+            reporter.start(reportingIntervalSecs, TimeUnit.SECONDS);
         } else {
             throw new IllegalStateException("Attempt to start without 
preparing " + getClass().getSimpleName());
         }
diff --git 
a/storm-server/src/main/java/org/apache/storm/daemon/metrics/reporters/CsvPreparableReporter.java
 
b/storm-server/src/main/java/org/apache/storm/daemon/metrics/reporters/CsvPreparableReporter.java
index f3fa2f3b5..a58ce19c8 100644
--- 
a/storm-server/src/main/java/org/apache/storm/daemon/metrics/reporters/CsvPreparableReporter.java
+++ 
b/storm-server/src/main/java/org/apache/storm/daemon/metrics/reporters/CsvPreparableReporter.java
@@ -18,13 +18,17 @@ import java.io.File;
 import java.util.Locale;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
+
+import org.apache.storm.DaemonConfig;
 import org.apache.storm.daemon.metrics.MetricsUtils;
+import org.apache.storm.utils.ObjectReader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class CsvPreparableReporter implements PreparableReporter {
     private static final Logger LOG = 
LoggerFactory.getLogger(CsvPreparableReporter.class);
     CsvReporter reporter = null;
+    Integer reportingIntervalSecs = null;
 
     @Override
     public void prepare(MetricRegistry metricsRegistry, Map<String, Object> 
daemonConf) {
@@ -48,13 +52,14 @@ public class CsvPreparableReporter implements 
PreparableReporter {
 
         File csvMetricsDir = MetricsUtils.getCsvLogDir(daemonConf);
         reporter = builder.build(csvMetricsDir);
+        reportingIntervalSecs = 
ObjectReader.getInt(daemonConf.get(DaemonConfig.STORM_DAEMON_METRICS_REPORTER_INTERVAL_SECS),
 10);
     }
 
     @Override
     public void start() {
         if (reporter != null) {
             LOG.debug("Starting...");
-            reporter.start(10, TimeUnit.SECONDS);
+            reporter.start(reportingIntervalSecs, TimeUnit.SECONDS);
         } else {
             throw new IllegalStateException("Attempt to start without 
preparing " + getClass().getSimpleName());
         }

Reply via email to