func ValidateMetric()

in util/awsservice/cloudwatchmetrics.go [30:57]


func ValidateMetric(metricName, namespace string, dimensionsFilter []types.DimensionFilter) error {
	listMetricsInput := cloudwatch.ListMetricsInput{
		MetricName:     aws.String(metricName),
		Namespace:      aws.String(namespace),
		RecentlyActive: "PT3H",
		Dimensions:     dimensionsFilter,
	}
	data, err := CwmClient.ListMetrics(ctx, &listMetricsInput)
	if err != nil {
		return errors.New(fmt.Sprintf("Error getting metric data %v", err))
	}

	// Only validate if certain metrics are published by CloudWatchAgent in corresponding namespace
	// Since the metric value can be unpredictive.
	if len(data.Metrics) == 0 {
		dims := make([]metric, len(dimensionsFilter))
		for i, filter := range dimensionsFilter {
			dims[i] = metric{
				name:  *filter.Name,
				value: *filter.Value,
			}
		}
		return errors.New(fmt.Sprintf("No metrics found for dimension %v metric name %v namespace %v",
			dims, metricName, namespace))
	}

	return nil
}