in prometheus-to-sd/translator/translator.go [79:107]
func (t *TimeSeriesBuilder) Build(ctx context.Context) ([]*v3.TimeSeries, time.Time, error) {
var ts []*v3.TimeSeries
if t.batch == nil {
return ts, time.Now(), nil
}
defer func() { t.batch = nil }()
metricFamilies, err := t.batch.metrics.Build(ctx, t.config, t.cache)
if err != nil {
return ts, time.Now(), err
}
// Get start time before whitelisting, because process start time
// metric is likely not to be whitelisted.
startTime := t.getStartTime(metricFamilies)
metricFamilies = filterWhitelistedMetrics(metricFamilies, t.config.SourceConfig.Whitelisted)
metricFamilies = filterWhitelistedLabels(metricFamilies, t.config.SourceConfig.WhitelistedLabelsMap)
for name, metric := range metricFamilies {
if t.cache.IsMetricBroken(name) {
continue
}
f, err := translateFamily(t.config, metric, t.batch.timestamp, startTime, t.cache)
if err != nil {
glog.Warningf("Error while processing metric %s: %v", name, err)
} else {
ts = append(ts, f...)
}
}
return ts, t.batch.timestamp, nil
}