修改现有警报AWS [英] Modify Existing alarms AWS

查看:123
本文介绍了修改现有警报AWS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道如何读取和修改所有警报?我目前在阅读下一组警报时遇到问题。第一组包含前50个。

I want to know how do i read and modify all the alarms ? I am currently facing problem to read the next set of alarms. The first set contains first 50.

    DescribeAlarmsRequest describeAlarmsRequest = new DescribeAlarmsRequest();

    DescribeAlarmsResult alarmsResult = cloudWatch.describeAlarms(describeAlarmsRequest);


    System.out.println(alarmsResult.getMetricAlarms().size());
    System.out.println(alarmsResult.getNextToken());
    DescribeAlarmsRequest describeAlarmsRequest1 = new DescribeAlarmsRequest();
    describeAlarmsRequest1.setNextToken(alarmsResult.getNextToken());
    DescribeAlarmsResult alarmsResult1 = cloudWatch.describeAlarms(describeAlarmsRequest1);
    System.out.println(alarmsResult1.getMetricAlarms().size());


推荐答案

我按照以下方式进行了工作,并且有效。 / p>

I did it the following way and it worked.

public class Alarms {
   private static AmazonCloudWatchClient cloudWatch;
   private static AmazonSNSClient client;
   private static ClientConfiguration clientConfiguration;
   private static final String AWS_KEY = "";
   private static final String AWS_SECRET_KEY = "";

static {

    BasicAWSCredentials credentials = new BasicAWSCredentials(AWS_KEY,AWS_SECRET_KEY);
    cloudWatch = new AmazonCloudWatchClient(credentials);
    clientConfiguration = new ClientConfiguration();
    clientConfiguration.setConnectionTimeout(10000);
    clientConfiguration.setSocketTimeout(30000);
    clientConfiguration.setMaxErrorRetry(5);
    client = new AmazonSNSClient(credentials, clientConfiguration);
}

public static void main(String args[]) {

    cloudWatch.setEndpoint("monitoring.us-east-1.amazonaws.com");

    DescribeAlarmsRequest describeAlarmsRequest = new DescribeAlarmsRequest();
    //describeAlarmsRequest.setStateValue(StateValue.OK);
    DescribeAlarmsResult alarmsResult = cloudWatch.describeAlarms(describeAlarmsRequest);
    List<MetricAlarm> metricAlarmList = new ArrayList<>();
    metricAlarmList.addAll(alarmsResult.getMetricAlarms());
    do {
        describeAlarmsRequest.withNextToken(alarmsResult.getNextToken());
        alarmsResult = cloudWatch.describeAlarms(describeAlarmsRequest);
        metricAlarmList.addAll(alarmsResult.getMetricAlarms());
    } while (alarmsResult.getNextToken() != null);

    int i = metricAlarmList.size();
    System.out.println("size " + i);
    for(MetricAlarm alarm : metricAlarmList){
        System.out.println(i--);
        modifyalarm(alarm);
    }

}

private static void modifyalarm(MetricAlarm alarm) {
    Dimension instanceDimension = new Dimension();
    instanceDimension.setName("InstanceId");
    instanceDimension.setValue(alarm.getAlarmName());

    PutMetricAlarmRequest request = new PutMetricAlarmRequest()
            .withActionsEnabled(true).withAlarmName(alarm.getAlarmName())
            .withComparisonOperator(ComparisonOperator.GreaterThanOrEqualToThreshold)
            .withDimensions(Arrays.asList(instanceDimension))
            .withAlarmActions(getTopicARN())
            .withEvaluationPeriods(5)
            .withPeriod(60)
            .withThreshold(5.0D)
            .withStatistic(Statistic.Average)
            .withMetricName("StatusCheckFailed")
            .withNamespace("AWS/EC2");
    cloudWatch.putMetricAlarm(request);
}

private static String getTopicARN() {
    ListTopicsResult listTopicsResult = client.listTopics();
    String nextToken = listTopicsResult.getNextToken();
    List<Topic> topics = listTopicsResult.getTopics();
    String topicARN = "";

    while (nextToken != null) {
        listTopicsResult = client.listTopics(nextToken);
        nextToken = listTopicsResult.getNextToken();
        topics.addAll(listTopicsResult.getTopics());
    }

    for (Topic topic : topics) {
        if (topic.getTopicArn().contains("status-alarms")) {
            topicARN = topic.getTopicArn();
            break;
        }

    }
    return topicARN;
  }
}

这篇关于修改现有警报AWS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆