はじめに
CloudWatchでアラームの検証をやってみます。
EC2インスタンスのCPU使用率が条件を満たしたらメールを送信するようにします。
- CPU使用率の平均が30パーセントを超えた時
- 5回中3回で閾値を超えた時
- 監視間隔は1分
作業の流れ
- EC2インスタンスの作成
- SNSの設定
- CloudWatchの設定
手順
1.EC2インスタンスの作成
以下のURLを参考にEC2インスタンスを作成して下さい。
https://it-study.info/aws-vpc-setup-method/
インスタンス作成後は「stress」ツールをインストールして下さい。
$ sudo amazon-linux-extras install epel
・・・
$ sudo yum -y install stress
・・・
2.SNSの設定
トピックの作成
SNSサービスにアクセスします。
左サイドバーから「トピック」をクリックします。
「トピックの作成」ボタンをクリックします。
以下の通り設定します。
・タイプ:スタンダード
・名前:Mail
「トピックの作成」ボタンをクリックします。
サブスクリプションの作成
左サイドバーから「サブスクリプション」をクリックします。
「サブスクリプションの作成」ボタンをクリックします。
以下の通り設定します。
・トピックARN:作成したトピックを選択(Mail)
・プロトコル:Eメール
・エンドポイント:任意のメールアドレス
「サブスクリプションの作成」ボタンをクリックします。
入力したメールアドレスにAWSからメールが届きます。「Confirm subscription」リンクをクリックします。
件名:AWS Notification - Subscription Confirmation
---------------------------------------------------------------------------
You have chosen to subscribe to the topic:
arn:aws:sns:ap-northeast-1:920319510847:Default_CloudWatch_Alarms_Topic
To confirm this subscription, click or visit the link below (If this was in error no action is necessary):
Confirm subscription
Please do not reply directly to this email. If you wish to remove yourself from receiving all future SNS subscription confirmation requests please send an email to sns-opt-out
ブラウザに以下のメッセージが表示されたら確認完了です。
3.CloudWatchの設定
CloudWatchサービスにアクセスします。
左サイドバーから[アラーム]-[すべてのアラーム]をクリックします。
「メトリクスの選択」ボタンをクリックします。
「EC2」をクリックします。
「インスタンス別メトリクス」をクリックします。
メトリクス名が「CPUUtilization」になっている項目をチェックし、「メトリクスの選択」ボタンをクリックします。
以下の通り設定します。
・統計:平均値
・期間:1分
・しきい値の種類:静的
・CPUUtilization が次の時…:より大きい
・… よりも:30
・アラームを実行するデータポイント:3/5
・欠落データの処理:欠落データを見つかりませんとして処理
「次へ」ボタンをクリックします。
・アラーム状態トリガー:アラーム状態
・次の SNS トピックに通知を送信:既存の SNS トピックを選択
・通知の送信先:Mail
「次へ」ボタンをクリックします。
・アラーム名:TestAlarm
・アラームの説明:Alarm test.
「次へ」ボタンをクリックします。「アラームの作成」ボタンをクリックします。
動作確認
EC2インスタンスにsshで接続します。stressツールを使用してCPUに負荷をかけます。
$ stress -c 1 -t 300s
stress: info: [414] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd
CloudWatchでアラーム状態になっていることを確認します。
AWSからアラームメールが届いていることを確認します。
件名:ALARM: "TestAlarm" in Asia Pacific (Tokyo)
---------------------------------------------------------------------
You are receiving this email because your Amazon CloudWatch Alarm "TestAlarm" in the Asia Pacific (Tokyo) region has entered the ALARM state, because "Threshold Crossed: 1 out of the last 5 datapoints [39.33278688524591 (26/11/22 15:59:00)] was greater than the threshold (30.0) (minimum 3 datapoints for OK -> ALARM transition)." at "Saturday 26 November, 2022 16:05:10 UTC".
View this alarm in the AWS Management Console:
https://ap-northeast-1.console.aws.amazon.com/cloudwatch/deeplink.js?region=ap-northeast-1#alarmsV2:alarm/TestAlarm
Alarm Details:
- Name: TestAlarm
- Description: Alarm test.
- State Change: OK -> ALARM
- Reason for State Change: Threshold Crossed: 1 out of the last 5 datapoints [39.33278688524591 (26/11/22 15:59:00)] was greater than the threshold (30.0) (minimum 3 datapoints for OK -> ALARM transition).
- Timestamp: Saturday 26 November, 2022 16:05:10 UTC
- AWS Account: ************
- Alarm Arn: arn:aws:cloudwatch:ap-northeast-1:************:alarm:TestAlarm
Threshold:
- The alarm is in the ALARM state when the metric is GreaterThanThreshold 30.0 for at least 3 of the last 5 period(s) of 60 seconds.
Monitored Metric:
- MetricNamespace: AWS/EC2
- MetricName: CPUUtilization
- Dimensions: [InstanceId = i-0ca97267dbeaa3924]
- Period: 60 seconds
- Statistic: Average
- Unit: not specified
- TreatMissingData: missing
State Change Actions:
- OK:
- ALARM: [arn:aws:sns:ap-northeast-1:************:Mail]
- INSUFFICIENT_DATA:
--
If you wish to stop receiving notifications from this topic, please click or visit the link below to unsubscribe:
Unsubscribe
Please do not reply directly to this email. If you have any questions or comments regarding this email, please contact us at https://aws.amazon.com/support
stressツールで5分間、CPUに負荷をかけたのでアラームとメールの送信が確認できました。
もし2分間だけ負荷をかけた場合は「アラームを実行するデータポイント:3/5」に合致しないのでアラーム状態にならずメールも送信されません。
コメント