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
}