はじめに
AWS利用においてインスタンスの死活監視方法ではロードバランサーからのヘルスチェックや、単体だとCloud Watchのアラートなどの方法がある。
インスタンスが応答しない場合は上記の方法で検知可能だが、事前にインスタンスの状態を確認し、アラートを挙げられるように設定したい。特にディスク使用率はCloud Watchのデフォルトメトリクスに存在しないので事前に検知するには少し工夫が必要になる。
Cloud Watch Agentの導入
CWAの導入により、ディスク使用率やメモリ、プロセスについてもかなり詳細にロギングできるようになる。取得できるメトリクス一覧はこちら。
実装手順
実装手順は下記の4つが必要。
①監視対象であるインスタンスをEC2を作成
②インスタンスにIAMロールをアタッチする
③サーバにてCWA導入
④SSMコマンド実行
①監視対象であるEC2インスタンスを作成
EC2画面から監視対象のインスタンスを作成し、ami-idを控えておく。
利用者によってまちまちでもあるため、インスタンス作成方法は割愛。
②インスタンスにIAMロールをアタッチする
各サーバーで CloudWatch Agentを実行する上で必要な IAM ロールを作成するには
・CloudWatchAgentServerPolicy
・AmazonSSMManagedInstanceCore
管理者が Parameter Store に書き込むための IAM ロールを作成するには
・CloudWatchAgentAdminPolicy
・AmazonSSMManagedInstanceCore
が必要。何も考えたくなければ上記のポリシーを全てアタッチしたロールを作成すればOK。
作成したロールを、作成したインスタンスにアタッチする。
既にロールがアタッチされている場合は上記のポリシーを既存ロールにアタッチすればOK。
③サーバにてCWA導入
サーバにログインして、下記のコマンド実行。
#Cloud Watch agentのダウンロード
wget https://s3.ap-northeast-1.amazonaws.com/amazoncloudwatch-agent-ap-northeast-1/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
#パッケージインストール
sudo rpm -U ./amazon-cloudwatch-agent.rpm
#エージェント設定・起動
#上記コマンドにてwizardの質問にいくつか答えると勝手に設定ファイルのjsonを作成してくれる
#質問される内容に関してはコード外↓のwizard質問詳細を参照(基本デフォルトでOK)
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
#collectdのインストール
#サーバの統計情報を収集するためのソフトウェア
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install -y collectd
④SSMコマンド実行
AWSコンソールにログインし、AWS Systems Managerを開く。
AmazonCloudWatch-ManageAgentを選択
「コマンドを実行する」を選択し、「コマンドのパラメータ」を入力する
※青部分は任意の値を入力
実行し、「成功」するかを確認
上記すべて完了した時点で、AWSコンソールのcloud watchのメトリクスに、「すべてのメトリクス>CWAgent」が追加される
メトリクスを確認し、アラート等を設定すればインスタンスのリソース監視ができるようになる。
最後に
今回紹介したのはインスタンス単体を決めて監視をおく方法なので、opsworksやcloudformation、Autoscallingなどで追加されたインスタンスについて自動で監視が入るものではないのでデフォルトで監視されるようにするためには工夫が必要だ。
ディスクフルに陥ってしまう前に、しっかりと監視の体制を引いておくことはとても重要なので、CWAを上手に活用しよう