in exporter/collector/metrics.go [1634:1670]
func (me *metricMapper) mapMetricPointKind(m pmetric.Metric) (metricpb.MetricDescriptor_MetricKind, metricpb.MetricDescriptor_ValueType) {
var kind metricpb.MetricDescriptor_MetricKind
var typ metricpb.MetricDescriptor_ValueType
switch m.Type() {
case pmetric.MetricTypeGauge:
kind = metricpb.MetricDescriptor_GAUGE
if m.Gauge().DataPoints().Len() > 0 {
_, supportedType := me.convertToBoolIfMetricKindSupported(m.Gauge().DataPoints().At(0), kind, m.Unit())
if supportedType != metricpb.MetricDescriptor_VALUE_TYPE_UNSPECIFIED {
typ = supportedType
} else {
typ = metricPointValueType(m.Gauge().DataPoints().At(0).ValueType())
}
}
case pmetric.MetricTypeSum:
if !m.Sum().IsMonotonic() {
kind = metricpb.MetricDescriptor_GAUGE
} else {
kind = metricpb.MetricDescriptor_CUMULATIVE
}
if m.Sum().DataPoints().Len() > 0 {
typ = metricPointValueType(m.Sum().DataPoints().At(0).ValueType())
}
case pmetric.MetricTypeSummary:
kind = metricpb.MetricDescriptor_GAUGE
case pmetric.MetricTypeHistogram:
typ = metricpb.MetricDescriptor_DISTRIBUTION
kind = metricpb.MetricDescriptor_CUMULATIVE
case pmetric.MetricTypeExponentialHistogram:
typ = metricpb.MetricDescriptor_DISTRIBUTION
kind = metricpb.MetricDescriptor_CUMULATIVE
default:
kind = metricpb.MetricDescriptor_METRIC_KIND_UNSPECIFIED
typ = metricpb.MetricDescriptor_VALUE_TYPE_UNSPECIFIED
}
return kind, typ
}