in prometheus-to-sd/translator/stackdriver.go [83:110]
func getMetricDescriptors(ctx context.Context, client *monitoring.MetricClient, config *config.CommonConfig) (map[string]*metric.MetricDescriptor, error) {
proj := createProjectName(config.GceConfig)
filter := fmt.Sprintf("metric.type = starts_with(\"%s/%s\")", config.SourceConfig.MetricsPrefix, config.SourceConfig.Component)
metrics := make(map[string]*metric.MetricDescriptor)
req := &monitoringpb.ListMetricDescriptorsRequest{
Name: proj,
Filter: filter,
}
it := client.ListMetricDescriptors(ctx, req)
for {
metricDescriptor, err := it.Next()
if err == iterator.Done {
break
}
if err != nil {
glog.Warningf("Error while fetching metric descriptors for %v: %v", config.SourceConfig.Component, err)
return metrics, nil
}
if _, metricName, err := parseMetricType(config, metricDescriptor.Type); err == nil {
metrics[metricName] = metricDescriptor
} else {
glog.Warningf("Unable to parse %v: %v", metricDescriptor.Type, err)
}
}
return metrics, nil
}