获取所有具有警报的指标

时间:2014-07-08 16:45:15

标签: amazon-web-services boto amazon-cloudwatch

我是boto的新手,并试图获取所有有警报的指标。有人可以指导我怎么做吗?这是我想要做的。我可以通过以下方式获得所有指标。

import boto.ec2.cloudwatch
conn = boto.ec2.cloudwatch.connect_to_region('ap-southeast-1')
metrics = conn.list_metrics()
for metric in metrics:
   print metric.name, metric.namespace

我知道有一个功能" describe_alarms_for_metric"返回指标的警报。但它不适用于我并给我一个空列表。这是我正在尝试的。

for metric in metrics:
    print conn.describe_alarms_for_metric(metric.name, metric.namespace)

我还可以使用" describe_alarms"来查看所有闹钟的列表。但我不知道哪个警报是针对哪个指标的。

alarms = conn.describe_alarms()
for alarm in alarms:
    print alarm

2 个答案:

答案 0 :(得分:2)

describe_alarms()会返回boto.ec2.cloudwatch.alarm objects的列表,可以检查该列表以查找有关警报的指标和其他详细信息。

alarms = conn.describe_alarms()
for alarm in alarms:
    print alarm.name
    print alarm.metric
    print alarm.namespace

答案 1 :(得分:0)

对于Boto3,describe_alarms_for_metric()显然不起作用,除非您还提供了尺寸-请参见documentation

  

维度(列表)-与指标关联的维度。如果   指标具有任何关联的维度,您必须按顺序指定它们   成功的电话。

     

(dict)-扩展指标的身份。

     

名称(字符串)-[必需]尺寸名称。

     

值(字符串)-[必需]代表尺寸的值   测量。

根据该要求,我不确定此API的意义。另一种方法是通过分页器使用describe_alarms(),然后指定一个过滤器。

您可以使用示例here作为基础:

import boto3

# Create CloudWatch client
cloudwatch = boto3.client('cloudwatch')

# List alarms of insufficient data through the pagination interface
paginator = cloudwatch.get_paginator('describe_alarms')
for response in paginator.paginate(StateValue='INSUFFICIENT_DATA'):
    print(response['MetricAlarms'])

然后对其进行修改以添加过滤器:

paginator = cloudwatch.get_paginator('describe_alarms')
page_iterator = paginator.paginate()
filtered_iterator = page_iterator.search("MetricAlarms[?MetricName==`CPUUtilization` && Namespace==`AWS/EC2`]")
for alarm in filtered_iterator:
    print(alarm)

API文档herehere中的更多信息。