in validator/validators/performance/performance_validator.go [187:232]
func (s *PerformanceValidator) GetPerformanceMetrics(startTime, endTime time.Time) ([]types.MetricDataResult, error) {
var (
metricNamespace = s.vConfig.GetMetricNamespace()
validationMetric = s.vConfig.GetMetricValidation()
ec2InstanceId = awsservice.GetInstanceId()
performanceMetricDataQueries = []types.MetricDataQuery{}
)
log.Printf("Start getting performance metrics from CloudWatch")
for _, metric := range validationMetric {
metricDimensions := []types.Dimension{
{
Name: aws.String("InstanceId"),
Value: aws.String(ec2InstanceId),
},
}
for _, dimension := range metric.MetricDimension {
metricDimensions = append(metricDimensions, types.Dimension{
Name: aws.String(dimension.Name),
Value: aws.String(dimension.Value),
})
}
performanceMetricDataQueries = append(performanceMetricDataQueries, s.buildPerformanceMetricQueries(metric.MetricName, metricNamespace, metricDimensions))
}
for _, stat := range validationMetric {
metricDimensions := []types.Dimension{
{
Name: aws.String("InstanceId"),
Value: aws.String(ec2InstanceId),
},
}
for _, dimension := range stat.MetricDimension {
metricDimensions = append(metricDimensions, types.Dimension{
Name: aws.String(dimension.Name),
Value: aws.String(dimension.Value),
})
}
}
metrics, err := awsservice.GetMetricData(performanceMetricDataQueries, startTime, endTime)
if err != nil {
return nil, err
}
return metrics.MetricDataResults, nil
}