func GetMetricName()

in exporter/collector/googlemanagedprometheus/naming.go [27:57]


func GetMetricName(baseName, compliantName string, metric pmetric.Metric) (string, error) {
	// Second, ad the GMP-specific suffix
	switch metric.Type() {
	case pmetric.MetricTypeSum:
		if !metric.Sum().IsMonotonic() {
			// Non-monotonic sums are converted to GCM gauges
			return compliantName + "/gauge", nil
		}
		return getUnknownMetricName(metric, metric.Sum().DataPoints(), "/counter", "counter", compliantName), nil
	case pmetric.MetricTypeGauge:
		return getUnknownMetricName(metric, metric.Gauge().DataPoints(), "/gauge", "", compliantName), nil
	case pmetric.MetricTypeSummary:
		// summaries are sent as the following series:
		// * Sum: prometheus.googleapis.com/<baseName>_sum/summary:counter
		// * Count: prometheus.googleapis.com/<baseName>_count/summary
		// * Quantiles: prometheus.googleapis.com/<baseName>/summary
		if strings.HasSuffix(baseName, "_sum") {
			return compliantName + "_sum/summary:counter", nil
		}
		if strings.HasSuffix(baseName, "_count") {
			return compliantName + "_count/summary", nil
		}
		return compliantName + "/summary", nil
	case pmetric.MetricTypeHistogram:
		fallthrough
	case pmetric.MetricTypeExponentialHistogram:
		return compliantName + "/histogram", nil
	default:
		return "", fmt.Errorf("unsupported metric datatype: %v", metric.Type())
	}
}