Merge pull request #1279 from nosqlbench/labels_trueup

Labels trueup
This commit is contained in:
Jonathan Shook
2023-05-18 16:40:30 -05:00
committed by GitHub
44 changed files with 937 additions and 474 deletions

View File

@@ -123,7 +123,14 @@ public class MapLabels implements NBLabels {
}
public String toString() {
return this.linearize("name");
StringBuilder sb = new StringBuilder("{");
labels.forEach((k,v) -> {
sb.append(k).append(":\\\"").append(v).append("\\\"").append(",");
});
sb.setLength(sb.length()-",".length());
sb.append("}");
return sb.toString();
}
@Override

View File

@@ -19,13 +19,11 @@ package io.nosqlbench.api.engine.metrics.reporters;
import com.codahale.metrics.*;
import io.nosqlbench.api.config.NBLabeledElement;
import io.nosqlbench.api.config.NBLabels;
import io.nosqlbench.api.testutils.Perf;
import java.io.IOException;
import java.io.Writer;
import java.time.Clock;
import java.time.Instant;
import java.util.Arrays;
import java.util.Map;
/**
@@ -70,7 +68,7 @@ public enum PromExpositionFormat {
final long count = counting.getCount();
buffer
.append(labels.modifyValue("name", n -> n+"_total"))
.append(labels.modifyValue("name", n -> n+"_total").linearize("name"))
.append(' ')
.append(count)
.append(' ')
@@ -84,37 +82,37 @@ public enum PromExpositionFormat {
for (final double quantile : new double[]{0.5, 0.75, 0.90, 0.95, 0.98, 0.99, 0.999}) {
final double value = snapshot.getValue(quantile);
buffer
.append(labels.and("quantile", String.valueOf(quantile)))
.append(labels.and("quantile", String.valueOf(quantile)).linearize("name"))
.append(' ')
.append(value)
.append('\n');
}
final double snapshotCount =snapshot.size();
buffer.append(labels.modifyValue("name",n->n+"_count"))
buffer.append(labels.modifyValue("name",n->n+"_count").linearize("name"))
.append(' ')
.append(snapshotCount)
.append('\n');
buffer.append("# TYPE ").append(labels.only("name")).append("_max").append(" gauge\n");
final long maxValue = snapshot.getMax();
buffer.append(labels.modifyValue("name",n->n+"_max"))
buffer.append(labels.modifyValue("name",n->n+"_max").linearize("name"))
.append(' ')
.append(maxValue)
.append('\n');
buffer.append("# TYPE ").append(labels.only("name")).append("_min").append(" gauge\n");
buffer.append("# TYPE ").append(labels.modifyValue("name",n->n+"_min").only("name")).append(" gauge\n");
final long minValue = snapshot.getMin();
buffer.append(labels.modifyValue("name",n->n+"_min"))
buffer.append(labels.modifyValue("name",n->n+"_min").linearize("name"))
.append(' ')
.append(minValue)
.append('\n');
buffer.append("# TYPE ").append(labels.only("name")).append("_mean").append(" gauge\n");
buffer.append("# TYPE ").append(labels.modifyValue("name",n->n+"_mean").only("name")).append(" gauge\n");
final double meanValue = snapshot.getMean();
buffer.append(labels.modifyValue("name",n->n+"_mean"))
buffer.append(labels.modifyValue("name",n->n+"_mean").linearize("name"))
.append(' ')
.append(meanValue)
.append('\n');
buffer.append("# TYPE ").append(labels.only("name")).append("_stdev").append(" gauge\n");
buffer.append("# TYPE ").append(labels.modifyValue("name",n->n+"_stdev").only("name")).append(" gauge\n");
final double stdDev = snapshot.getStdDev();
buffer.append(labels.modifyValue("name",n->n+"_stdev"))
buffer.append(labels.modifyValue("name",n->n+"_stdev").linearize("name"))
.append(' ')
.append(stdDev)
.append('\n');
@@ -125,18 +123,18 @@ public enum PromExpositionFormat {
final Object value = gauge.getValue();
if (value instanceof final Number number) {
final double doubleValue = number.doubleValue();
buffer.append(labels)
buffer.append(labels.linearize("name"))
.append(' ')
.append(doubleValue)
.append('\n');
} else if (value instanceof final CharSequence sequence) {
final String stringValue = sequence.toString();
buffer.append(labels)
buffer.append(labels.linearize("name"))
.append(' ')
.append(stringValue)
.append('\n');
} else if (value instanceof final String stringValue) {
buffer.append(labels)
buffer.append(labels.linearize("name"))
.append(' ')
.append(stringValue)
.append('\n');
@@ -147,28 +145,28 @@ public enum PromExpositionFormat {
if (metric instanceof final Metered meter) {
buffer.append("# TYPE ").append(labels.modifyValue("name",n->n+"_1mRate").only("name")).append(" gauge\n");
final double oneMinuteRate = meter.getOneMinuteRate();
buffer.append(labels.modifyValue("name",n->n+"_1mRate"))
buffer.append(labels.modifyValue("name",n->n+"_1mRate").linearize("name"))
.append(' ')
.append(oneMinuteRate)
.append('\n');
buffer.append("# TYPE ").append(labels.modifyValue("name",n->n+"_5mRate").only("name")).append(" gauge\n");
final double fiveMinuteRate = meter.getFiveMinuteRate();
buffer.append(labels.modifyValue("name",n->n+"_5mRate"))
buffer.append(labels.modifyValue("name",n->n+"_5mRate").linearize("name"))
.append(' ')
.append(fiveMinuteRate)
.append('\n');
buffer.append("# TYPE ").append(labels.modifyValue("name",n->n+"_15mRate").only("name")).append(" gauge\n");
final double fifteenMinuteRate = meter.getFifteenMinuteRate();
buffer.append(labels.modifyValue("name",n->n+"_15mRate"))
buffer.append(labels.modifyValue("name",n->n+"_15mRate").linearize("name"))
.append(' ')
.append(fifteenMinuteRate)
.append('\n');
buffer.append("# TYPE ").append(labels.modifyValue("name",n->n+"_meanRate").only("name")).append(" gauge\n");
final double meanRate = meter.getMeanRate();
buffer.append(labels.modifyValue("name",n->n+"_meanRate"))
buffer.append(labels.modifyValue("name",n->n+"_meanRate").linearize("name"))
.append(' ')
.append(meanRate)
.append('\n');

View File

@@ -74,6 +74,7 @@ public class PromPushReporter extends ScheduledReporter {
}
PromPushReporter.logger.debug("formatted {} metrics in prom expo format", total);
final String exposition = sb.toString();
logger.trace(() -> "prom exposition format:\n" + exposition);
final double backoffRatio=1.5;
final double maxBackoffSeconds=10;