CloudWatchを利用したEC2監視設定の構築 ──CloudWatchによるログ監視とメール発報──

こんにちは、インフラグループの野口です。
社内サーバーをEC2(AWSの仮想サーバー)で自社構築した際に、AWSで提供されているCloudWatchサービスを利用して、EC2の異常を検知した際に社内担当者にメールアラートを発報する監視を作成しました。
社内サーバー上の CloudWatch エージェントにプロキシを設定することで、サーバーはインターネット接続せず、エージェントのみがプロキシ通信でEC2の情報収集をするように構成しました。

今回実装したのは、パフォーマンス監視(CPUの利用率、メモリの利用率、ディスクの利用率)、プロセス監視(SQL)、イベントログ監視(Windowsイベントログ)の大きく分けて三つの監視です。

目次

1  CloudWatch 監視アラームの仕組み
2  CloudWatch エージェント導入の為の IAM ロール作成
3  SystemsManager を利用した CloudWatch のインストール
4  CloudWatch の Config 設定
5  パフォーマンス監視(CPUの利用率、メモリの利用率、ディスクの利用率)のアラーム作成
6  プロセス監視(SQL)のアラーム作成
7  イベントログ監視(Windowsイベントログ)のアラーム作成

本記事では、目次の1~3についてご案内いたします。4~7は別記事で掲載予定です。

1 CloudWatch 監視アラームの仕組み

CloudWatchは、EC2にエージェントをいれて、ログの収集を行い、エラーログの件数や、
クエリによる計算で出したパフォーマンスの値がアラームルールに設定された、閾値を超えるとメール発報をするような仕組みになっています。

2 CloudWatch エージェント導入の為の IAM ロール作成

今回は社内ネットワークのサーバーになる為、社内のプロキシ経由でSystems Managerを使ってCloudWatchエージェントを配信します。また Systems Managerの機能である セッションマネージャ経由でパフォーマンスを取得します。
その為、EC2インスタンスでCloudWatchエージェントを実行する許可とEC2からセッションマネージャへのアクセス許可を持ったロールを作成します。

  1. AWSのIAMを開き、ダッシュボードの左上アイコンより、「アクセス権限」>「ロール」をクリックします。

    ロール

  2. 画面右上の「ロールを作成」をクリックします。

    ロール作成

  3. 信頼されたエンティティを選択で「AWSのサービス」のまま、サービスまたはユースケースで「EC2」を選択し、次へ進みます。

    選択画面

  4. 許可を追加で「CloudWatchAgentServerPolicy」を検索し、同一ポリシー名の左にあるボックスにチェックを入れます。

    EC2

  5. 同様に「AmazonSSMManagedInstanceCore」を検索し、同一ポリシー名の左にあるボックスにチェックを入れて「次へ」をクリックします。

    CloudWatchAgentServerPolicy

  6. 任意のロール名を入れて、右下の「ロールを作成」をクリックします。

    AmazonSSMManagedInstanceCore

    ロール作成

  7. IAMをアタッチするため、AWSのEC2を開き、ダッシュボードの左上アイコンより、「インスタンス」>「インスタンス」にアクセスします。

    インスタンス

  8. 対象のインスタンスの左ボックスにチェックを入れ、「アクション」をクリックします。

    ロール作成

  9. 「セキュリティ」をクリックし、「IAMロールを変更」をクリックします。

    IAMロールを変更IAMロールを変更

  10. 先ほど作成したロールを選択して、「IAMロールの更新」をクリックします。

    IAMロールの更新

以上で、CloudWatch導入の為に必要なロールを作成することができました。

3 SystemsManager を利用した CloudWatchの インストール

  1. AWS Systems Managerを開き、ダッシュボードの左上アイコンより、「ノードツール」>「Run Command」をクリックします。

    Run Command

  2. 画面の「コマンドを実行する」をクリックします。

    コマンドを実行する

  3. キーワード検索に「AWS-ConfigureAWSPackage」入力しEnterを押し、実行スクリプトを検索し、左の〇にチェックを入れる。

    AWS-ConfigureAWSPackage

  4. コマンドパラメータのNameに「AmazonCloudWatchAgent」を設定する。

    AmazonCloudWatchAgent

  5. ターゲットを「インスタンスを手動で選択する」をチェックし、サーバーの左のチェックボックスにチェックを入れる。

    AmazonCloudWatchAgent

  6. 出力オプションで、コマンド出力を「CloudWatch出力」でチェックし、ロググループ名に任意の名前を入力します。

    インスタンスを手動で選択する

  7. 右下の実行ボタンをクリックします。

    実行

  8. ステータスが「成功」になるまで待ちます。

    ステータス

  9. AWSのEC2を開き、ダッシュボードの左上アイコンより、「インスタンス」>「インスタンス」にアクセスします。

    インスタンス

  10. フィルターで対象のインスタンスの左ボックスにチェックを入れ、「アクション」をクリックします。

    ロール作成

  11. 対象サーバーの「モニタリングとトラブルシューティング」>「詳細モニタリングを管理」をクリックします。

    モニタリングとトラブルシューティング詳細モニタリングを管理

  12. 「詳細モニタリング」の有効化にチェックを入れ、「確認」をクリックします。

    詳細モニタリング

ここまでで、監視対象サーバーのログ取得の準備、サーバーのパフォーマンスのモニタリンググラフ表示の準備が完了しました。
次回、CloudWatchエージェントがログ取得するためのConfigの設定と、各項目の監視アラームの作成についてご紹介します。