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,
})
}
}
}