func extractAllLabels()

in prometheus-to-sd/translator/translator.go [454:476]


func extractAllLabels(family *dto.MetricFamily, originalDescriptor *metric.MetricDescriptor) []*label.LabelDescriptor {
	var labels []*label.LabelDescriptor
	labelSet := make(map[string]bool)
	for _, metric := range family.GetMetric() {
		for _, l := range metric.GetLabel() {
			_, ok := labelSet[l.GetName()]
			if !ok {
				labels = append(labels, &label.LabelDescriptor{Key: l.GetName()})
				labelSet[l.GetName()] = true
			}
		}
	}
	if originalDescriptor != nil {
		for _, l := range originalDescriptor.Labels {
			_, ok := labelSet[l.Key]
			if !ok {
				labels = append(labels, l)
				labelSet[l.Key] = true
			}
		}
	}
	return labels
}