func()

in sample-apps/prometheus/metric_collector.go [71:109]


func (mc metricCollector) handleHistograms(metricsResponse *[]MetricResponse) {
	for _, histogram := range mc.histograms {
		metric := &dto.Metric{}
		histogram.Write(metric)

		// handle count
		countLabels := convertLabelPairsToLabels(metric.GetLabel())
		countLabels["__name__"] = getName(histogram) + "_count"
		countValues := convertMetricValues(mc.timestamp, float64(metric.GetHistogram().GetSampleCount()))

		*metricsResponse = append(*metricsResponse, MetricResponse{
			Labels: countLabels,
			Value:  countValues,
		})

		// handle sum
		sumLabels := convertLabelPairsToLabels(metric.GetLabel())
		sumLabels["__name__"] = getName(histogram) + "_sum"
		sumValues := convertMetricValues(mc.timestamp, metric.GetHistogram().GetSampleSum())

		*metricsResponse = append(*metricsResponse, MetricResponse{
			Labels: sumLabels,
			Value:  sumValues,
		})

		// handle buckets
		for _, bucket := range metric.GetHistogram().GetBucket() {
			labels := convertLabelPairsToLabels(metric.GetLabel())
			labels["__name__"] = getName(histogram) + "_bucket"
			labels["le"] = fmt.Sprintf("%f", bucket.GetUpperBound())
			values := convertMetricValues(mc.timestamp, float64(bucket.GetCumulativeCount()))

			*metricsResponse = append(*metricsResponse, MetricResponse{
				Labels: labels,
				Value:  values,
			})
		}
	}
}