in exporter/collector/metrics.go [1579:1617]
func (m *metricMapper) metricDescriptor(
pm pmetric.Metric,
extraLabels labels,
) []*metricpb.MetricDescriptor {
if pm.Type() == pmetric.MetricTypeSummary {
return m.summaryMetricDescriptors(pm, extraLabels)
}
kind, typ := m.mapMetricPointKind(pm)
if kind == metricpb.MetricDescriptor_METRIC_KIND_UNSPECIFIED {
m.obs.log.Debug("Failed to get metric kind (i.e. aggregation) for metric descriptor. Dropping the metric descriptor.", zap.Any("metric", pm))
return nil
}
if typ == metricpb.MetricDescriptor_VALUE_TYPE_UNSPECIFIED {
m.obs.log.Debug("Failed to get metric type (int / double) for metric descriptor. Dropping the metric descriptor.", zap.Any("metric", pm))
return nil
}
metricType, err := m.metricNameToType(pm.Name(), pm)
if err != nil {
m.obs.log.Debug("Failed to get metric type (i.e. name) for metric descriptor. Dropping the metric descriptor.", zap.Error(err), zap.Any("metric", pm))
return nil
}
labels := m.labelDescriptors(pm, extraLabels)
// Return nil for unsupported types.
if kind == metricpb.MetricDescriptor_METRIC_KIND_UNSPECIFIED {
return nil
}
return []*metricpb.MetricDescriptor{
{
Name: pm.Name(),
DisplayName: m.metricTypeToDisplayName(metricType),
Type: metricType,
MetricKind: kind,
ValueType: typ,
Unit: pm.Unit(),
Description: pm.Description(),
Labels: labels,
},
}
}