SIGN IN SIGN UP

Welcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.

0 0 1 Java
2021-11-15 13:31:25 +00:00
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
2021-11-15 13:15:43 +00:00
/*
*/
2021-12-17 14:41:43 +00:00
/* ////////////////////////////////////////////////////////////////////////////
2021-12-21 13:36:46 +00:00
* Purpose: enable_alarm_actions.cpp demonstrates how to enable actions on an Amazon CloudWatch metric alarm.
2021-12-17 14:41:43 +00:00
*
* Prerequisites:
2021-12-21 13:36:46 +00:00
* An Amazon CloudWatch metric alarm.
2021-12-17 14:41:43 +00:00
*
* Inputs:
2021-12-17 17:57:59 +00:00
* - alarm_name: The name of the alarm (entered as the second argument in the command line).
2021-12-23 12:10:29 +00:00
* - instanceId: The instance ID of the alarm (entered as the third argument in the command line).
2021-12-17 17:57:59 +00:00
* - actionArn: The Amazon Resource Name (ARN) of the action (entered as the third argument in the command line).
2021-12-17 14:41:43 +00:00
*
* Outputs:
2021-12-21 13:36:46 +00:00
* The metric alarm is enabled.
2021-12-17 14:41:43 +00:00
* ///////////////////////////////////////////////////////////////////////// */
2021-11-15 13:15:43 +00:00
// snippet-start:[cw.cpp.enable_alarm_actions.inc]
#include <aws/core/Aws.h>
#include <aws/monitoring/CloudWatchClient.h>
#include <aws/monitoring/model/EnableAlarmActionsRequest.h>
#include <aws/monitoring/model/PutMetricAlarmRequest.h>
#include <iostream>
// snippet-end:[cw.cpp.enable_alarm_actions.inc]
void CreateAlarmAndEnableActions(
const Aws::String& alarm_name, const Aws::String& instanceId,
const Aws::String& actionArn)
{
// snippet-start:[cw.cpp.enable_alarm_actions.code]
Aws::CloudWatch::CloudWatchClient cw;
Aws::CloudWatch::Model::PutMetricAlarmRequest request;
request.SetAlarmName(alarm_name);
request.SetComparisonOperator(
Aws::CloudWatch::Model::ComparisonOperator::GreaterThanThreshold);
request.SetEvaluationPeriods(1);
request.SetMetricName("CPUUtilization");
request.SetNamespace("AWS/EC2");
request.SetPeriod(60);
request.SetStatistic(Aws::CloudWatch::Model::Statistic::Average);
request.SetThreshold(70.0);
request.SetActionsEnabled(false);
request.SetAlarmDescription("Alarm when server CPU exceeds 70%");
request.SetUnit(Aws::CloudWatch::Model::StandardUnit::Seconds);
request.AddAlarmActions(actionArn);
Aws::CloudWatch::Model::Dimension dimension;
dimension.SetName("InstanceId");
dimension.SetValue(instanceId);
request.AddDimensions(dimension);
auto outcome = cw.PutMetricAlarm(request);
if (!outcome.IsSuccess())
{
std::cout << "Failed to create CloudWatch alarm:" <<
outcome.GetError().GetMessage() << std::endl;
return;
}
Aws::CloudWatch::Model::EnableAlarmActionsRequest enable_request;
enable_request.AddAlarmNames(alarm_name);
auto enable_outcome = cw.EnableAlarmActions(enable_request);
if (!enable_outcome.IsSuccess())
{
std::cout << "Failed to enable alarm actions:" <<
enable_outcome.GetError().GetMessage() << std::endl;
return;
}
std::cout << "Successfully created alarm " << alarm_name <<
" and enabled actions on it." << std::endl;
// snippet-end:[cw.cpp.enable_alarm_actions.code]
}
/**
* Adds a cloud watch alarm to an instance based on CPU utilization. This alarm
* includes a command-line specified ARN that dictates what action to take when
* the alarm transitions into the Alarm state
*/
int main(int argc, char** argv)
{
if (argc != 4)
{
std::cout << "Usage:" << std::endl << " enable_alarm_actions" <<
" <alarm_name> <instance_id> <alarm_action_arn>" << std::endl;
return 1;
}
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::String alarm_name(argv[1]);
Aws::String instanceId(argv[2]);
Aws::String actionArn(argv[3]);
CreateAlarmAndEnableActions(alarm_name, instanceId, actionArn);
}
Aws::ShutdownAPI(options);
return 0;
}