はじめに
EC2をCloudWatchで監視するというテーマで記事を書いてたのですが、記事の量が多くなってしまったので2つに記事を分割しました。
記事 | 内容 |
---|---|
ログファイルを確認する | CloudWatch内でサーバー内のログファイルを確認する |
メモリ使用率を確認&アラームを設定する(本記事) | メモリ使用率をCloudWatchにて確認して、異常値になったらアラームを出す |
今回はメモリ使用率をCloudWatchで確認&アラームを出す方法を見ていきます。また実際にメモリに負荷をかけてアラームが出るか確認もしていきます。(メモリ使用率以外にも、同様に方法でディスク使用率等も設定可能です)。
目次
メモリ使用率を監視するためのメトリクスの作成
メトリクスの作成自体はamazon-cloudwatch-agent
というソフトを用いて設定していくのですが、こちらの前編の記事にて、やり方を記載しています。
そのため、本記事ではやり方を割愛します。
【補足】
メトリクスとは、CloudWatchが各リソース(EC2インスタンス等)について監視するパラメーターのことをいいます。
これには大きく2種類あります。
種類 | 説明 | パラメーターの例 |
---|---|---|
標準メトリクス | EC2を立ち上げた時に標準的に設定してくれるメトリクス | CPU使用率, インスタンスのステータスチェック等 |
カスタムメトリクス | ユーザーが自分で作成する必要のあるメトリクス | メモリ使用率, ディスク使用率等 |
今回はメモリ使用率をCloudWatchにて確認したいので、カスタムメトリクスを作成する必要があります。 |
ということで、次からメモリ使用率の確認やアラームの設定を見ていきます。
CloudWatchにてメモリ使用率を確認する
カスタムメトリクスを設定すると、CloudWatchの画面にてCWagentという名前空間のメトリクスがあることがわかります。
CWAgent => ImageId,InstanceId,InstanceTypeと進み、メトリクス名がmem_used_percent
のチェックボックスに✓
をつけます。
そうするとこのように値が出ることがメモリ使用率のグラフが確認できます。
メモリ使用率を確認することができたので、次にアラームを設定していきましょう。
アラームの設定をする
- CloudWatchのアラーム画面に行きます。
アラームの作成 => メトリクスの選択から該当するメトリクス(mem_used_percent
)にチェックをつけます。
その後、メトリクスの選択というボタンを押しましょう。
- 次にアラームを出す条件を設定していきます。
設定したら次へボタンを押します。
今回は以下のような設定で進めてきます。
設定 | 設定値 |
---|---|
統計 | 平均値 |
期間 | 1分 |
しきい値の種類 | 静的 |
条件 | 80よりも大きい |
-
通知の設定は今回はしません。特に設定せずに次へボタンを押します。
-
名前と説明をつけて設定は完了です。
今回は名前も説明も両方test-alarm
とつけました。
これで設定完了です。
完了するとCloudWatchの画面に設定したアラームが表示されます。
設定値やアラームの状態を確認することができます。今は特にメモリに負荷はかけていないので状態がok
になっていますね。
- 試しにメモリに負荷をかけてアラームが出るか確認してみましょう。
今回はStressという負荷テストツールを用います。
まずはStressをインストールしていきます。
$ sudo amazon-linux-extras install -y epel
$ sudo yum -y install stress
- どのくらいのメモリを確保すればエラーが出るかtopコマンドにより確認します。
$ top
# 中略
KiB Mem : 454044 total, 275236 free, 108184 used, 70624 buff/cache
使用していないメモリが270,000 KiBくらいありそうなので、このメモリの分を確保してしまいます。
$ stress -m 1 --vm-bytes 270000000 --vm-hang 0 -q &
しばらくするとCloudWatchにてエラーが出てきました。
確認できたので、processをkillしておきます。
$ jobs
[1]+ 実行中 stress -m 1 --vm-bytes 270000000 --vm-hang 0 -q &
$ kill %1
これで以上になります。
ここまで読んでくださりありがとうございました。
少しでもみなさんのお力になれたら幸いです!
p.s.
このアラームをSlackに通知したいという場合はAWSのイベントをslackに通知するも参考にしてみてください!!