aws-cliからCloudWatchアラームを確認、作成、削除する方法について説明していきます。
CloudWatchアラームをcliから設定すると、一括設定や再設定が非常に楽になります。
大体の場合、アラーム設定は一回作って終わりということはあまりないです。
名称をちょっと変えたいとか、閾値を修正したいとか、対象のリソース名が変わったとか、そういうことが起こるものです。
そのたびにいちいちコンソールから手動で変えるのは結構しんどいです。
特に、対象のシステムが大きくなればなるほど、その手間は増えていきます。
なので、設定は最初からcliで行う前提で進めていくのがおすすめです。
aws-cliの設定方法については以下を参照ください。
確認
まずは、一番簡単な確認のコマンドから見ていきましょう。
これは、すでに存在するアラームの設定内容を確認するためのコマンドです。
aws cloudwatch describe-alarms --profile prod --alarm-names [アラーム名]
作成・変更
作成・変更のコマンドはパラメータの数が多く少し複雑です。
このコマンドは新規作成だけでなく、既存のアラームの変更も可能です。
※見やすいように改行を入れています。 aws cloudwatch put-metric-alarm // アラームのメタ情報 --alarm-name [アラームの名称] --alarm-description '[アラームの説明]' --alarm-actions [通知するSNSのarn] // 監視対象のメトリクス情報 --namespace [CloudWatchのメトリクスの名前空間] --dimensions [CloudWatchメトリクスのディメンジョン名] --metric-name [監視対象のメトリクス名] // 監視条件情報 --threshold [閾値] --comparison-operator [アラーム条件(越えたら発報するのか、下回ったら発報するのかなど)] --evaluation-periods [監視するデータポイント数(分母)] --datapoints-to-alarm [監視するデータポイント数(分子)] --period [1データポイントの期間(秒)] --statistic [データポイントの種類] --treat-missing-data [欠落データポイントの扱い] ※パラメータは省略可能なものも含んでいます。
パラメータの数が多いので、セクションに分けて見ていきましょう。
アラームのメタ情報
アラームそのものの設定についての情報です。
--alarm-name
アラームの名前を表します。
大量のアラームを作成する場合は、後から探しやすくするために命名規則を設けておくとよいでしょう。
--alarm-description
アラームの説明を入力することができます。
1000文字くらい入力することが可能です。
こちらも名称と同じようにフォーマッティングをしておくといいでしょう。
アラームの説明や発生する原因、対応手順などがあるといいですね。
--alarm-actions
通知するSNSトピックのarnを指定します。
そのトピックに紐づくチャネル(Eメールアドレスなど)に通知が行きます。
監視対象のメトリクス情報
どのメトリクスを監視するかについてを設定します。
--namespace
メトリクスの名前空間を定義します。
例えば、「AWS/ECS」とか「AWS/EBS」とかですね。
以下に一覧としてまとまっています。
--dimensions
{ "Name": "[Name]", "Value": "[Value]" }
namespaceがAWSのサービスを定義するものだとしたら、これはそのサービスの中のどのインスタンスを監視するのかに当たります。
例えば、EC2のどのインスタンスを対象とするのかといったイメージです。
ここの指定方法はサービスごとに異なるので、手動で設定したアラームに対してdescribeコマンドを使用して、実際の値を見てみるのが早いです。
--metric-name
監視対象のメトリクス名を指定します。
CPUUtilization(CPU使用率)やMemoryUtilization(メモリ使用率)などがあげられます。
このメトリクスもサービスによって指定できるものが異なるため、実際に設定したものに対しdescribeコマンドを使用して確認してみるのが良いです。
監視条件情報
最後に最も理解するのが難しい、監視条件情報についてです。
--threshold
監視の閾値を設定します。
例えば、「CPU使用率が90%を越えたら~」という条件を指定する場合は、ここを90に指定します。
ただし、ここの単位は対象のメトリクスに依存します。
例えば、先ほどの例だと、CPU使用率だとメトリクスの単位が1%なので、90と指定すれば90%と判定してくれます。
しかし、使用可能なメモリなどは、MB単位だったりするので、10GBを指定したい場合は、10000などと指定する場合があります。
メトリクスの単位に注意しつつ閾値を設定してください。
--comparison-operator
上回ったらアラートなのか、下回ったらアラートなのかなどを指定します。
規定値がいくつかあり、この中から選択する形式になります。
GreaterThanThreshold | 上回る |
---|---|
GreaterThanOrEqualToThreshold | 以上 |
LessThanOrEqualToThreshold | 以下 |
LessThanThreshold | 下回る |
--evaluation-periods、--datapoints-to-alarm 、--period
どの期間閾値異常が起こったらアラートを上げるかを設定します。
--periodは、データ計測の単位を表します。
60秒の場合、1分間を1データポイントとします。
--evaluation-periodsは分母、--datapoints-to-alarmは分子を表します。
例えば、--periodが60秒(=1分)、evaluation-periodsが10、datapoints-to-alarmが5の場合、「10分間に5分以上閾値異常が発生した場合、アラートを上げる」という設定になります。
--periodが30秒になれば、「5分間に2分30秒以上閾値異常が発生した場合、アラートを上げる」という設定になります。
(※厳密に秒数で見ているわけではなく、10回データを取得したときに、5回以上閾値異常が発生したらアラートを上げます。
そのデータを取得するタイミングがperiodに当たります。
上記はわかりやすくするために、多少正確でない表現を用いています。)
--statistic
データの統計を表します。
CloudWatchのここから選択できる項目になります。
指定する際は以下の項目値から選択します。
SampleCount | サンプル数 |
---|---|
Average | 平均 |
Sum | 合計 |
Minimum | 最大 |
Maximum | 最小 |
--treat-missing-data
データを取得できなかった場合のデータポイントの扱いについて定義します。
breaching | 欠落データを不正 (しきい値を超えている)として処理 |
---|---|
notBreaching | 欠落データを適正 (しきい値を超えていない)として処理 |
ignore | 欠落データを無視(アラーム状態を維持する)として処理 |
missing | 欠落データを「見つかりません」として処理 |
その他のパラメータについて
その他のパラメータや詳しい動作仕様については以下を参照ください。
削除
削除は以下のコマンドで実施可能です。
aws cloudwatch delete-alarms --alarm-names [アラーム名]
有効・無効
リリースやメンテナンスなどで削除はしたくないけれど、一時的に無効にしたいなどの場合に使用します。
aws cloudwatch disable-alarm-actions --alarm-name [アラーム名]
aws cloudwatch enable-alarm-actions --alarm-name [アラーム名]