我将 python 和 boto 用于 cloudwatch 指标。我希望能够为 a 定义一个警报,该警报MetricName
将对所有其他维度都有效。
例如,我在sandbox
命名空间中有一个带有MetricName
ofMemoryUsage
和InstanceId
of的度量i-xxx
。是否可以定义一个MemoryUsage
针对所有 InstanceId
维度触发的警报?
我将 python 和 boto 用于 cloudwatch 指标。我希望能够为 a 定义一个警报,该警报MetricName
将对所有其他维度都有效。
例如,我在sandbox
命名空间中有一个带有MetricName
ofMemoryUsage
和InstanceId
of的度量i-xxx
。是否可以定义一个MemoryUsage
针对所有 InstanceId
维度触发的警报?
是的,您可以为任何单个指标创建警报。在这种情况下,单个指标具有代表所有实例的维度。这是您可以在boto中执行此操作的方法。
In [1]: import boto
In [2]: cw = boto.connect_cloudwatch()
In [3]: cw.list_metrics(metric_name='CPUUtilization')
Out[3]:
[Metric:CPUUtilization,
Metric:CPUUtilization,
Metric:CPUUtilization,
Metric:CPUUtilization]
In [4]: l = _
In [5]: for m in l:
...: print m.name, m.dimensions
...:
CPUUtilization {u'ImageId': [u'ami-1b814f72']}
CPUUtilization {u'InstanceId': [u'i-366c4354']}
CPUUtilization {}
CPUUtilization {u'InstanceType': [u'm1.large']}
您可以在此处看到,有四个单独的指标与 metric_name CPUUtilization 相关联。第一个具有使用该特定 AMI 的所有实例的维度,第二个具有当前正在运行的特定实例的维度,第四个具有特定类型的所有实例的维度,但第三个没有指定维度。该指标代表我所有实例的 CPUUtilization。所以:
In [6]: m = l[2]
In [7]: m.create_alarm(name='cpu_all_instances', comparison='>', threshold=80.0, period=60, evaluation_periods=2, statistic='Average')
Out[7]: MetricAlarm:cpu_all_instances[CPUUtilization(Average) GreaterThanThreshold 80.0]
如果我所有实例的平均 CPU 利用率在两个评估期超过 80%,则应该触发此警报。您还可以选择不同的统计信息,例如“最大值”,如果所有实例的 CPU 利用率最大值超过 2 个评估期超过 80%,则会触发该统计信息。
我不知道您是否专门寻找 MemoryUsage 或者这只是一个示例,但我不认为 MemoryUsage 是 CloudWatch 的可用指标之一。