in otelcollector/prometheusreceiver/internal/metrics_adjuster.go [322:372]
func (a *initialPointAdjuster) adjustMetricHistogram(tsm *timeseriesMap, current pmetric.Metric) {
histogram := current.Histogram()
if histogram.AggregationTemporality() != pmetric.AggregationTemporalityCumulative {
// Only dealing with CumulativeDistributions.
return
}
currentPoints := histogram.DataPoints()
for i := 0; i < currentPoints.Len(); i++ {
currentDist := currentPoints.At(i)
// start timestamp was set from _created
if a.useCreatedMetric &&
!currentDist.Flags().NoRecordedValue() &&
currentDist.StartTimestamp() < currentDist.Timestamp() {
continue
}
tsi, found := tsm.get(current, currentDist.Attributes())
if !found {
// initialize everything.
tsi.histogram.startTime = currentDist.StartTimestamp()
tsi.histogram.previousCount = currentDist.Count()
tsi.histogram.previousSum = currentDist.Sum()
continue
}
if currentDist.Flags().NoRecordedValue() {
// TODO: Investigate why this does not reset.
currentDist.SetStartTimestamp(tsi.histogram.startTime)
continue
}
if currentDist.Count() < tsi.histogram.previousCount || currentDist.Sum() < tsi.histogram.previousSum {
// reset re-initialize everything.
tsi.histogram.startTime = currentDist.StartTimestamp()
if a.usePointTimeForReset {
tsi.histogram.startTime = currentDist.Timestamp()
currentDist.SetStartTimestamp(tsi.histogram.startTime)
}
tsi.histogram.previousCount = currentDist.Count()
tsi.histogram.previousSum = currentDist.Sum()
continue
}
// Update only previous values.
tsi.histogram.previousCount = currentDist.Count()
tsi.histogram.previousSum = currentDist.Sum()
currentDist.SetStartTimestamp(tsi.histogram.startTime)
}
}