in exporters/metrics/src/main/java/com/google/cloud/opentelemetry/metric/MetricTranslator.java [66:107]
static MetricDescriptor mapMetricDescriptor(
String prefix,
MetricData metric,
io.opentelemetry.sdk.metrics.data.PointData metricPoint,
Attributes extraLabels) {
MetricDescriptor.Builder builder =
MetricDescriptor.newBuilder()
.setDisplayName(metric.getName())
.setDescription(metric.getDescription())
.setType(mapMetricType(metric.getName(), prefix))
.setUnit(metric.getUnit());
// add extra labels if any
extraLabels.forEach((key, value) -> builder.addLabels(mapAttribute(key, prefix)));
metricPoint
.getAttributes()
.forEach((key, value) -> builder.addLabels(mapAttribute(key, prefix)));
MetricDataType metricType = metric.getType();
switch (metricType) {
case LONG_GAUGE:
builder.setMetricKind(MetricDescriptor.MetricKind.GAUGE);
builder.setValueType(MetricDescriptor.ValueType.INT64);
return builder.build();
case DOUBLE_GAUGE:
builder.setMetricKind(MetricDescriptor.MetricKind.GAUGE);
builder.setValueType(MetricDescriptor.ValueType.DOUBLE);
return builder.build();
case LONG_SUM:
builder.setValueType(MetricDescriptor.ValueType.INT64);
return fillSumType(metric.getLongSumData(), builder);
case DOUBLE_SUM:
builder.setValueType(MetricDescriptor.ValueType.DOUBLE);
return fillSumType(metric.getDoubleSumData(), builder);
case HISTOGRAM:
return fillHistogramType(metric.getHistogramData(), builder);
default:
logger.error(
"Metric type {} not supported. Only gauge and cumulative types are supported.",
metricType);
}
return null;
}