From b579583b304086f575ac233c47435675cb6c5609 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Drobnjakovi=C4=87?= Date: Mon, 17 Apr 2023 21:07:34 +0200 Subject: [PATCH] Add collector update Stat. (#420) Signed-off-by: Filip Drobnjakovic --- .../collectors/CircuitBreakerCollector.java | 58 ++++++++++++++----- .../ClusterManagerServiceMetrics.java | 4 ++ 2 files changed, 46 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/opensearch/performanceanalyzer/collectors/CircuitBreakerCollector.java b/src/main/java/org/opensearch/performanceanalyzer/collectors/CircuitBreakerCollector.java index 09560d6b..f1303df8 100644 --- a/src/main/java/org/opensearch/performanceanalyzer/collectors/CircuitBreakerCollector.java +++ b/src/main/java/org/opensearch/performanceanalyzer/collectors/CircuitBreakerCollector.java @@ -7,18 +7,26 @@ import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.opensearch.indices.breaker.CircuitBreakerStats; import org.opensearch.performanceanalyzer.OpenSearchResources; +import org.opensearch.performanceanalyzer.PerformanceAnalyzerApp; import org.opensearch.performanceanalyzer.metrics.AllMetrics.CircuitBreakerDimension; import org.opensearch.performanceanalyzer.metrics.AllMetrics.CircuitBreakerValue; import org.opensearch.performanceanalyzer.metrics.MetricsConfiguration; import org.opensearch.performanceanalyzer.metrics.MetricsProcessor; import org.opensearch.performanceanalyzer.metrics.PerformanceAnalyzerMetrics; +import org.opensearch.performanceanalyzer.rca.framework.metrics.ExceptionsAndErrors; +import org.opensearch.performanceanalyzer.rca.framework.metrics.WriterMetrics; public class CircuitBreakerCollector extends PerformanceAnalyzerMetricsCollector implements MetricsProcessor { public static final int SAMPLING_TIME_INTERVAL = MetricsConfiguration.CONFIG_MAP.get(CircuitBreakerCollector.class).samplingInterval; + + private static final Logger LOG = + LogManager.getLogger(CircuitBreakerCollector.class); private static final int KEYS_PATH_LENGTH = 0; private StringBuilder value; @@ -33,24 +41,42 @@ public void collectMetrics(long startTime) { return; } - CircuitBreakerStats[] allCircuitBreakerStats = - OpenSearchResources.INSTANCE.getCircuitBreakerService().stats().getAllStats(); - // - Reusing the same StringBuilder across exectuions; so clearing before using - value.setLength(0); - value.append(PerformanceAnalyzerMetrics.getJsonCurrentMilliSeconds()); - - for (CircuitBreakerStats stats : allCircuitBreakerStats) { - value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor) - .append( - new CircuitBreakerStatus( - stats.getName(), - stats.getEstimated(), - stats.getTrippedCount(), - stats.getLimit()) - .serialize()); + try { + long mCurrT = System.currentTimeMillis(); + + CircuitBreakerStats[] allCircuitBreakerStats = + OpenSearchResources.INSTANCE.getCircuitBreakerService().stats().getAllStats(); + // - Reusing the same StringBuilder across exectuions; so clearing before using + value.setLength(0); + value.append(PerformanceAnalyzerMetrics.getJsonCurrentMilliSeconds()); + + for (CircuitBreakerStats stats : allCircuitBreakerStats) { + value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor) + .append( + new CircuitBreakerStatus( + stats.getName(), + stats.getEstimated(), + stats.getTrippedCount(), + stats.getLimit()) + .serialize()); + } + + saveMetricValues(value.toString(), startTime); + + PerformanceAnalyzerApp.WRITER_METRICS_AGGREGATOR.updateStat( + WriterMetrics.CIRCUIT_BREAKER_COLLECTOR_EXECUTION_TIME, + "", + System.currentTimeMillis() - mCurrT); + + } catch (Exception ex) { + PerformanceAnalyzerApp.ERRORS_AND_EXCEPTIONS_AGGREGATOR.updateStat( + ExceptionsAndErrors.CIRCUIT_BREAKER_COLLECTOR_ERROR, "", 1); + LOG.debug( + "Exception in Collecting CircuitBreaker Metrics: {} for startTime {}", + () -> ex.toString(), + () -> startTime); } - saveMetricValues(value.toString(), startTime); } @Override diff --git a/src/main/java/org/opensearch/performanceanalyzer/collectors/ClusterManagerServiceMetrics.java b/src/main/java/org/opensearch/performanceanalyzer/collectors/ClusterManagerServiceMetrics.java index 6a70e18f..0af0206b 100644 --- a/src/main/java/org/opensearch/performanceanalyzer/collectors/ClusterManagerServiceMetrics.java +++ b/src/main/java/org/opensearch/performanceanalyzer/collectors/ClusterManagerServiceMetrics.java @@ -13,11 +13,13 @@ import org.apache.logging.log4j.Logger; import org.opensearch.cluster.service.PendingClusterTask; import org.opensearch.performanceanalyzer.OpenSearchResources; +import org.opensearch.performanceanalyzer.PerformanceAnalyzerApp; import org.opensearch.performanceanalyzer.metrics.AllMetrics.ClusterManagerPendingTaskDimension; import org.opensearch.performanceanalyzer.metrics.AllMetrics.ClusterManagerPendingValue; import org.opensearch.performanceanalyzer.metrics.MetricsConfiguration; import org.opensearch.performanceanalyzer.metrics.MetricsProcessor; import org.opensearch.performanceanalyzer.metrics.PerformanceAnalyzerMetrics; +import org.opensearch.performanceanalyzer.rca.framework.metrics.WriterMetrics; @SuppressWarnings("unchecked") public class ClusterManagerServiceMetrics extends PerformanceAnalyzerMetricsCollector @@ -97,6 +99,8 @@ public void collectMetrics(long startTime) { PerformanceAnalyzerMetrics.CLUSTER_MANAGER_CURRENT, PerformanceAnalyzerMetrics.CLUSTER_MANAGER_META_DATA); } catch (Exception ex) { + PerformanceAnalyzerApp.WRITER_METRICS_AGGREGATOR.updateStat( + WriterMetrics.CLUSTER_MANAGER_METRICS_ERROR, "", 1); LOG.debug( "Exception in Collecting ClusterManager Metrics: {} for startTime {}", () -> ex.toString(),