public static void createCloudWatchPolicies() { System.out.println("Preparing Alarms.."); watchClient = new AmazonCloudWatchClient(awsCredentials()); // Scale out alarm PutMetricAlarmRequest scaleOutRequest = new PutMetricAlarmRequest(); scaleOutRequest.setAlarmName("ScaleOutAlarm"); scaleOutRequest.setMetricName("CPUUtilization"); List<Dimension> dimensions = new ArrayList<Dimension>(); Dimension dimension = new Dimension(); dimension.setName("AutoScalingGroupName"); dimension.setValue("ProjectTwoAutoScaleGroup"); dimensions.add(dimension); scaleOutRequest.setDimensions(dimensions); scaleOutRequest.setNamespace("AWS/EC2"); scaleOutRequest.setComparisonOperator(ComparisonOperator.GreaterThanThreshold); scaleOutRequest.setStatistic(Statistic.Average); scaleOutRequest.setUnit(StandardUnit.Percent); scaleOutRequest.setThreshold(70d); scaleOutRequest.setPeriod(60); scaleOutRequest.setEvaluationPeriods(1); // Linking alarm to policy List<String> actions = new ArrayList<String>(); actions.add(scaleOut); scaleOutRequest.setAlarmActions(actions); // Scale in alarm PutMetricAlarmRequest scaleInRequest = new PutMetricAlarmRequest(); scaleInRequest.setAlarmName("ScaleInAlarm"); scaleInRequest.setMetricName("CPUUtilization"); scaleInRequest.setDimensions(dimensions); scaleInRequest.setNamespace("AWS/EC2"); scaleInRequest.setComparisonOperator(ComparisonOperator.LessThanThreshold); scaleInRequest.setStatistic(Statistic.Average); scaleInRequest.setUnit(StandardUnit.Percent); scaleInRequest.setThreshold(20d); scaleInRequest.setPeriod(60); scaleInRequest.setEvaluationPeriods(4); // Linking alarm to policy List<String> actionsTwo = new ArrayList<String>(); actionsTwo.add(scaleIn); scaleInRequest.setAlarmActions(actionsTwo); watchClient.putMetricAlarm(scaleOutRequest); watchClient.putMetricAlarm(scaleInRequest); System.out.println("Alarms set successfully.."); }
@Override public int compare(Dimension dim1, Dimension dim2) { int result = nullCompare(dim1, dim2); if (result == NON_NULLS) { result = nullSafeCompare(dim1.getName(), dim2.getName()); if (result == 0) { return nullSafeCompare(dim1.getValue(), dim2.getValue()); } } return result; }
/** * Passes into {@link #addDimension(String, String, boolean)} * * @return this for chaining * @throws MetricsNameSyntaxException on validation failure */ public MetricNameBuilder addDimension(Dimension dimension, boolean permute) throws MetricsNameSyntaxException { return addDimension(dimension.getName(), dimension.getValue(), false); }