use of io.opencensus.metrics.export.TimeSeries in project instrumentation-java by census-instrumentation.
the class SignalFxSessionAdaptor method adapt.
/**
* Converts the given Metric into datapoints that can be sent to SignalFx.
*
* @param metric The {@link Metric} containing the timeseries of each combination of label values.
* @return A list of datapoints for the corresponding metric timeseries of this metric.
*/
static List<DataPoint> adapt(Metric metric) {
MetricDescriptor metricDescriptor = metric.getMetricDescriptor();
MetricType metricType = getType(metricDescriptor.getType());
if (metricType == null) {
return Collections.emptyList();
}
DataPoint.Builder shared = DataPoint.newBuilder();
shared.setMetric(metricDescriptor.getName());
shared.setMetricType(metricType);
ArrayList<DataPoint> datapoints = Lists.newArrayList();
for (TimeSeries timeSeries : metric.getTimeSeriesList()) {
DataPoint.Builder builder = shared.clone();
builder.addAllDimensions(createDimensions(metricDescriptor.getLabelKeys(), timeSeries.getLabelValues()));
List<Point> points = timeSeries.getPoints();
datapoints.ensureCapacity(datapoints.size() + points.size());
for (Point point : points) {
datapoints.add(builder.setValue(createDatum(point.getValue())).build());
}
}
return datapoints;
}
use of io.opencensus.metrics.export.TimeSeries in project instrumentation-java by census-instrumentation.
the class DerivedDoubleCumulativeImplTest method withConstantLabels.
@Test
public void withConstantLabels() {
List<LabelKey> labelKeys = Arrays.asList(LabelKey.create("key1", "desc"), LabelKey.create("key2", "desc"));
List<LabelValue> labelValues = Arrays.asList(LabelValue.create("value1"), LabelValue.create("value2"));
LabelKey constantKey = LabelKey.create("constant_key", "desc");
LabelValue constantValue = LabelValue.create("constant_value");
Map<LabelKey, LabelValue> constantLabels = Collections.<LabelKey, LabelValue>singletonMap(constantKey, constantValue);
DerivedDoubleCumulativeImpl derivedDoubleCumulative2 = new DerivedDoubleCumulativeImpl(METRIC_NAME, METRIC_DESCRIPTION, METRIC_UNIT, labelKeys, constantLabels, START_TIME);
derivedDoubleCumulative2.createTimeSeries(labelValues, new QueueManager(), queueManagerFunction);
testClock.advanceTime(ONE_MINUTE);
Timestamp endTime = testClock.now();
List<LabelKey> allKeys = new ArrayList<>(labelKeys);
allKeys.add(constantKey);
MetricDescriptor expectedDescriptor = MetricDescriptor.create(METRIC_NAME, METRIC_DESCRIPTION, METRIC_UNIT, Type.CUMULATIVE_DOUBLE, allKeys);
List<LabelValue> allValues = new ArrayList<>(labelValues);
allValues.add(constantValue);
TimeSeries expectedTimeSeries = TimeSeries.createWithOnePoint(allValues, Point.create(Value.doubleValue(2.5), endTime), START_TIME);
Metric metric = derivedDoubleCumulative2.getMetric(testClock);
assertThat(metric).isNotNull();
assertThat(metric.getMetricDescriptor()).isEqualTo(expectedDescriptor);
assertThat(metric.getTimeSeriesList()).containsExactly(expectedTimeSeries);
derivedDoubleCumulative2.removeTimeSeries(labelValues);
Metric metric2 = derivedDoubleCumulative2.getMetric(testClock);
assertThat(metric2).isNull();
}
use of io.opencensus.metrics.export.TimeSeries in project instrumentation-java by census-instrumentation.
the class DerivedDoubleGaugeImplTest method multipleMetrics_GetMetric.
@Test
public void multipleMetrics_GetMetric() {
derivedDoubleGauge.createTimeSeries(LABEL_VALUES, null, doubleFunction);
derivedDoubleGauge.createTimeSeries(LABEL_VALUES_1, new QueueManager(), queueManagerFunction);
List<TimeSeries> expectedTimeSeriesList = new ArrayList<TimeSeries>();
expectedTimeSeriesList.add(TimeSeries.createWithOnePoint(LABEL_VALUES, Point.create(Value.doubleValue(5.5), TEST_TIME), null));
expectedTimeSeriesList.add(TimeSeries.createWithOnePoint(LABEL_VALUES_1, Point.create(Value.doubleValue(2.5), TEST_TIME), null));
Metric metric = derivedDoubleGauge.getMetric(testClock);
assertThat(metric).isNotNull();
assertThat(metric.getMetricDescriptor()).isEqualTo(METRIC_DESCRIPTOR);
assertThat(metric.getTimeSeriesList().size()).isEqualTo(2);
assertThat(metric.getTimeSeriesList()).containsExactlyElementsIn(expectedTimeSeriesList);
assertThat(metric.getTimeSeriesList().get(0).getLabelValues().size()).isEqualTo(1);
assertThat(metric.getTimeSeriesList().get(0).getLabelValues().get(0)).isEqualTo(LabelValue.create("value"));
assertThat(metric.getTimeSeriesList().get(1).getLabelValues().size()).isEqualTo(1);
assertThat(metric.getTimeSeriesList().get(1).getLabelValues().get(0)).isEqualTo(LabelValue.create("value1"));
}
use of io.opencensus.metrics.export.TimeSeries in project instrumentation-java by census-instrumentation.
the class DerivedDoubleGaugeImplTest method withConstantLabels.
@Test
public void withConstantLabels() {
List<LabelKey> labelKeys = Arrays.asList(LabelKey.create("key1", "desc"), LabelKey.create("key2", "desc"));
List<LabelValue> labelValues = Arrays.asList(LabelValue.create("value1"), LabelValue.create("value2"));
LabelKey constantKey = LabelKey.create("constant_key", "desc");
LabelValue constantValue = LabelValue.create("constant_value");
Map<LabelKey, LabelValue> constantLabels = Collections.<LabelKey, LabelValue>singletonMap(constantKey, constantValue);
DerivedDoubleGaugeImpl derivedDoubleGauge2 = new DerivedDoubleGaugeImpl(METRIC_NAME, METRIC_DESCRIPTION, METRIC_UNIT, labelKeys, constantLabels);
derivedDoubleGauge2.createTimeSeries(labelValues, new QueueManager(), queueManagerFunction);
List<LabelKey> allKeys = new ArrayList<>(labelKeys);
allKeys.add(constantKey);
MetricDescriptor expectedDescriptor = MetricDescriptor.create(METRIC_NAME, METRIC_DESCRIPTION, METRIC_UNIT, Type.GAUGE_DOUBLE, allKeys);
List<LabelValue> allValues = new ArrayList<>(labelValues);
allValues.add(constantValue);
TimeSeries expectedTimeSeries = TimeSeries.createWithOnePoint(allValues, Point.create(Value.doubleValue(2.5), TEST_TIME), null);
Metric metric = derivedDoubleGauge2.getMetric(testClock);
assertThat(metric).isNotNull();
assertThat(metric.getMetricDescriptor()).isEqualTo(expectedDescriptor);
assertThat(metric.getTimeSeriesList()).containsExactly(expectedTimeSeries);
derivedDoubleGauge2.removeTimeSeries(labelValues);
Metric metric2 = derivedDoubleGauge2.getMetric(testClock);
assertThat(metric2).isNull();
}
use of io.opencensus.metrics.export.TimeSeries in project instrumentation-java by census-instrumentation.
the class DropWizardMetrics method collectGauge.
/**
* Returns a {@code Metric} collected from {@link Gauge}.
*
* @param dropwizardName the metric name.
* @param gauge the gauge object to collect.
* @return a {@code Metric}.
*/
@SuppressWarnings("rawtypes")
@Nullable
private Metric collectGauge(String dropwizardName, Gauge gauge) {
String metricName = DropWizardUtils.generateFullMetricName(dropwizardName, "gauge");
String metricDescription = DropWizardUtils.generateFullMetricDescription(dropwizardName, gauge);
// Figure out which gauge instance and call the right method to get value
Type type;
Value value;
Object obj = gauge.getValue();
if (obj instanceof Number) {
type = Type.GAUGE_DOUBLE;
value = Value.doubleValue(((Number) obj).doubleValue());
} else if (obj instanceof Boolean) {
type = Type.GAUGE_INT64;
value = Value.longValue(((Boolean) obj) ? 1 : 0);
} else {
// Ignoring Gauge (gauge.getKey()) with unhandled type.
return null;
}
MetricDescriptor metricDescriptor = MetricDescriptor.create(metricName, metricDescription, DEFAULT_UNIT, type, Collections.<LabelKey>emptyList());
TimeSeries timeSeries = TimeSeries.createWithOnePoint(Collections.<LabelValue>emptyList(), Point.create(value, clock.now()), null);
return Metric.createWithOneTimeSeries(metricDescriptor, timeSeries);
}
Aggregations