次の記事では、EC2のストレージ使用率をCloudWatchを使ってモニタリングする方法をご紹介しました。
EC2のストレージ(EBS)使用量をClaudWatchでモニタリングする方法
今回はさらに発展して、EC2のストレージ使用率が一定の値を超えたらEmailで通知する、という方法をご紹介したいと思います。
CloudWatchでストレージ使用率を監視するだけでは、
使用率が今どのくらいなのかを逐次見にいかなくてはいけません。
ですが、CloudWatchアラームとSNSを組み合わせて利用することによって、
ストレージの使用率が一定の値を超えたら自動的にEmailでお知らせしてくれるという仕組みを構築することが可能です。
使用率が一定の値を超えたら通知する仕組み
今回肝となるのは”使用率が一定の値を超えたら”という条件設定に関する部分と
Emailで通知するという部分になります。
AWSでは以下の2つのサービスを使うことによって、これらを実現することが可能となります。
- 条件設定に関する部分:CloudWatch アラーム
- 通知する部分:SNS(Simple Notification Service)
CloudWatchアラームとは?
CloudWatch内に蓄積した特定のメトリクスデータに対して、
条件を設定することでSNSをキックすることができる検知サービスです。
例えばCPU使用率データというメトリクスに対して、
“CPU使用率が80%を超えたら”SNSをキックする、といった条件設定をしておくことで
実際にCPU使用率が80%を超えたらSNSがキックされます。
さらに、この超え方にも一定の設定ができます。
例えば、スパイク負荷は無視したいので、定常的に80%を超えたら検知したいという場合、80%超えが○回連続で起こったらSNSをキックする、というような設定方法が可能です。
SNSとは?
AWSのメッセージング(通知)サービスです。
あらかじめ登録されたEmailアドレスやSQS、Lambda等に対して、受け取ったメッセージを通知します。
よくEmail通知する、というとSESと混同される方がいらっしゃいますが、
SESとSNSとはAWSサービスも別ですし、役割も異なります。
※SESとSNSの違いについてご興味がありましたら、次の記事をご参照ください。
Amazon SESとは?使いどころとSNSとの違い
尚、SNSでEmail通知を使用する場合、
メール本文のカスタマイズができません。
これを回避するには、さらにLambdaとSESを組み合わせることで、
メール本文をカスタマイズしてメールを送るという方法があります。
そのお話はまた別の機会にさせていただきます。
CloudWatchアラームとSNSの設定方法
それでは、CloudWatchアラームとSNSを使って、
ストレージ使用率が一定の値を超えたら、それを検知し、
さらにEmailで通知する設定方法についてご説明したいと思います。
まずは、SNSの通知設定から。
SNSの設定
(1)SNSコンソール画面を開きます
(2)[トピックの作成]をクリックします
(3)”トピック名”と”表示名”を入力して[トピックの作成]をクリックします
※この表示名はメールの差出人名として使われます。
(4)[サブスクリプションの作成]をクリックします
(5)プロトコルを”Email”へ変更し、”エンドポイント”欄に通知先のEmailアドレスを入力、
[サブスクリプションの作成]をクリックします
(6)エンドポイントに指定したアドレス宛へ、下記のような認証メールが届きます。
“Confirm subscription”と書かれたリンクをクリックすれば認証完了となり通知が行われるようになります。
以上でSNSの設定は完了です。
次はCloudWatchアラームの設定を行いましょう。
CloudWatchアラームの設定
(1)CloudWatchコンソール画面を開きます
(2)左ナビゲーションペインから[アラーム]をクリックします
(3)[アラームの作成]をクリックします
(4)[メトリクスの選択]をクリックします
(5)[Linuxシステム]→[Filesystem,InstanceId,MountPath]をクリック。
対象のインスタンスIDのメトリクスを選択して、[メトリクスの選択]をクリックします
(6)アラームの名前と説明を入力します
(7)条件を指定します。
今回は「ディスク使用率が70%を超えたらEmail通知する」という条件としますので、”>=70″となるように入力します。
“期間”欄は「連続で何回条件に合致したら」というような設定が行える箇所です。
今回は1回でも超えたら検知することとしますので、1/1とします。
※連続で2回超えたらという場合は、2/2と設定します。
(8)欠落データの処理方法は今回は”無視”とします。
欠落データというのは、メトリクスデータがCloudWatchへ届かない場合の状態です。
(例えば今回のディスク使用率メトリクスデータは、インスタンスが動いていればCronによってCloudWatchへ送信されますが、インスタンスがダウンしていたらデータは送信されませんのでCloudwatchへ届きません。このよう状況を欠落データと言います。)
ここでは欠落データとなった場合、アラートをあげますか?あげませんか?という設定が行います。
選択肢のそれぞれの意味は以下の通りです。
- 適正:正常状態とみなすためアラートはあげない
- 不正:異常状態とみなすためアラートをあげる
- 無視:欠落データ前と同じ状態とみなす
(9)”通知先の送信先”欄に先ほど作成したSNSのトピックを設定します
(10)[保存]をクリックします
以上でCloudWatchアラームの設定も完了です。
ディスク使用率が70%を超えるように、対象のEC2内にダミーファイルを作成したところ下記のようなメールが届きました。
※ちなみにダミーファイルの作成コマンドは以下のコマンドです。
(3GBのダミーファイルを作成しています)
1 |
dd if=/dev/zero of=3G.dummy bs=1M count=3000 |
本記事の設定をすることで、EC2のストレージがパンクする前にEmailでお知らせする仕組みを整えることが可能です。
非常に便利な設定ですので、ぜひお試しください。
以上、hidesanでした!