func getMetricDescriptors()

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
}