func filterWhitelistedLabels()

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
}