皆さんお疲れ様です!椎名です。
当ブログではWordPressベースとなっておりますが、皆さんご存知でしたでしょうか。
WordPressをはじめるには様々の方法がありますが、AWSで手軽に始められるのは、WordPress用AMIを用いてサーバーを構築する方法です。
今回は、WordPress用サーバーを構築する方法を紹介する……のではなく、Bitnamiが提供しているWordPress用AMIで起動したインスタンスに、Amazon CloudWatchエージェントをインストールし、メモリー監視アラームを設定してみました。
はじめに
イメージ図
- 最終目標は、インスタンスのメモリーとディスク使用率を監視し、メモリー使用率が80%を超えたら、SNSでサブスクリプションされているメールアドレスに通知を行います
- 使用するAMIのIDは「0a8820f2807870405」です
- BitnamiのAMIのOSはdebian系なため、コマンドは通常のAmazon Linuxと異なります。今回の検証は「Bitnami Documentation」を参照して実行しました。
事前準備
- バージョン5.2以上のtera termをインストールします。バージョンが低いとインスタンスと接続できない場合がありますので、最新版へのアップデートを推奨します。
- パブリックサブネットが含まれているVPCを作成します。EC2インスタンス用のセキュリティグループを作成し、22ポートを解放します。
- EC2用のRSAタイプキーペアを作成し、「.pem」形式のファイルをローカルにダウンロードします。
- EC2用のロールを作成し、「CloudWatchAgentServerPolicy」ポリシーを追加します。
- 構築用のIAMユーザーのアクセスキーを作成します。
- 通知を受けられるメールアドレスを用意します。
注意! 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エージェントの導入について検証してみましたが、ほかのコマンドについても色々勉強していきたいところです。
今回のご紹介は以上となります。
では皆さん、よいクラウドライフを!