in plugins/runtimemetrics/registers.go [194:223]
func (m *meterInfo) updateMetricValue(sample original_metrics.Sample) {
if !m.isHistogram {
if v, ok := m.readingFloat64(sample); ok {
m.gaugeValue = v
}
return
}
m.initHistogramIfNeeds(sample)
if m.histogramMetric == nil || m.latestHistogramValue == nil {
return
}
histogram, ok := m.readingHistogram(sample)
if !ok {
return
}
for i, val := range histogram.Counts {
if i < m.histogramStartInx {
continue
}
if i >= len(m.latestHistogramValue) {
break
}
newestValue := int64(val)
if add := newestValue - m.latestHistogramValue[i]; add > 0 {
m.histogramMetric.ObserveWithCount(histogram.Buckets[i]*float64(m.histogramMultiple), add)
m.latestHistogramValue[i] = newestValue
}
}
}