in collector/receiver/prometheusreceiver/internal/starttimemetricadjuster.go [123:152]
func (stma *startTimeMetricAdjuster) getStartTime(metrics pmetric.Metrics) (float64, error) {
for i := 0; i < metrics.ResourceMetrics().Len(); i++ {
rm := metrics.ResourceMetrics().At(i)
for j := 0; j < rm.ScopeMetrics().Len(); j++ {
ilm := rm.ScopeMetrics().At(j)
for k := 0; k < ilm.Metrics().Len(); k++ {
metric := ilm.Metrics().At(k)
if stma.matchStartTimeMetric(metric.Name()) {
switch metric.Type() {
case pmetric.MetricTypeGauge:
if metric.Gauge().DataPoints().Len() == 0 {
return 0.0, errNoDataPointsStartTimeMetric
}
return metric.Gauge().DataPoints().At(0).DoubleValue(), nil
case pmetric.MetricTypeSum:
if metric.Sum().DataPoints().Len() == 0 {
return 0.0, errNoDataPointsStartTimeMetric
}
return metric.Sum().DataPoints().At(0).DoubleValue(), nil
default:
return 0, errUnsupportedTypeStartTimeMetric
}
}
}
}
}
return 0.0, errNoStartTimeMetrics
}