in collector/receiver/prometheusreceiver/internal/starttimemetricadjuster.go [66:121]
func (stma *startTimeMetricAdjuster) AdjustMetrics(metrics pmetric.Metrics) error {
startTime, err := stma.getStartTime(metrics)
if err != nil {
if stma.fallbackStartTime == nil {
return err
}
stma.logger.Warn("Couldn't get start time for metrics. Using fallback start time.", zap.Error(err))
startTime = float64(stma.fallbackStartTime.Unix())
}
startTimeTs := timestampFromFloat64(startTime)
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)
switch metric.Type() {
case pmetric.MetricTypeGauge:
continue
case pmetric.MetricTypeSum:
dataPoints := metric.Sum().DataPoints()
for l := 0; l < dataPoints.Len(); l++ {
dp := dataPoints.At(l)
dp.SetStartTimestamp(startTimeTs)
}
case pmetric.MetricTypeSummary:
dataPoints := metric.Summary().DataPoints()
for l := 0; l < dataPoints.Len(); l++ {
dp := dataPoints.At(l)
dp.SetStartTimestamp(startTimeTs)
}
case pmetric.MetricTypeHistogram:
dataPoints := metric.Histogram().DataPoints()
for l := 0; l < dataPoints.Len(); l++ {
dp := dataPoints.At(l)
dp.SetStartTimestamp(startTimeTs)
}
default:
stma.logger.Warn("Unknown metric type", zap.String("type", metric.Type().String()))
}
}
}
}
// Handle reset points for cumulative metrics.
if stma.resetPointAdjuster != nil {
return stma.resetPointAdjuster.AdjustMetrics(metrics)
}
return nil
}