BBH
-Biz Branding Hub-
投稿日 : 
2019/08/29
更新日 : 
2019/08/29

CloudWatchアラームをaws-cliで設定する方法とそのパラメータについて

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

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

上回ったらアラートなのか、下回ったらアラートなのかなどを指定します。
規定値がいくつかあり、この中から選択する形式になります。

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のここから選択できる項目になります。

CloudWatchのstatistic

指定する際は以下の項目値から選択します。

statistic設定項目

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

--treat-missing-data

データを取得できなかった場合のデータポイントの扱いについて定義します。

–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 [アラーム名]

Profile

管理人プロフィール

都内でITエンジニアをやってます。
変遷:中規模SES→独立系SIer→Webサービス内製開発
使用技術はその時々でバラバラですが、C#、AWSが長いです。
どちらかと言うとバックエンドより開発が多かったです。
顧客との折衝や要件定義、マネジメント(10名弱程度)の経験あり。
最近はJava+SpringBootがメイン。

Recommend