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
}