はじめに
Amazon CloudWatchはAWSリソースのパフォーマンスモニタリングに最適なサービスです。
SNSと組み合わせることでリソースの状態に合わせて通知を送ることもできます。
今回は、EC2のCPU使用率が高くなったらメール通知を実施する仕組みを構築してみます。
大まかなやること
- EC2作成
- SNSトピック作成
- CloudWatchアラーム作成
- 動作確認
では、やっていきましょう。
本題
EC2作成
EC2作成に関してはこちらに詳しくまとまっているので詳細は割愛します。
AWS EC2インスタンスを作成する(AMI:Amazon Linux / Amazon EBSの設定など)
Amazon Linux 2 AMIを使用してEC2インスタンスを作成します。
タグ設定をするとモニタリングの時にわかりやすくて良いです。
キー:NAME
値:CloudWatchSample
セキュリティグループにSSHのルールを追加しておきましょう。
タイプ:SSH
ソース:カスタム・もしくはマイIP
CPUに負荷をかける準備
EC2インスタンスに接続し、順番にコマンドを実行してストレスコマンドをインストールします。
sudo yum update -y sudo amazon-linux-extras install epel sudo yum install -y stress
SNSトピック作成
SNSコンソールへ移動します。
左部メニューのトピックをクリックし、トピックの作成をクリックします。
設定項目を入力していきます。
名前:CPUUtilizationSample
表示名:CPUUtilizationSample
残りの項目はデフォルトで大丈夫です。
トピックの作成をクリックします。
トピックが正常に作成されたことを確認します。
サブスクリプション作成
トピックの詳細画面からサブスクリプションの作成をクリックします。
設定項目を入力していきます。
プロトコル:Eメール
エンドポイント:通知したいEメールアドレス
サブスクリプションの作成をクリックします。
サブスクリプション登録確認のメールが届きます。
Confirm subscriptionをクリックします。
このような画面が表示されたらサブスクリプションの登録は完了です。
CloudWatchメトリクス確認
CloudWatchコンソールへ移動します。
左部のメトリクスをクリックし、全てのメトリクスタブからEC2→インスタンス別メトリクスをクリックします。
先ほど作成したインスタンスのCPUUtilizationをチェックします。
見つからない場合は検索フォームに「MetricName="CPUUtilization"」を指定するなどして絞り込みます。
CPU使用率のグラフが見れると思います。
CloudWatchアラーム作成
左部のアラームをクリックし、アラームの作成をクリックします。
メトリクスの選択をクリックします。
メトリクスの確認と同様にEC2→インスタンス別メトリクスをクリックします。
先ほど作成したインスタンスのCPUUtilizationをチェックします。
メトリクスの選択をクリックします。
メトリクスと条件を設定していきます。
- メトリクス
期間:1分 - 条件
.. よりも:30
他の項目はデフォルトで大丈夫です。
この設定により、1分間のCPUの値の平均が30よりも大きい場合にアラームトリガーをキックする条件となります。
アクションの設定
SNSトピックの選択:既存のSNSトピックを選択
通知の送信先:作成したSNSトピック
次へをクリックします。
アラームの名前を入力します。
アラーム名:CPUUtilizationAlarm
アラームの説明欄は任意です。
次へをクリックします。
アラームのプレビューが表示されます。
設定した条件などが確認できます。
プレビューを確認してアラームの作成をクリックします。
アラームが作成されたことを確認できます。
動作確認
EC2インスタンスに接続しているターミナルに戻ります。
ストレスコマンドを実行してCPU使用率を増加させます。
sudo stress --cpu 10 -v --timeout 400s
しばらく待ってからCloudWatchコンソールに戻ります。
左部のアラームをクリックし、作成したCPUUtilizationAlarmをクリックします。
グラフからCPU使用率が閾値を超過していることを確認できます。
さらに、SNSから通知されたメールが届いていることも確認できます。
おまけ
ダッシュボード作成
左部のダッシュボードをクリックします。
ダッシュボードの作成をクリックします。
ダッシュボード名:CPUUtilizationDashboard
を入力し、ダッシュボードの作成をクリックします。
線を選択して、設定をクリックします。
メトリクスの確認と同様にEC2→インスタンス別メトリクスをクリックします。
先ほど作成したインスタンスのCPUUtilizationをチェックします。
ウィジェットの作成をクリックします。
メトリクスに応じたダッシュボードを作成することができました。
CPU使用率が下がったことも確認できます。
おわりに
CloudWatchを使用してパフォーマンスに応じてメール通知できるようになりました。
監視要件や実現したいことに合わせて条件やモニタリングリソースをアレンジしてみましょう。