我是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
答案 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)