List of usage examples for com.amazonaws.services.cloudwatch.model Dimension setValue
public void setValue(String value)
The value representing the dimension measurement.
From source file:AwsAuto.java
License:Open Source License
public static void main(String[] args) throws Exception { // initialize/determine parameters String instanceType = "m3.medium"; String loadGeneratorAmi = "ami-8ac4e9e0"; String dataCenterAmi = "ami-349fbb5e"; String bidPrice = "0.1"; String loadGeneratorDns = null; // load generator DNS String dashboardUrl = null; // the URL where we check our performance String testId = null;//from www. j av a 2 s. co m // create project tag for instances ArrayList<com.amazonaws.services.ec2.model.Tag> loadGeneratorTags = new ArrayList<>(); com.amazonaws.services.ec2.model.Tag loadGeneratorTag = new com.amazonaws.services.ec2.model.Tag("Project", "2.1"); loadGeneratorTags.add(loadGeneratorTag); // create project tag for auto-scaling com.amazonaws.services.autoscaling.model.Tag asgTag = new com.amazonaws.services.autoscaling.model.Tag(); asgTag.setKey("Project"); asgTag.setValue("2.1"); // create project tag for load balancer ArrayList<com.amazonaws.services.elasticloadbalancing.model.Tag> loadBalancerTags = new ArrayList<>(); com.amazonaws.services.elasticloadbalancing.model.Tag loadBalancerTag = new com.amazonaws.services.elasticloadbalancing.model.Tag(); loadBalancerTag.setKey("Project"); loadBalancerTag.setValue("2.1"); loadBalancerTags.add(loadBalancerTag); /** * ========================================================================= * ================= Create security groups * ========================================================================= * ================= */ String loadGeneratorSecurityName = "LoadGeneratorSGP2"; String allPurposeSecurityName = "AllPurposeSGP2"; SecurityGroup loadGeneratorSecurityGroup = new SecurityGroup(loadGeneratorSecurityName); SecurityGroup allPurposeSecurityGroup = new SecurityGroup(allPurposeSecurityName); /** * ========================================================================= * ================= Grant permission and credentials * ========================================================================= * ================= */ AWSCredentials credentials = null; try { credentials = new ProfileCredentialsProvider("School").getCredentials(); } catch (Exception e) { throw new AmazonClientException("Cannot load the credentials from the credential profiles file. " + "Please make sure that your credentials file is at the correct " + "location (C:\\Users\\Jiabei\\.aws\\credentials), and is in valid format.", e); } // set region AmazonEC2 ec2 = new AmazonEC2Client(credentials); Region usEast1 = Region.getRegion(Regions.US_EAST_1); ec2.setRegion(usEast1); /** * ========================================================================= * ================= Create a load generator and submit password * ========================================================================= * ================= */ Requests requestsLg = new Requests(instanceType, loadGeneratorAmi, bidPrice, loadGeneratorSecurityName, loadGeneratorTags); loadGeneratorDns = requestsLg.submitRequests(); String submissionUrl = "http://" + loadGeneratorDns + "/password?passwd=0WSb4ufhYI7SkxfLWnnIWU0MC1NdcNKT&andrewId=jiabeip"; sendGET(submissionUrl); try { /** * ======================================================================= * =================== Create a load balancer * ======================================================================= * =================== */ String loadBalancerDns = null; String loadBalancerName = "LoadBalancerProj2"; String healthCheckPage = "/heartbeat?lg=" + loadGeneratorDns; AmazonElasticLoadBalancingClient loadBalancerClient = new AmazonElasticLoadBalancingClient(credentials); // configure a request CreateLoadBalancerRequest loadBalancerRequest = new CreateLoadBalancerRequest() .withAvailabilityZones("us-east-1b").withListeners(new Listener("HTTP", 80, 80)) .withLoadBalancerName(loadBalancerName).withSecurityGroups(allPurposeSecurityGroup.getGroupId()) .withTags(loadBalancerTags); CreateLoadBalancerResult loadBalancerResult = loadBalancerClient .createLoadBalancer(loadBalancerRequest); loadBalancerDns = loadBalancerResult.getDNSName(); // configure health check setting HealthCheck loadBalancerHealthCheck = new HealthCheck().withTarget("HTTP:80" + healthCheckPage) .withTimeout(5).withInterval(30).withUnhealthyThreshold(2).withHealthyThreshold(10); ConfigureHealthCheckRequest healthCheckRequest = new ConfigureHealthCheckRequest() .withLoadBalancerName(loadBalancerName).withHealthCheck(loadBalancerHealthCheck); // attach health check setting to load balancer ConfigureHealthCheckResult healthCheckResult = loadBalancerClient .configureHealthCheck(healthCheckRequest); System.out.println("Load balancer created!\nDNS: " + loadBalancerDns); /** * ======================================================================= * =================== Create launch configuration * ======================================================================= * =================== */ String launchConfigName = "LaunchConfigProj2"; String autoScalingGroupName = "AutoScalingGroupProj2"; AmazonAutoScalingClient autoScalingGroupClient = new AmazonAutoScalingClient(credentials); AmazonCloudWatchClient cloudWatchClient = new AmazonCloudWatchClient(credentials); System.out.println("Creating launch configuration..."); // configure the request CreateLaunchConfigurationRequest launchConfigRequest = new CreateLaunchConfigurationRequest() .withImageId(dataCenterAmi).withInstanceType(instanceType) .withLaunchConfigurationName(launchConfigName) .withSecurityGroups(allPurposeSecurityGroup.getGroupId()).withSpotPrice(bidPrice) .withKeyName("primary"); // enable detail monitoring InstanceMonitoring monitor = new InstanceMonitoring(); monitor.setEnabled(true); launchConfigRequest.setInstanceMonitoring(monitor); // attach the configuration to the ASG client autoScalingGroupClient.createLaunchConfiguration(launchConfigRequest); System.out.println("Configuration complete!\nCreating auto-scaling group..."); /** * ======================================================================= * =================== Create auto-scaling group * ======================================================================= * =================== */ // configure ASG request CreateAutoScalingGroupRequest asgRequest = new CreateAutoScalingGroupRequest() .withAutoScalingGroupName(autoScalingGroupName).withAvailabilityZones("us-east-1b") .withLoadBalancerNames(loadBalancerName).withNewInstancesProtectedFromScaleIn(false) .withTags(asgTag).withDefaultCooldown(120).withMinSize(1).withMaxSize(8).withDesiredCapacity(1) // Start // from // one .withHealthCheckGracePeriod(120).withHealthCheckType("ELB") .withLaunchConfigurationName(launchConfigName); // attach group configuration to ASG client autoScalingGroupClient.createAutoScalingGroup(asgRequest); /** * ======================================================================= * =================== Create scaling up policy for ASG * ======================================================================= * =================== */ StepAdjustment upRule1 = new StepAdjustment().withMetricIntervalLowerBound(0.0) .withMetricIntervalUpperBound(25.0).withScalingAdjustment(1); StepAdjustment upRule2 = new StepAdjustment().withMetricIntervalLowerBound(25.0) .withMetricIntervalUpperBound(30.0).withScalingAdjustment(2); StepAdjustment upRule3 = new StepAdjustment().withMetricIntervalLowerBound(30.0) .withMetricIntervalUpperBound(null).withScalingAdjustment(3); String upPolicyName = "Scaling Up"; PutScalingPolicyRequest scalingUpPolicy = new PutScalingPolicyRequest() .withAdjustmentType("ChangeInCapacity").withPolicyType("StepScaling") .withStepAdjustments(upRule1, upRule2, upRule3).withAutoScalingGroupName(autoScalingGroupName) .withPolicyName(upPolicyName).withEstimatedInstanceWarmup(120); StepAdjustment downRule1 = new StepAdjustment().withMetricIntervalLowerBound(-20.0) .withMetricIntervalUpperBound(-0.0).withScalingAdjustment(-1); StepAdjustment downRule2 = new StepAdjustment().withMetricIntervalLowerBound(-30.0) .withMetricIntervalUpperBound(-20.0).withScalingAdjustment(-2); StepAdjustment downRule3 = new StepAdjustment().withMetricIntervalLowerBound(null) .withMetricIntervalUpperBound(-30.0).withScalingAdjustment(-3); String downPolicyName = "Scaling Down"; PutScalingPolicyRequest scalingDownPolicy = new PutScalingPolicyRequest().withAdjustmentType("") .withPolicyType("ChangeInCapacity").withStepAdjustments(downRule1, downRule2, downRule3) .withAutoScalingGroupName(autoScalingGroupName).withPolicyName(downPolicyName) .withEstimatedInstanceWarmup(60); // attach policies to ASG and get ARN for setting alarm PutScalingPolicyResult scaleUpResult = autoScalingGroupClient.putScalingPolicy(scalingUpPolicy); String upArn = scaleUpResult.getPolicyARN(); PutScalingPolicyResult scaleDownResult = autoScalingGroupClient.putScalingPolicy(scalingDownPolicy); String downArn = scaleDownResult.getPolicyARN(); /** * ======================================================================= * =================== Create alarms for policies * ======================================================================= * =================== */ String upAlarmName = "UpAlarm_Mild"; String downAlarmName = "DownAlarm_Mild"; Dimension dimension = new Dimension(); dimension.setName("AutoScalingGroupName"); dimension.setValue(autoScalingGroupName); PutMetricAlarmRequest upAlarmRequest = new PutMetricAlarmRequest().withAlarmName(upAlarmName) .withMetricName("CPUUtilization").withNamespace("AWS/EC2").withDimensions(dimension) .withStatistic(Statistic.SampleCount) .withComparisonOperator(ComparisonOperator.GreaterThanOrEqualToThreshold).withThreshold(65.0) .withEvaluationPeriods(1).withPeriod(120).withAlarmActions(upArn); PutMetricAlarmRequest downAlarmRequest = new PutMetricAlarmRequest().withAlarmName(downAlarmName) .withNamespace("AWS/EC2").withDimensions(dimension).withMetricName("CPUUtilization") .withStatistic(Statistic.Average) .withComparisonOperator(ComparisonOperator.LessThanOrEqualToThreshold).withThreshold(60.0) .withEvaluationPeriods(1).withPeriod(120).withAlarmActions(downArn); cloudWatchClient.putMetricAlarm(upAlarmRequest); cloudWatchClient.putMetricAlarm(downAlarmRequest); System.out.println("All settings complete! \nReady for warmup..."); /** * ======================================================================= * =================== Warm up ELB * ======================================================================= * =================== */ String warmUpUrl = "http://" + loadGeneratorDns + "/warmup?dns=" + loadBalancerDns; sendGET(warmUpUrl); System.out.println("Warmup link: " + warmUpUrl); try { Thread.sleep(15 * 60 * 1000); } catch (Exception e) { e.printStackTrace(); } System.out.println("Warmup complete!\nReady for battle..."); /** * ======================================================================= * =================== Start the test * ======================================================================= * =================== */ String testUrl = "http://" + loadGeneratorDns + "/junior?dns=" + loadBalancerDns; testId = sendGET(testUrl); System.out.println("Test ID is: " + testId); System.out.println("Test link: " + testUrl); try { Thread.sleep(60 * 60 * 1000); } catch (Exception e) { e.printStackTrace(); } System.out.println("Test finished!"); /** * ======================================================================= * =================== Delete resources * ======================================================================= * =================== */ // clear ASG UpdateAutoScalingGroupRequest asgClearRequest = new UpdateAutoScalingGroupRequest() .withAutoScalingGroupName(autoScalingGroupName).withMaxSize(0).withMinSize(0); autoScalingGroupClient.updateAutoScalingGroup(asgClearRequest); // delete policies DeletePolicyRequest upPolicyDeleteRequest = new DeletePolicyRequest() .withAutoScalingGroupName(autoScalingGroupName).withPolicyName(upPolicyName); autoScalingGroupClient.deletePolicy(upPolicyDeleteRequest); DeletePolicyRequest downPolicyDeleteRequest = new DeletePolicyRequest() .withAutoScalingGroupName(autoScalingGroupName).withPolicyName(downPolicyName); autoScalingGroupClient.deletePolicy(downPolicyDeleteRequest); System.out.println("Policies deleted..."); // delete alarms DeleteAlarmsRequest alarmsDeleteRequest = new DeleteAlarmsRequest().withAlarmNames(upAlarmName, downAlarmName); cloudWatchClient.deleteAlarms(alarmsDeleteRequest); System.out.println("Alarms deleted..."); // delete load balancer DeleteLoadBalancerRequest lgDeleteRequest = new DeleteLoadBalancerRequest() .withLoadBalancerName(loadBalancerName); loadBalancerClient.deleteLoadBalancer(lgDeleteRequest); System.out.println("Load generator deleted..."); // delete ASG DeleteAutoScalingGroupRequest asgDeleteRequest = new DeleteAutoScalingGroupRequest() .withForceDelete(true).withAutoScalingGroupName(autoScalingGroupName); autoScalingGroupClient.deleteAutoScalingGroup(asgDeleteRequest); System.out.println("ASG deleted..."); // delete launch configuration DeleteLaunchConfigurationRequest launchConfigDeleteRequest = new DeleteLaunchConfigurationRequest() .withLaunchConfigurationName(launchConfigName); autoScalingGroupClient.deleteLaunchConfiguration(launchConfigDeleteRequest); System.out.println("Launch configuration deleted..."); // delete security group DeleteSecurityGroupRequest sgDeleteRequest = new DeleteSecurityGroupRequest() .withGroupName(allPurposeSecurityName); ec2.deleteSecurityGroup(sgDeleteRequest); System.out.println("Security group deleted..."); /** * ======================================================================= * =================== All done * ======================================================================= * =================== */ System.out.println("All done :)"); } catch (AmazonServiceException ase) { // Write out any exceptions that may have occurred. System.out.println("Caught Exception: " + ase.getMessage()); System.out.println("Reponse Status Code: " + ase.getStatusCode()); System.out.println("Error Code: " + ase.getErrorCode()); System.out.println("Request ID: " + ase.getRequestId()); } catch (Exception e) { System.out.println("Unexcepted error!"); System.out.println(e.getMessage()); } }
From source file:virtualIT.java
License:Open Source License
private static void createTriggers(int userId) { System.out.println("Creating Trigger"); Dimension dimension = new Dimension(); dimension.setName("AutoScalingGroupName"); dimension.setValue(virtualIT.autoScalingGroupName); PutMetricAlarmRequest putMetricBusyAlarmRequest = new PutMetricAlarmRequest(); putMetricBusyAlarmRequest.withAlarmName(BUSY_ALARM_NAME) .withComparisonOperator("GreaterThanOrEqualToThreshold").withUnit("Seconds") .withEvaluationPeriods(EVALUATION_PERIOD).withMetricName(METRIC_NAME).withNamespace(NAMESPACE) .withPeriod(EC2_METRIC_SUBMIT_PERIOD).withStatistic(STATISTIC).withThreshold(THRESHOLD) .withAlarmActions(SCALE_UP_POLICY_ARN).withDimensions(dimension); PutMetricAlarmRequest putMetricIdleAlarmRequest = new PutMetricAlarmRequest(); putMetricIdleAlarmRequest.withAlarmName(IDLE_ALARM_NAME) .withComparisonOperator("LessThanOrEqualToThreshold").withUnit("Seconds") .withEvaluationPeriods(EVALUATION_PERIOD).withMetricName(METRIC_NAME).withNamespace(NAMESPACE) .withPeriod(EC2_METRIC_SUBMIT_PERIOD).withStatistic(STATISTIC).withThreshold(THRESHOLD) .withAlarmActions(SCALE_DOWN_POLICY_ARN).withDimensions(dimension); cloudWatch.putMetricAlarm(putMetricBusyAlarmRequest); cloudWatch.putMetricAlarm(putMetricIdleAlarmRequest); }
From source file:com.kurtraschke.nyctrtproxy.services.CloudwatchProxyDataListener.java
License:Apache License
@Override public void reportMatchesForRoute(String routeId, MatchMetrics metrics) { Date timestamp = new Date(); Dimension dim = new Dimension(); dim.setName("route"); dim.setValue(routeId); reportMatches(timestamp, dim, metrics); _log.info("time={}, route={}, nMatchedTrips={}, nAddedTrips={}, nDuplicates={}, nMergedTrips={}", timestamp, routeId, metrics.getMatchedTrips(), metrics.getAddedTrips(), metrics.getDuplicates(), metrics.getMergedTrips());/*from w w w.j ava 2 s . c om*/ }
From source file:com.kurtraschke.nyctrtproxy.services.CloudwatchProxyDataListener.java
License:Apache License
@Override public void reportMatchesForFeed(String feedId, MatchMetrics metrics) { Date timestamp = new Date(); Dimension dim = new Dimension(); dim.setName("feed"); dim.setValue(feedId); reportMatches(timestamp, dim, metrics); _log.info("time={}, feed={}, nMatchedTrips={}, nAddedTrips={}, nDuplicates={}, nMergedTrips={}", timestamp, feedId, metrics.getMatchedTrips(), metrics.getAddedTrips(), metrics.getDuplicates(), metrics.getMergedTrips());/*from ww w . j av a 2 s .c o m*/ }
From source file:com.pinterest.arcee.autoscaling.AwsAlarmManager.java
License:Apache License
private Dimension getDimention(String groupName) { Dimension dimension = new Dimension(); dimension.setName(DIMENTION_NAME);// www . j ava 2 s. c o m dimension.setValue(groupName); return dimension; }
From source file:com.remediatetheflag.global.utils.AWSHelper.java
License:Apache License
public Double getClusterMemoryReservation(Region region) { AmazonCloudWatch client = AmazonCloudWatchClientBuilder.standard().withRegion(region.getName()) .withCredentials(new DefaultAWSCredentialsProviderChain()).build(); Dimension dimension = new Dimension(); dimension.setName("ClusterName"); dimension.setValue(RTFConfig.getExercisesCluster()); Date date = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(date);/*from w w w.ja v a 2 s . c om*/ cal.add(Calendar.MINUTE, -5); GetMetricStatisticsRequest request = new GetMetricStatisticsRequest().withMetricName("MemoryReservation") .withDimensions(dimension).withPeriod(60).withStartTime(cal.getTime()).withEndTime(date) .withStatistics("Average").withNamespace("AWS/ECS"); try { logger.debug("Requesting memory reservation for region " + region.getName() + " cluster " + RTFConfig.getExercisesCluster()); GetMetricStatisticsResult response = client.getMetricStatistics(request); if (response.getDatapoints().isEmpty()) return 0.0; return response.getDatapoints().get(0).getAverage(); } catch (Exception e) { logger.error("Error getClusterContainerInstances for memory reservation in region " + region.getName() + " due to:\n" + e.getMessage()); return 0.0; } }
From source file:com.swap.aws.elb.client.AWSHelper.java
License:Apache License
public int getSurgeRequestCount(String loadBalancerName, String region) { int count = 0; try {/*from w w w .j a v a 2s . co m*/ GetMetricStatisticsRequest request = new GetMetricStatisticsRequest(); request.setMetricName("RequestCount"); request.setNamespace("AWS/ELB"); Date currentTime = new DateTime(DateTimeZone.UTC).toDate(); Date pastTime = new DateTime(DateTimeZone.UTC).minusMinutes(120).toDate(); request.setStartTime(pastTime); request.setEndTime(currentTime); request.setPeriod(60); HashSet<String> statistics = new HashSet<String>(); statistics.add("Sum"); request.setStatistics(statistics); HashSet<Dimension> dimensions = new HashSet<Dimension>(); Dimension loadBalancerDimension = new Dimension(); loadBalancerDimension.setName("LoadBalancerName"); loadBalancerDimension.setValue("LB-1"); dimensions.add(loadBalancerDimension); request.setDimensions(dimensions); cloudWatchClient.setEndpoint(String.format("monitoring.%s.amazonaws.com", region)); // ListMetricsResult result = cloudWatchClient.listMetrics(); // // List<Metric> metrics = result.getMetrics(); // // for(Metric metric : metrics) // { // System.out.println(metric.getMetricName()); // } GetMetricStatisticsResult result = cloudWatchClient.getMetricStatistics(request); List<Datapoint> dataPoints = result.getDatapoints(); if (dataPoints != null && dataPoints.size() > 0) { count = dataPoints.get(0).getSum().intValue(); } } catch (Exception e) { e.printStackTrace(); } return count; }
From source file:com.vmware.photon.controller.model.adapters.awsadapter.AWSStatsService.java
License:Open Source License
/** * Gets EC2 statistics./*from www.java2 s. c om*/ * * @param statsData The context object for stats. * @param metricNames The metrics names to gather stats for. * @param isAggregateStats Indicates where we are interested in aggregate stats or not. */ private void getEC2Stats(AWSStatsDataHolder statsData, String[] metricNames, boolean isAggregateStats) { getAWSAsyncStatsClient(statsData); long endTimeMicros = Utils.getNowMicrosUtc(); for (String metricName : metricNames) { GetMetricStatisticsRequest metricRequest = new GetMetricStatisticsRequest(); // get one minute averages for the last 10 minutes metricRequest.setEndTime(new Date(TimeUnit.MICROSECONDS.toMillis(endTimeMicros))); metricRequest.setStartTime(new Date(TimeUnit.MICROSECONDS.toMillis(endTimeMicros) - TimeUnit.MINUTES.toMillis(METRIC_COLLECTION_WINDOW_IN_MINUTES))); metricRequest.setPeriod(METRIC_COLLECTION_PERIOD_IN_SECONDS); metricRequest.setStatistics(Arrays.asList(STATISTICS)); metricRequest.setNamespace(NAMESPACE); // Provide instance id dimension only if it is not aggregate stats. if (!isAggregateStats) { List<Dimension> dimensions = new ArrayList<>(); Dimension dimension = new Dimension(); dimension.setName(DIMENSION_INSTANCE_ID); String instanceId = statsData.computeDesc.id; dimension.setValue(instanceId); dimensions.add(dimension); metricRequest.setDimensions(dimensions); } metricRequest.setMetricName(metricName); logFine("Retrieving %s metric from AWS", metricName); AsyncHandler<GetMetricStatisticsRequest, GetMetricStatisticsResult> resultHandler = new AWSStatsHandler( this, statsData, metricNames.length, isAggregateStats); statsData.statsClient.getMetricStatisticsAsync(metricRequest, resultHandler); } }
From source file:com.vmware.photon.controller.model.adapters.awsadapter.AWSStatsService.java
License:Open Source License
private void getBillingStats(AWSStatsDataHolder statsData) { getAWSAsyncBillingClient(statsData); Dimension dimension = new Dimension(); dimension.setName(DIMENSION_CURRENCY); dimension.setValue(DIMENSION_CURRENCY_VALUE); long endTimeMicros = Utils.getNowMicrosUtc(); GetMetricStatisticsRequest request = new GetMetricStatisticsRequest(); // AWS pushes billing metrics every 4 hours. // Get at least 2 metrics to calculate the recent value and the burn rate request.setEndTime(new Date(TimeUnit.MICROSECONDS.toMillis(endTimeMicros))); request.setStartTime(new Date(TimeUnit.MICROSECONDS.toMillis(endTimeMicros) - TimeUnit.HOURS.toMillis(COST_COLLECTION_WINDOW_IN_HOURS))); request.setPeriod(METRIC_COLLECTION_PERIOD_IN_SECONDS); request.setStatistics(Arrays.asList(STATISTICS)); request.setNamespace(BILLING_NAMESPACE); request.setDimensions(Collections.singletonList(dimension)); request.setMetricName(AWSConstants.ESTIMATED_CHARGES); logFine("Retrieving %s metric from AWS", AWSConstants.ESTIMATED_CHARGES); AsyncHandler<GetMetricStatisticsRequest, GetMetricStatisticsResult> resultHandler = new AWSBillingStatsHandler( this, statsData); statsData.billingClient.getMetricStatisticsAsync(request, resultHandler); }
From source file:eu.optimis.monitoring.amazoncollector.MeasurementsHelper.java
License:Apache License
private Measurement getCWMeasurement(String metric_name, String optimis_metric_name, boolean custom, String instance_id, String service_id) { AmazonCloudWatch cw = getAmazonCloudWatchClient(); String ns = custom ? "System/Linux" : "AWS/EC2"; List<Dimension> dimensions = new LinkedList<Dimension>(); Dimension dim = new Dimension(); dim.setName("InstanceId"); dim.setValue(instance_id); dimensions.add(dim);/*from w ww. jav a2 s .c om*/ GetMetricStatisticsRequest req = new GetMetricStatisticsRequest(); req.setStartTime(new Date(System.currentTimeMillis() - HOUR_AND_HALF_AGO - PERIOD)); req.setEndTime(new Date(System.currentTimeMillis() - HOUR_AND_HALF_AGO)); req.setMetricName(metric_name); req.setNamespace(ns); List<String> statistics = new LinkedList<String>(); statistics.add(Statistic.Average.toString()); req.setStatistics(statistics); req.setPeriod((int) PERIOD / 1000); req.setDimensions(dimensions); GetMetricStatisticsResult res = cw.getMetricStatistics(req); if (res.getDatapoints().isEmpty()) return null; Datapoint dp = res.getDatapoints().get(0); return new Measurement(optimis_metric_name, dp.getAverage().toString(), dp.getUnit(), new Date(), instance_id, service_id); }