static MetricDescriptor mapMetricDescriptor()

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;
  }