Cloudwatchメトリクスにpythonとbotoを使用しています。MetricName
他のすべてのディメンションでアクティブになるアラームを定義できるようにしたいと思います。
たとえば、sandbox
名前空間にMetricName
ofMemoryUsage
とInstanceId
ofのメトリックがありますi-xxx
。すべてのディメンションMemoryUsage
に対してトリガーされる単一のアラームを定義することは可能ですか? InstanceId
Cloudwatchメトリクスにpythonとbotoを使用しています。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_nameCPUUtilizationに関連付けられた4つの個別のメトリックがあることがわかります。1つ目はその特定のAMIを使用するすべてのインスタンスのディメンションを持ち、2つ目は現在実行中の特定のインスタンスのディメンションを持ち、4つ目は特定のタイプのすべてのインスタンスのディメンションを持ちますが、3つ目は指定されたディメンションを持ちません。このメトリックは、すべてのインスタンスでの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使用率が2つの評価期間で80%を超えた場合に発生するはずです。また、「Maximum」などの別の統計を選択することもできます。これは、2つを超える評価期間ですべてのインスタンスのCPU使用率の最大値が80%を超えた場合に発生します。
特にMemoryUsageを探しているのか、それとも単なる例なのかはわかりませんが、MemoryUsageがCloudWatchで利用できるメトリクスの1つではないと思います。