in otelcollector/prometheusreceiver/internal/metricfamily.go [464:531]
func (mf *metricFamily) appendMetric(metrics pmetric.MetricSlice, trimSuffixes bool) {
metric := pmetric.NewMetric()
// Trims type and unit suffixes from metric name
name := mf.name
if trimSuffixes {
name = prometheus.TrimPromSuffixes(name, mf.mtype, mf.metadata.Unit)
}
metric.SetName(name)
metric.SetDescription(mf.metadata.Help)
metric.SetUnit(prometheus.UnitWordToUCUM(mf.metadata.Unit))
metric.Metadata().PutStr(prometheus.MetricMetadataTypeKey, string(mf.metadata.Type))
var pointCount int
switch mf.mtype {
case pmetric.MetricTypeHistogram:
histogram := metric.SetEmptyHistogram()
histogram.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative)
hdpL := histogram.DataPoints()
for _, mg := range mf.groupOrders {
mg.toDistributionPoint(hdpL)
}
pointCount = hdpL.Len()
case pmetric.MetricTypeSummary:
summary := metric.SetEmptySummary()
sdpL := summary.DataPoints()
for _, mg := range mf.groupOrders {
mg.toSummaryPoint(sdpL)
}
pointCount = sdpL.Len()
case pmetric.MetricTypeSum:
sum := metric.SetEmptySum()
sum.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative)
sum.SetIsMonotonic(mf.isMonotonic)
sdpL := sum.DataPoints()
for _, mg := range mf.groupOrders {
mg.toNumberDataPoint(sdpL)
}
pointCount = sdpL.Len()
case pmetric.MetricTypeExponentialHistogram:
histogram := metric.SetEmptyExponentialHistogram()
histogram.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative)
hdpL := histogram.DataPoints()
for _, mg := range mf.groupOrders {
mg.toExponentialHistogramDataPoints(hdpL)
}
pointCount = hdpL.Len()
case pmetric.MetricTypeEmpty, pmetric.MetricTypeGauge:
fallthrough
default: // Everything else should be set to a Gauge.
gauge := metric.SetEmptyGauge()
gdpL := gauge.DataPoints()
for _, mg := range mf.groupOrders {
mg.toNumberDataPoint(gdpL)
}
pointCount = gdpL.Len()
}
if pointCount == 0 {
return
}
metric.MoveTo(metrics.AppendEmpty())
}