【问题标题】:get all metrics which have alarms boto获取所有具有警报的指标
【发布时间】:2014-08-29 12:20:16
【问题描述】:

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

【问题讨论】:

  • describe_alarms_for_metric 似乎不起作用,但您可以通过执行 alarm.metric 从警报中获取指标

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


【解决方案1】:

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

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

【讨论】:

  • 谢谢@Ben。它解决了我的问题但是我怎样才能获得所有警报对象的列表。我尝试使用 dir() 但我没有看到这些对象(名称、度量、命名空间)。
  • 属性都列在我在答案中链接到的docs 中。这就是你想知道的吗?
  • 我查看了文档并且可以看到它们,但是当我尝试 dir(alarms) 时,我没有得到这些属性。这就是我想知道的。
【解决方案2】:

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

Dimensions (list) -- 与指标关联的维度。如果 指标有任何关联的维度,您必须按顺序指定它们 让调用成功。

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

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

Value (string) -- [REQUIRED] 代表维度的值 测量。

有了这个要求,我不确定这个 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 中的更多信息。

【讨论】:

    猜你喜欢
    • 2014-08-21
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 2021-11-17
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多