我正在使用 Python Boto 在 AWS VPC 中启动新服务器,我已设置 SNS 主题,并计划在新服务器的系统可达性检查和实例可达性检查失败时收到通知。为了实现这一点,我获取了指标列表(这都是创建新警报的一部分,作为服务器配置脚本的一部分):
cw_conn.list_metrics(dimensions={'InstanceId':instance_id}, metric_name=StatusCheckFailed)[0]
问题是,当一个实例启动时,所有的指标并不是立即可用的,所以我会收到IndexError: 'list index out of range'
错误。
如果有人能解决这个问题,并指导我或分享解决此问题的方法,我将不胜感激。
谢谢
答案1
不要假设该指标存在,而是先检查它。如果不存在,则检查实例启动日期。如果是最近的,则忽略该指标尚不存在的事实;否则表明存在问题。
答案2
我知道的唯一方法是在未来的某个时间(例如一个小时或一天)创建警报with_start_date
,以便让实例有机会至少返回一次 OK。
def with_start_date date
date = date.iso8601 if date.respond_to?(:iso8601)
filter(:start_date, date)
end
看http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/CloudWatch/AlarmHistoryItemCollection.html