Amazon-CloudWatch

CloudWatch AlarmをAWS CLIで設定する

CloudWatch AlarmをAWS CLIで設定する

こんにちは。
SER課の栩野です。

最近CloudWatch Alarmを大量に設定する機会があったので
AWS CLIでアラームの設定を行う方法を紹介しようと思います。

マネージメントコンソールからもアラームを設定出来ますが
CLIから設定することで以下のようなメリットがあります。

  • 複数アラームの設定が手軽
    マネージメントコンソールから数十個のアラームを作成するとなると
    気が遠くなりますが、CLIを使えば素早く設定が可能です。

  • マネージメントコンソールに表示されないメトリクスもアラーム設定が可能
    CloudWatchでは過去に一度もデータ送信のないメトリクスはマネージメントコンソールから
    アラーム設定を行えませんが、CLIなら設定が可能です。

設定方法

CLIからアラームを作成する場合「aws cloudwatch put-metric-alarm」
コマンドを使って、新規アラームの作成と既存のアラームの修正を行います。

例として、EC2のCPU使用率が5分平均90%以上になった場合のアラームを
作成する場合、以下のようなコマンドラインになります。

aws cloudwatch put-metric-alarm \
--alarm-name "CPU使用率監視" \
--alarm-description "EC2のCPU使用率監視" \
--alarm-actions SNSトピックのARN \
--ok-actions SNSトピックのARN \
--namespace AWS/EC2 \
--dimensions "Name=InstanceId,Value=インスタンスID" \
--metric-name CPUUtilization \
--threshold 90 \
--comparison-operator GreaterThanOrEqualToThreshold \
--period 300 \
--evaluation-periods 1 \
--datapoints-to-alarm 1 \
--statistic Average \
--treat-missing-data missing \

それぞれのパラメータの意味について以下説明していきます。

--alarm-name "CPU使用率監視" \
--alarm-description "EC2のCPU使用率監視" \

アラーム名と、アラーム通知に載る説明文を設定します。

--alarm-actions SNSトピックのARN \
--ok-actions SNSトピックのARN \

閾値超過時にアラームの通知先となるSNSトピックと
復旧した際の通知先となるSNSトピックのARNを設定します。

--namespace AWS/EC2 \
--dimensions "Name=InstanceId,Value=インスタンスID" \
--metric-name CPUUtilization \

CloudWatchメトリクスの名前空間、監視対象を指定するためのディメンション
監視するメトリクス名を設定します。

namespaceはEC2なら「AWS/EC2」、RDSなら「AWS/RDS」のようになります。

dimensionsは特定のEC2インスタンスを指定する場合、NameをInstanceId
Valueには対象インスタンスのIDを記載します。

metric-nameは監視するメトリクスの名前を記載します。

それぞれに設定すべき値はCLIの「aws cloudwatch list-metrics」コマンドで
確認したり、マネージメントコンソールからも確認することが出来ます。

        {
            "Namespace": "AWS/EC2",
            "MetricName": "CPUUtilization",
            "Dimensions": [
                {
                    "Name": "InstanceId",
                    "Value": "i-****************"
                }
            ]
        },

対象メトリクスを選択し、[発信元]から確認出来ます。

--threshold 90 \
--comparison-operator GreaterThanOrEqualToThreshold \

アラームの閾値と検知の条件を設定します。

thresholdには閾値なる数字を記載し、comparison-operatorには以下の検知条件を
英語で記載します。

  • 超える(GreaterThanThreshold)
  • 以上(GreaterThanOrEqualToThreshold)
  • 未満(LessThanThreshold)
  • 以下(LessThanOrEqualToThreshold)
--period 300 \
--evaluation-periods 1 \
--datapoints-to-alarm 1 \

periodは秒単位で記載し、300が指定された場合は5分あたりに1つのメトリクスを評価します。

evaluation-periodsはアラーム状態を決定するために必要とするデータポイントの数を設定します。

datapoints-to-alarmはevaluation-periodsで必要とするデータポイントのうち
datapoints-to-alarmに設定したデータポイント数が閾値を超過していた場合
アラーム状態に移ります。

上記設定の場合は、5分間で1度データポイントが閾値を超過した場合アラーム状態になります。

periodが60、evaluation-periodsが3、datapoints-to-alarmが2 で設定した場合は
1分×3の3分間のデータポイントのうち、2つ閾値を超過していた場合アラーム状態になります。

--statistic Average \
--treat-missing-data missing \

データポイントの統計方法と、欠落したデータポイントの扱いを設定します。

statisticは以下のいずれかを設定します。

  • Average(平均)
  • Maximum(最大)
  • Minimum(最小)
  • SampleCount(サンプル数)
  • Sum(合計)

欠落したデータポイントの扱いには以下のいずれかを設定します。

  • breaching (欠落しているデータポイントは、閾値を超えた扱いとされる)
  • notBreaching (欠落しているデータポイントは、閾値を超えていない扱いとされる)
  • ignore(欠落データを無視し、アラーム状態が維持されます)
  • missing(欠落データを見つからないものとする。アラーム評価範囲内のすべてのデータポイントが欠落している場合はINSUFFICIENT_DATAの状態に移行する)

アラームの設定後は、以下コマンドで設定したアラームの内容を確認出来ます。

aws cloudwatch describe-alarms --alarm-names [アラーム名]

以上が、AWS CLIによるCloudWatch Alarmの設定方法でした。

参考

put-metric-alarm
Amazon CloudWatch でのアラームの使用

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA