1

我是 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
4

2 回答 2

2

describe_alarms()返回一个boto.ec2.cloudwatch.alarm对象列表,可以对其进行检查以找出有关警报的指标和其他详细信息。

alarms = conn.describe_alarms()
for alarm in alarms:
    print alarm.name
    print alarm.metric
    print alarm.namespace
于 2014-07-08T17:20:08.620 回答
2

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

维度(列表)——与指标关联的维度。如果指标有任何关联的维度,您必须指定它们才能使调用成功。

(dict) -- 扩展度量的标识。

Name (string) -- [REQUIRED] 维度的名称。

Value (string) -- [REQUIRED] 表示尺寸测量的值。

有了这个要求,我不确定这个 API 的意义是什么。另一种方法是describe_alarms()通过分页器使用,然后指定一个过滤器。

您可以使用此处的示例作为基础:

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 文档中的更多信息。

于 2019-02-27T01:38:28.193 回答