Change to use labels for async instruments (#1349)
Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
This commit is contained in:
parent
589adc0531
commit
b734e366ec
|
@ -16,6 +16,7 @@
|
|||
|
||||
package io.opentelemetry.metrics;
|
||||
|
||||
import io.opentelemetry.common.Labels;
|
||||
import io.opentelemetry.metrics.AsynchronousInstrument.Result;
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
|
||||
|
@ -63,11 +64,11 @@ public interface AsynchronousInstrument<R extends Result> extends Instrument {
|
|||
|
||||
/** The result for the {@link Callback}. */
|
||||
interface LongResult extends Result {
|
||||
void observe(long value, String... keyValueLabelPairs);
|
||||
void observe(long value, Labels labels);
|
||||
}
|
||||
|
||||
/** The result for the {@link Callback}. */
|
||||
interface DoubleResult extends Result {
|
||||
void observe(double value, String... keyValueLabelPairs);
|
||||
void observe(double value, Labels labels);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
package io.opentelemetry.extensions.metrics.runtime;
|
||||
|
||||
import io.opentelemetry.OpenTelemetry;
|
||||
import io.opentelemetry.common.Labels;
|
||||
import io.opentelemetry.metrics.AsynchronousInstrument.Callback;
|
||||
import io.opentelemetry.metrics.AsynchronousInstrument.LongResult;
|
||||
import io.opentelemetry.metrics.LongSumObserver;
|
||||
|
@ -61,10 +62,9 @@ public final class GarbageCollector {
|
|||
.setDescription("Time spent in a given JVM garbage collector in milliseconds.")
|
||||
.setUnit("ms")
|
||||
.build();
|
||||
final List<String[]> labelSets = new ArrayList<>(garbageCollectors.size());
|
||||
final List<Labels> labelSets = new ArrayList<>(garbageCollectors.size());
|
||||
for (final GarbageCollectorMXBean gc : garbageCollectors) {
|
||||
String[] label = {GC_LABEL_KEY, gc.getName()};
|
||||
labelSets.add(label);
|
||||
labelSets.add(Labels.of(GC_LABEL_KEY, gc.getName()));
|
||||
}
|
||||
|
||||
gcMetric.setCallback(
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
package io.opentelemetry.extensions.metrics.runtime;
|
||||
|
||||
import io.opentelemetry.OpenTelemetry;
|
||||
import io.opentelemetry.common.Labels;
|
||||
import io.opentelemetry.metrics.AsynchronousInstrument.Callback;
|
||||
import io.opentelemetry.metrics.AsynchronousInstrument.LongResult;
|
||||
import io.opentelemetry.metrics.LongSumObserver;
|
||||
|
@ -75,14 +76,13 @@ public final class MemoryPools {
|
|||
.setDescription("Bytes of a given JVM memory area.")
|
||||
.setUnit("By")
|
||||
.build();
|
||||
final String[] usedHeap = new String[] {TYPE_LABEL_KEY, USED, AREA_LABEL_KEY, HEAP};
|
||||
final String[] usedNonHeap = new String[] {TYPE_LABEL_KEY, USED, AREA_LABEL_KEY, NON_HEAP};
|
||||
final String[] committedHeap = new String[] {TYPE_LABEL_KEY, COMMITTED, AREA_LABEL_KEY, HEAP};
|
||||
final String[] committedNonHeap =
|
||||
new String[] {TYPE_LABEL_KEY, COMMITTED, AREA_LABEL_KEY, NON_HEAP};
|
||||
final Labels usedHeap = Labels.of(TYPE_LABEL_KEY, USED, AREA_LABEL_KEY, HEAP);
|
||||
final Labels usedNonHeap = Labels.of(TYPE_LABEL_KEY, USED, AREA_LABEL_KEY, NON_HEAP);
|
||||
final Labels committedHeap = Labels.of(TYPE_LABEL_KEY, COMMITTED, AREA_LABEL_KEY, HEAP);
|
||||
final Labels committedNonHeap = Labels.of(TYPE_LABEL_KEY, COMMITTED, AREA_LABEL_KEY, NON_HEAP);
|
||||
// TODO: Decide if max is needed or not. May be derived with some approximation from max(used).
|
||||
final String[] maxHeap = new String[] {TYPE_LABEL_KEY, MAX, AREA_LABEL_KEY, HEAP};
|
||||
final String[] maxNonHeap = new String[] {TYPE_LABEL_KEY, MAX, AREA_LABEL_KEY, NON_HEAP};
|
||||
final Labels maxHeap = Labels.of(TYPE_LABEL_KEY, MAX, AREA_LABEL_KEY, HEAP);
|
||||
final Labels maxNonHeap = Labels.of(TYPE_LABEL_KEY, MAX, AREA_LABEL_KEY, NON_HEAP);
|
||||
areaMetric.setCallback(
|
||||
new LongSumObserver.Callback<LongResult>() {
|
||||
@Override
|
||||
|
@ -107,14 +107,13 @@ public final class MemoryPools {
|
|||
.setDescription("Bytes of a given JVM memory pool.")
|
||||
.setUnit("By")
|
||||
.build();
|
||||
final List<String[]> usedLabelSets = new ArrayList<>(poolBeans.size());
|
||||
final List<String[]> committedLabelSets = new ArrayList<>(poolBeans.size());
|
||||
final List<String[]> maxLabelSets = new ArrayList<>(poolBeans.size());
|
||||
final List<Labels> usedLabelSets = new ArrayList<>(poolBeans.size());
|
||||
final List<Labels> committedLabelSets = new ArrayList<>(poolBeans.size());
|
||||
final List<Labels> maxLabelSets = new ArrayList<>(poolBeans.size());
|
||||
for (final MemoryPoolMXBean pool : poolBeans) {
|
||||
usedLabelSets.add(new String[] {TYPE_LABEL_KEY, USED, POOL_LABEL_KEY, pool.getName()});
|
||||
committedLabelSets.add(
|
||||
new String[] {TYPE_LABEL_KEY, COMMITTED, POOL_LABEL_KEY, pool.getName()});
|
||||
maxLabelSets.add(new String[] {TYPE_LABEL_KEY, MAX, POOL_LABEL_KEY, pool.getName()});
|
||||
usedLabelSets.add(Labels.of(TYPE_LABEL_KEY, USED, POOL_LABEL_KEY, pool.getName()));
|
||||
committedLabelSets.add(Labels.of(TYPE_LABEL_KEY, COMMITTED, POOL_LABEL_KEY, pool.getName()));
|
||||
maxLabelSets.add(Labels.of(TYPE_LABEL_KEY, MAX, POOL_LABEL_KEY, pool.getName()));
|
||||
}
|
||||
poolMetric.setCallback(
|
||||
new Callback<LongResult>() {
|
||||
|
|
|
@ -96,11 +96,10 @@ abstract class AbstractAsynchronousInstrument<T extends AsynchronousInstrument.R
|
|||
}
|
||||
|
||||
@Override
|
||||
public void observe(long sum, String... keyValueLabelPairs) {
|
||||
public void observe(long sum, Labels labels) {
|
||||
Aggregator aggregator = activeBatcher.getAggregator();
|
||||
aggregator.recordLong(sum);
|
||||
activeBatcher.batch(
|
||||
Labels.of(keyValueLabelPairs), aggregator, /* mappedAggregator= */ false);
|
||||
activeBatcher.batch(labels, aggregator, /* mappedAggregator= */ false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -129,11 +128,10 @@ abstract class AbstractAsynchronousInstrument<T extends AsynchronousInstrument.R
|
|||
}
|
||||
|
||||
@Override
|
||||
public void observe(double sum, String... keyValueLabelPairs) {
|
||||
public void observe(double sum, Labels labels) {
|
||||
Aggregator aggregator = activeBatcher.getAggregator();
|
||||
aggregator.recordDouble(sum);
|
||||
activeBatcher.batch(
|
||||
Labels.of(keyValueLabelPairs), aggregator, /* mappedAggregator= */ false);
|
||||
activeBatcher.batch(labels, aggregator, /* mappedAggregator= */ false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -106,7 +106,7 @@ public class DoubleSumObserverSdkTest {
|
|||
new Callback<DoubleResult>() {
|
||||
@Override
|
||||
public void update(DoubleResult result) {
|
||||
result.observe(12.1d, "k", "v");
|
||||
result.observe(12.1d, Labels.of("k", "v"));
|
||||
}
|
||||
});
|
||||
testClock.advanceNanos(SECOND_NANOS);
|
||||
|
|
|
@ -106,7 +106,7 @@ public class DoubleUpDownSumObserverSdkTest {
|
|||
new Callback<DoubleResult>() {
|
||||
@Override
|
||||
public void update(DoubleResult result) {
|
||||
result.observe(12.1d, "k", "v");
|
||||
result.observe(12.1d, Labels.of("k", "v"));
|
||||
}
|
||||
});
|
||||
testClock.advanceNanos(SECOND_NANOS);
|
||||
|
|
|
@ -109,7 +109,7 @@ public class DoubleValueObserverSdkTest {
|
|||
new Callback<DoubleResult>() {
|
||||
@Override
|
||||
public void update(DoubleResult result) {
|
||||
result.observe(12.1d, "k", "v");
|
||||
result.observe(12.1d, Labels.of("k", "v"));
|
||||
}
|
||||
});
|
||||
testClock.advanceNanos(SECOND_NANOS);
|
||||
|
|
|
@ -105,7 +105,7 @@ public class LongSumObserverSdkTest {
|
|||
new Callback<LongResult>() {
|
||||
@Override
|
||||
public void update(LongResult result) {
|
||||
result.observe(12, "k", "v");
|
||||
result.observe(12, Labels.of("k", "v"));
|
||||
}
|
||||
});
|
||||
testClock.advanceNanos(SECOND_NANOS);
|
||||
|
|
|
@ -106,7 +106,7 @@ public class LongUpDownSumObserverSdkTest {
|
|||
new Callback<LongResult>() {
|
||||
@Override
|
||||
public void update(LongResult result) {
|
||||
result.observe(12, "k", "v");
|
||||
result.observe(12, Labels.of("k", "v"));
|
||||
}
|
||||
});
|
||||
testClock.advanceNanos(SECOND_NANOS);
|
||||
|
|
|
@ -109,7 +109,7 @@ public class LongValueObserverSdkTest {
|
|||
new Callback<LongResult>() {
|
||||
@Override
|
||||
public void update(LongResult result) {
|
||||
result.observe(12, "k", "v");
|
||||
result.observe(12, Labels.of("k", "v"));
|
||||
}
|
||||
});
|
||||
testClock.advanceNanos(SECOND_NANOS);
|
||||
|
|
Loading…
Reference in New Issue