本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 CloudWatch 警报
先决条件
在开始之前,建议您先阅读开始使用适用于 C++ 的 AWS SDK。
下载示例代码并按代码示例入门中所述构建解决方案。
要运行这些示例,您的代码用于发出请求的用户配置文件必须在 AWS 中具有适当的权限(用于服务和操作)。有关更多信息,请参阅提供 AWS 凭证。
创建警报
要根据 CloudWatch 指标创建警报,请使用已填充警报条件的 PutMetricAlarmRequest 调用 CloudWatchClient 的 PutMetricAlarm 函数。
包含
#include <aws/core/Aws.h> #include <aws/monitoring/CloudWatchClient.h> #include <aws/monitoring/model/PutMetricAlarmRequest.h> #include <iostream>
代码
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); 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; } else { std::cout << "Successfully created CloudWatch alarm " << alarm_name << std::endl; }
请参阅完整示例
列出警报
要列出您已创建的 CloudWatch 警报,请使用您可用来设置结果选项的 DescribeAlarmsRequest 调用 CloudWatchClient 的 DescribeAlarms 函数。
包含
#include <aws/core/Aws.h> #include <aws/monitoring/CloudWatchClient.h> #include <aws/monitoring/model/DescribeAlarmsRequest.h> #include <aws/monitoring/model/DescribeAlarmsResult.h> #include <iomanip> #include <iostream>
代码
Aws::CloudWatch::CloudWatchClient cw; Aws::CloudWatch::Model::DescribeAlarmsRequest request; request.SetMaxRecords(1); bool done = false; bool header = false; while (!done) { auto outcome = cw.DescribeAlarms(request); if (!outcome.IsSuccess()) { std::cout << "Failed to describe CloudWatch alarms:" << outcome.GetError().GetMessage() << std::endl; break; } if (!header) { std::cout << std::left << std::setw(32) << "Name" << std::setw(64) << "Arn" << std::setw(64) << "Description" << std::setw(20) << "LastUpdated" << std::endl; header = true; } const auto &alarms = outcome.GetResult().GetMetricAlarms(); for (const auto &alarm : alarms) { std::cout << std::left << std::setw(32) << alarm.GetAlarmName() << std::setw(64) << alarm.GetAlarmArn() << std::setw(64) << alarm.GetAlarmDescription() << std::setw(20) << alarm.GetAlarmConfigurationUpdatedTimestamp().ToGmtString( SIMPLE_DATE_FORMAT_STR) << std::endl; } const auto &next_token = outcome.GetResult().GetNextToken(); request.SetNextToken(next_token); done = next_token.empty(); }
警报列表可以通过在 DescribeAlarms 返回的 DescribeAlarmsResult 中调用 getMetricAlarms 获得。
结果可以分页。要检索下一批结果,请在原始请求对象中使用 DescribeAlarmsResult 对象的 GetNextToken 函数的返回值调用 SetNextToken,并将已修改的请求对象传回对 DescribeAlarms 的另一个调用。
注意
您还可以使用 CloudWatchClient 的 DescribeAlarmsForMetric 函数检索特定指标的警报。它的使用类似于 DescribeAlarms。
请参阅完整示例
删除警报
要删除 CloudWatch 警报,请使用 DeleteAlarmsRequest(包含您要删除的一个或更多警报名称)调用 CloudWatchClient 的 DeleteAlarms 函数。
包含
#include <aws/core/Aws.h> #include <aws/monitoring/CloudWatchClient.h> #include <aws/monitoring/model/DeleteAlarmsRequest.h> #include <iostream>
代码
Aws::CloudWatch::CloudWatchClient cw; Aws::CloudWatch::Model::DeleteAlarmsRequest request; request.AddAlarmNames(alarm_name); auto outcome = cw.DeleteAlarms(request); if (!outcome.IsSuccess()) { std::cout << "Failed to delete CloudWatch alarm:" << outcome.GetError().GetMessage() << std::endl; } else { std::cout << "Successfully deleted CloudWatch alarm " << alarm_name << std::endl; }
请参阅完整示例
更多信息
-
《Amazon CloudWatch 用户指南》中的创建 Amazon CloudWatch 警报
-
《Amazon CloudWatch API 参考》中的 PutMetricAlarm
-
《Amazon CloudWatch API 参考》中的 DescribeAlarms
-
《Amazon CloudWatch API 参考》中的 DeleteAlarms