in exporter/collector/metrics.go [814:863]
func (m *metricMapper) metricToTimeSeries(
resource *monitoredrespb.MonitoredResource,
extraLabels labels,
metric pmetric.Metric,
projectID string,
) []*monitoringpb.TimeSeries {
timeSeries := []*monitoringpb.TimeSeries{}
switch metric.Type() {
case pmetric.MetricTypeSum:
sum := metric.Sum()
points := sum.DataPoints()
for i := 0; i < points.Len(); i++ {
ts := m.sumPointToTimeSeries(resource, extraLabels, metric, sum, points.At(i))
timeSeries = append(timeSeries, ts...)
}
case pmetric.MetricTypeGauge:
gauge := metric.Gauge()
points := gauge.DataPoints()
for i := 0; i < points.Len(); i++ {
ts := m.gaugePointToTimeSeries(resource, extraLabels, metric, gauge, points.At(i))
timeSeries = append(timeSeries, ts...)
}
case pmetric.MetricTypeSummary:
summary := metric.Summary()
points := summary.DataPoints()
for i := 0; i < points.Len(); i++ {
ts := m.summaryPointToTimeSeries(resource, extraLabels, metric, summary, points.At(i))
timeSeries = append(timeSeries, ts...)
}
case pmetric.MetricTypeHistogram:
hist := metric.Histogram()
points := hist.DataPoints()
for i := 0; i < points.Len(); i++ {
ts := m.histogramToTimeSeries(resource, extraLabels, metric, hist, points.At(i), projectID)
timeSeries = append(timeSeries, ts...)
}
case pmetric.MetricTypeExponentialHistogram:
eh := metric.ExponentialHistogram()
points := eh.DataPoints()
for i := 0; i < points.Len(); i++ {
ts := m.exponentialHistogramToTimeSeries(resource, extraLabels, metric, eh, points.At(i), projectID)
timeSeries = append(timeSeries, ts...)
}
default:
m.obs.log.Error("Unsupported metric data type", zap.Any("data_type", metric.Type()))
}
return timeSeries
}