获取所有具有警报的指标

问题描述 投票:1回答:2

我是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
amazon-web-services boto aws-cloudwatch
2个回答
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

0
投票

对于Boto3显然describe_alarms_for_metric()不起作用,除非你也提供维度 - 请参阅documentation

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

(字典) - 扩展指标的标识。

名称(字符串) - [必需]维度的名称。

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

有了这个要求,我不确定这个API的重点是什么。另一种方法是通过paginator使用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 docs herehere中的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.