Skip to content

Commit

Permalink
added ConsoleReporter
Browse files Browse the repository at this point in the history
  • Loading branch information
MarkWolters committed Oct 7, 2023
1 parent 73698ee commit f492979
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,16 @@

package io.nosqlbench.engine.core.lifecycle;

import com.codahale.metrics.*;
import com.codahale.metrics.ConsoleReporter.Builder;
import io.nosqlbench.api.engine.metrics.reporters.Log4JMetricsReporter;
import io.nosqlbench.api.engine.metrics.reporters.Log4JMetricsReporter.LoggingLevel;
import io.nosqlbench.engine.core.metrics.NBMetricsSummary;
import com.codahale.metrics.MetricAttribute;
import io.nosqlbench.api.engine.metrics.reporters.ConsoleReporter;
import io.nosqlbench.components.NBBuilders;
import io.nosqlbench.components.NBComponent;

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.TimeUnit;

public class ExecutionMetricsResult extends ExecutionResult {

Expand All @@ -53,34 +51,29 @@ public ExecutionMetricsResult(final long startedAt, final long endedAt, final St
super(startedAt, endedAt, iolog, error);
}

public String getMetricsSummary() {
public String getMetricsSummary(NBComponent component) {
final ByteArrayOutputStream os = new ByteArrayOutputStream();
try (final PrintStream ps = new PrintStream(os)) {
// TODO: metrics
// final Builder builder = ConsoleReporter.forRegistry(ActivityMetrics.getMetricRegistry())
// .convertDurationsTo(TimeUnit.MICROSECONDS)
// .convertRatesTo(TimeUnit.SECONDS)
// .filter(MetricFilter.ALL)
// .outputTo(ps);
// final Set<MetricAttribute> disabled = new HashSet<>(ExecutionMetricsResult.INTERVAL_ONLY_METRICS);
// if (60000 > this.getElapsedMillis()) disabled.addAll(ExecutionMetricsResult.OVER_ONE_MINUTE_METRICS);
// builder.disabledMetricAttributes(disabled);
// final ConsoleReporter consoleReporter = builder.build();
// consoleReporter.report();
// consoleReporter.close();
final NBBuilders.ConsoleReporterBuilder builder = new NBBuilders.ConsoleReporterBuilder(component, ps);
final Set<MetricAttribute> disabled = new HashSet<>(ExecutionMetricsResult.INTERVAL_ONLY_METRICS);
if (60000 > this.getElapsedMillis()) disabled.addAll(ExecutionMetricsResult.OVER_ONE_MINUTE_METRICS);
builder.disabledMetricAttributes(disabled);
final ConsoleReporter consoleReporter = builder.build();
consoleReporter.report();
consoleReporter.close();
}
final String result = os.toString(StandardCharsets.UTF_8);
return result;
}

public void reportToConsole() {
final String summaryReport = this.getMetricsSummary();
public void reportToConsole(NBComponent component) {
final String summaryReport = this.getMetricsSummary(component);
System.out.println(summaryReport);
}


public void reportMetricsSummaryTo(final PrintStream out) {
out.println(this.getMetricsSummary());
public void reportMetricsSummaryTo(NBComponent component, final PrintStream out) {
out.println(this.getMetricsSummary(component));
}

public void reportMetricsSummaryToLog() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package io.nosqlbench.engine.core.lifecycle.scenario.execution;

import io.nosqlbench.components.NBComponent;
import io.nosqlbench.engine.core.lifecycle.ExecutionMetricsResult;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
Expand All @@ -29,7 +30,7 @@

public class ScenarioSummary {
private final static Logger logger = LogManager.getLogger(ScenarioSummary.class);
private static void doReportSummaries(final String reportSummaryTo, final ExecutionMetricsResult result, Map<String,String> subs) {
private static void doReportSummaries(NBComponent scenario, final String reportSummaryTo, final ExecutionMetricsResult result, Map<String,String> subs) {
final List<PrintStream> fullChannels = new ArrayList<>();
final List<PrintStream> briefChannels = new ArrayList<>();
final String[] destinationSpecs = reportSummaryTo.split(", *");
Expand Down Expand Up @@ -69,7 +70,9 @@ private static void doReportSummaries(final String reportSummaryTo, final Execut
briefChannels.add(out);
}
}
fullChannels.forEach(result::reportMetricsSummaryTo);
for (PrintStream fullChannel : fullChannels) {
result.reportMetricsSummaryTo(scenario, fullChannel);
}
// briefChannels.forEach(result::reportCountsTo);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import com.codahale.metrics.*;
import com.codahale.metrics.Timer;
import io.nosqlbench.api.engine.metrics.instruments.NBMetric;
import io.nosqlbench.api.labels.NBLabels;
import io.nosqlbench.components.NBComponent;
import io.nosqlbench.components.PeriodicTaskComponent;
Expand Down Expand Up @@ -56,7 +57,31 @@ public ConsoleReporter(NBComponent node, NBLabels extraLabels, int seconds, bool

@Override
protected void task() {
report();
}

public void report() {
SortedMap<String, Gauge> gauges = new TreeMap<>();
SortedMap<String, Counter> counters = new TreeMap<>();
SortedMap<String, Histogram> histograms = new TreeMap<>();
SortedMap<String, Meter> meters = new TreeMap<>();
SortedMap<String, Timer> timers = new TreeMap<>();
List<NBMetric> metrics = getParent().findMetricsInTree("");
final long timestamp = TimeUnit.MILLISECONDS.toSeconds(clock.getTime());
for (NBMetric metric : metrics) {
if (metric instanceof Gauge<?>) {
gauges.put(metric.getLabels().linearizeAsMetrics(), (Gauge<?>) metric);
} else if (metric instanceof Counter) {
counters.put(metric.getLabels().linearizeAsMetrics(), (Counter) metric);
} else if (metric instanceof Histogram) {
histograms.put(metric.getLabels().linearizeAsMetrics(), (Histogram) metric);
} else if (metric instanceof Meter) {
meters.put(metric.getLabels().linearizeAsMetrics(), (Meter) metric);
} else if (metric instanceof Timer) {
timers.put(metric.getLabels().linearizeAsMetrics(), (Timer) metric);
}
}
report(gauges, counters, histograms, meters, timers);
}

public void report(SortedMap<String, Gauge> gauges,
Expand Down

0 comments on commit f492979

Please sign in to comment.