我正在寻找在us-west-2数据中心的EC2实例的通知模式设置。我已经阅读了CloudWatch和SNS文档,并且我知道只有在us-east-1中设置SNS主题时才能使用短信通知。
我想知道是否有人找到了一种方法来获得CloudWatch警报的实例不在us-east-1广播在us-east-1的主题设置?
似乎文档是不正确的-当试图在us-west-2中添加一个指向us-east-1中SMS功能主题的新警报时,观察到以下错误(今天在2014年9月10日尝试过):
A client error (ValidationError) occurred when calling the PutMetricAlarm operation: Invalid region us-east-1 specified. Only us-west-2 is supported.
这是基于使用aws cli执行以下命令(帐号改为1234567890)得出的:
aws cloudwatch put-metric-alarm --alarm-name "ELB UnHealthy > 0" --alarm-description "ELB UnHealthy > 0" --actions-enabled --ok-actions arn:aws:sns:us-west-2:1234567890:EmailOnly --alarm-actions arn:aws:sns:us-east-1:1234567890:EmailAndSMS --insufficient-data-actions arn:aws:sns:us-west-2:1234567890:EmailOnly --metric-name UnHealthyHostCount --namespace AWS/ELB --statistic Average --dimensions Name=LoadBalancerName,Value=elb-name --period 60 --evaluation-periods 3 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold
我猜之前的答案是来自没有真正测试过的人…这可能是因为AWS在过去几个月里禁用了引用其他地区sns主题的功能,并且忘记更新他们的文档…
您可以使用Amazon Cloudwatch CLI设置您的警报以向不同的区域发送通知。您只需通过调用mon-put-metric-alarm
在us-west-2中创建警报,并将us-east-1主题的ARN提供为alarm-actions
。
export AWS_CLOUDWATCH_URL=http://monitoring.us-west-2.amazonaws.com/
mon-put-metric-alarm --alarm-name my-alarm --alarm-description "some desc"
--metric-name CPUUtilization --namespace AWS/EC2
--statistic Average --period 60 --threshold 90
--comparison-operator GreaterThanThreshold
--dimensions InstanceId=i-abcdef --evaluation-periods 3 --unit Percent
--alarm-actions arn:aws:sns:us-east-1:1234567890:my-topic
你可以在这里阅读官方文档:
http://docs.aws.amazon.com/AmazonCloudWatch/latest/cli/cli-mon-put-metric-alarm.html
并在这里找到CLI设置说明:http://docs.aws.amazon.com/AmazonCloudWatch/latest/cli/SetupCLI.html
如果您试图在默认区域以外的区域创建警报,您必须使用——region选项显式指定它(尽管这已经在ARN中隐含)。
这并不完全是您所要求的,但是我在us-west-1地区有需要SMS警报的实例,所以我找到了一种方法来实现此功能。诀窍是在美国东部-1地区同时创建指标和警报。
在us-west-1区域的实例上,运行以下命令在us-east-1区域创建一个度量,并向其发布一个值。
aws cloudwatch put-metric-data
--region us-east-1 --namespace NameSpace --metric-name MetricName
--dimensions InstanceId=i-12345678 --value 10
接下来,在美国-东-1地区,创建一个SNS主题,以及相关的SMS订阅。
最后,在us-east-1区域,您创建的主题将是可见的。根据该指标创建一个警报,指定您刚刚创建的SNS主题。
此告警触发后将通过SNS发送短信通知。
我曾认为将度量数据从us-west-1发送到us-east-1可能会有额外的成本,但事实证明,对于我使用的度量数量和频率而言,成本为零,这是每分钟发送一次的单个度量。