func()

in sample-apps/prometheus/metric_collector.go [111:148]


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

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

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

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

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

		// handle quantiles
		for _, quantile := range metric.GetSummary().GetQuantile() {
			labels := convertLabelPairsToLabels(metric.GetLabel())
			labels["__name__"] = getName(summary)
			labels["quantile"] = fmt.Sprintf("%f", quantile.GetQuantile())
			values := convertMetricValues(mc.timestamp, float64(quantile.GetValue()))
			*metricsResponse = append(*metricsResponse, MetricResponse{
				Labels: labels,
				Value:  values,
			})
		}
	}
}