in prometheus-to-sd/translator/translator.go [228:257]
func filterWhitelistedLabels(allMetrics map[string]*dto.MetricFamily, whitelistedLabelsMap map[string]map[string]bool) map[string]*dto.MetricFamily {
if len(whitelistedLabelsMap) == 0 {
return allMetrics
}
glog.V(4).Infof("Exporting only whitelisted label values: %v", whitelistedLabelsMap)
res := map[string]*dto.MetricFamily{}
for metricName, metricFamily := range allMetrics {
var filteredMetrics []*dto.Metric
for _, metric := range metricFamily.Metric {
labels := metric.GetLabel()
for _, label := range labels {
if whitelistedLabelValues, found := whitelistedLabelsMap[*label.Name]; found && whitelistedLabelValues[*label.Value] {
filteredMetrics = append(filteredMetrics, metric)
}
}
}
if len(filteredMetrics) > 0 {
res[metricName] = &dto.MetricFamily{
Name: metricFamily.Name,
Help: metricFamily.Help,
Type: metricFamily.Type,
Metric: filteredMetrics,
}
} else {
glog.V(3).Infof("Whitelisted label values for metric %s not found in Prometheus endpoint.", metricFamily)
}
}
return res
}