Skip to content

Commit

Permalink
Add collector update Stat. (opensearch-project#420)
Browse files Browse the repository at this point in the history
Signed-off-by: Filip Drobnjakovic <drobnjakovicfilip@gmail.com>
  • Loading branch information
Tjofil committed Apr 17, 2023
1 parent 2a1861b commit b579583
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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(),
Expand Down

0 comments on commit b579583

Please sign in to comment.