Bitnami AMIインスタンス(Debian)にAmazon CloudWatchエージェントをインストールし、メモリー監視アラームを設定してみた

皆さんお疲れ様です!椎名です。

当ブログではWordPressベースとなっておりますが、皆さんご存知でしたでしょうか。
WordPressをはじめるには様々の方法がありますが、AWSで手軽に始められるのは、WordPress用AMIを用いてサーバーを構築する方法です。

今回は、WordPress用サーバーを構築する方法を紹介する……のではなく、Bitnamiが提供しているWordPress用AMIで起動したインスタンスに、Amazon CloudWatchエージェントをインストールし、メモリー監視アラームを設定してみました。

はじめに

イメージ図

  • 最終目標は、インスタンスのメモリーとディスク使用率を監視し、メモリー使用率が80%を超えたら、SNSでサブスクリプションされているメールアドレスに通知を行います
  • 使用するAMIのIDは「0a8820f2807870405」です
  • BitnamiのAMIのOSはdebian系なため、コマンドは通常のAmazon Linuxと異なります。今回の検証は「Bitnami Documentation」を参照して実行しました。

事前準備

  1. バージョン5.2以上のtera termをインストールします。バージョンが低いとインスタンスと接続できない場合がありますので、最新版へのアップデートを推奨します。
  2. パブリックサブネットが含まれているVPCを作成します。EC2インスタンス用のセキュリティグループを作成し、22ポートを解放します。
  3. EC2用のRSAタイプキーペアを作成し、「.pem」形式のファイルをローカルにダウンロードします。
  4. EC2用のロールを作成し、「CloudWatchAgentServerPolicy」ポリシーを追加します。
  5. 構築用のIAMユーザーのアクセスキーを作成します。
  6. 通知を受けられるメールアドレスを用意します。

注意! AWS Marketplaceが提供するAMIを使用するため、サブスクリプションする必要があります。現時点ではソフトウェア料金はありませんが、将来的に変化する可能性がありますので、検証時にご注意ください。

AMIからインスタンスを作成


AMIでインスタンスを起動します。
作成したキーペアを選択し、パブリックIPの自動割り当てを有効化します。
用意したロールをアタッチします。

CloudWatchエージェントのインストール

SSH接続



teratermを起動し、EC2のパブリックIPで接続します。

user名は通常の「ec2-user」ではなく、「bitnami」なので、ご注意ください。

CloudWatchエージェントのインストール

wget https://s3.amazonaws.com/amazoncloudwatch-agent/debian/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb
sudo apt-get update && sudo apt-get install collectd

上記のコードを順番に流し、CloudWatchエージェントとcollectdデーモンのインストールを行います。

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

CloudWatch設定ウィザードを実行します。

色々設定を聞かれますが、ほとんどデフォルトで大丈夫なので、enterを連打します。
CPUのコアごとに監視するかについて、今回の監視対象はメモリーとディスクのため、noにします。

メトリクスセットによって含められるメトリクスが変わりますが、今回はBasicのままにします。メトリクスセット
ここで一度設定一覧が表示されます。問題なければ次に進みます。


「CloudWatchLogsエージェント」「ログファイル」「X-ray」は今回利用しませんので、すべてnoにします。
ここで二度目の設定一覧が表示されます。問題なければ次に進みます。


最後に設定をパラメーターストアに保存するかを聞かれます。今回は保存しませんのでnoにします。
これで設定ファイルの作成が完了しました。

CloudWatchエージェントの起動

sudo vi /home/bitnami/.aws /credentials
まず、AWS認証情報ファイルを作成するため、上記のコマンドを流します。

[default]
aws_access_key_id=自分のアクセスキーID
aws_secret_access_key=自分のアクセスキー
日本語の部分を書き換えて、ファイルに入力し、:wq!で保存します。

sudo vi /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml
上記のコマンドでCloudWatchエージェントの共通設定ファイルを編集します。
[credentials]の{file_name}部分を/home/bitnami/.aws/credentialsに変更して更新します。

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
CloudWatchエージェントを起動します。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
エージェントの状態を確認します。
statusがrunningになっていればオッケーです。

アラームの設定

メトリクスの確認

CloudWatch→メトリクス→すべてメトリクス→カスタム名前空間に「CWAgent」が表示されていることを確認します。


該当インスタンスにチェックを入れて、メモリーのグラフを確認できます。(グラフが点になっている場合、グラフ化したメトリクスに入り、期間を1分以下に変更してください。)

アラームの作成

メトリクス画面の「アラームの作成」をクリックします。




「トピックスの作成」をクリックしたら、メールボックスに認証のメールが届きますので、サブスクリプションを有効化してください。有効化しらた次に進みアラームの作成を完了します。

アラームのテスト

tera termに戻り、メモリーに負荷をかけます。

/dev/null < $(yes) &
/dev/null < $(yes) &
/dev/null < $(yes) &
/dev/null < $(yes) &
/dev/null < $(yes) &

topコマンドで負荷状況を確認できます

しばらくすると、アラーム通知のメールが来ましたら検証完了です。おめでとうございます。

最後に

bitnamiのAMIはDebian系OSで通常のAmazon Linuxのコマンドと異なるため、初めて触る時に色んな所でつまずきますよね。
とりあえず運用する上で必須と言っても過言ではないCloudWatchエージェントの導入について検証してみましたが、ほかのコマンドについても色々勉強していきたいところです。

今回のご紹介は以上となります。
では皆さん、よいクラウドライフを!

Last modified: 2024-04-17

Author