Amazon ECSのDockerコンテナ上で動作するサービス(Cassandra、Redis、MySQLなど、 その他の対応サービス )があれば、New Relicを使って、それらのサービスからのデータ、ホストからのデータ、コンテナからのデータをレポートすることができます。
要件
ECS上で動作しているサービスをモニターするには、以下の要件を満たす必要があります。
Amazon Linux、CentOS、またはRHELを実行する自動スケーリング ECSクラスターで、 インフラストラクチャエージェントの互換性と要件を満たしている 。
ECSタスクでは、 ネットワークモードを
none
またはbridge
に設定する必要があります(awsvpc
およびhost
はサポートされていません)。ECS上で動作するサポートされたサービスで、当社の統合要件を満たすもの。
重要
AWSファーゲートはサポートされていません。
有効にする方法
ECSで動作しているサービスのモニタリングを有効にする方法を説明する前に、その概要を説明します。
- Amazon EC2を有効にする ECSクラスターに当社のインフラストラクチャエージェントをインストールします。
- サービス固有の設定ファイルを使用して、サービス の監視を可能にします。
ステップ1: EC2にインフラストラクチャ・エージェントをインストールできるようにする
まず、Amazon EC2がECSクラスターに当社のインフラストラクチャ・エージェントをインストールできるようにする必要があります。これを行うには、まず起動時にインフラストラクチャ・エージェントをインストールするために、ユーザー・データを更新する必要があります。
以下は、EC2の起動設定を変更するための手順です(Amazon EC2ドキュメント から引用)。
ナビゲーションペインの Auto scaling の下で、 Launch configurations を選択します。
次のページでは、アップデートしたいローンチ構成を選択します。
右クリックして Copy launch configuration を選択します。
Launch configuration details タブで、 Edit details をクリックします。
ユーザーデータを以下のいずれかのスニペットに置き換える。
Choose Skip to review.
Choose Create launch configuration.
次に、オートスケーリンググループの更新を行います。
- Amazon EC2 コンソールを開く.
- ナビゲーションペインで、 Auto scaling の下で、 Auto scaling groups を選択します。
- 更新したいオートスケーリンググループを選択します。
- Actions メニューから、 Edit を選択します。
- Launch configuration のドロップダウンメニューで、作成された新しい起動設定を選択します。
- クリック 保存.
エージェントが自動的にインスタンスを検出しているかどうかをテストするために、 自動スケーリンググループ内のEC2インスタンス を終了させます。これで、代替インスタンスが新しいユーザーデータで起動されます。5分後、新しいホストからのデータが 「ホスト」ページ に表示されるはずです。
次に、サービスの監視を可能にすることに移ります。
ステップ2:サービスの監視を有効にする
EC2がインフラストラクチャエージェントを実行できるようにすると 、エージェントはホスト上で実行されているコンテナの監視を開始します。
次に、ECSにデプロイされたサービスを監視する方法について説明します。例えば、アプリケーション・サーバーの前に配置されたNGINXインスタンスを含むECSタスクを監視することができます。
ここでは、ECS上に展開された サポートされているサービス をどのようにモニターするかについて簡単に説明します。
- 監視するサービスのYAML構成ファイルを作成します。これは最終的に、AWSコンソールを介してEC2ユーザーデータセクションに配置されます。ただし、その前に、EC2のインフラストラクチャエージェントフォルダー(
etc/newrelic-infra/integrations.d
)にそのファイルを配置することで、設定が機能していることをテストできます。その構成ファイルは、コンテナーの自動検出形式を使用する必要があります。これにより、コンテナーを自動的に検索できます。正確な構成オプションは、特定の統合によって異なります。 - サービスからのデータがNew Relicに報告されていることを確認します。
- 表示されたデータに満足したら、EC2コンソールを使用して、その設定を適切な起動設定の
write_files
セクションに追加し、自動スケーリンググループを更新できます。 runcmd
セクションで、yum
コマンドを追加して、適切な起動構成に統合をインストールします。
ここでは、NGINXで上記の手順を行う詳細な例を示します。
サーバーへのSSHアクセス、または AWS Systems Manager Session Manager へのアクセスがあることを確認してください。インフラストラクチャエージェントを実行しているホストにログインします。
コマンドラインで、ディレクトリをintegrations configurationフォルダに変更します。
cd /etc/newrelic-infra/integrations.dnginx-config.yml
というファイルを作成し、次のスニペットを追加します。---discovery:docker:match:image: /nginx/integrations:- name: nri-nginxenv:STATUS_URL: http://${discovery.ip}:/statusREMOTE_MONITORING: trueMETRICS: 1この構成により、インフラストラクチャエージェントは
nginx
を含むECS内のコンテナを検索します。コンテナが一致すると、NGINXステータスページに接続します。discovery.ip
スニペットの動作の詳細については、自動検出を参照してください。一般的なNGINX構成の詳細については、 NGINX統合を参照してください。ポート 80 で
STATUS_URL
からのリクエストを処理するように NGINX ステータス ページが設定されている場合、インフラストラクチャ エージェントはその監視を開始します。5 分後、NGINX データが Infrastructure UI に表示されていることを確認します ( one.newrelic.com > Infrastructure > Third party servicesまたはone.newrelic.com > Explorer > On-host )。設定がうまくいったら、EC2の起動設定に入れます。
ナビゲーションペインの Auto scaling の下で、 Launch configurations を選択します。
次のページでは、アップデートしたいローンチ構成を選択します。
右クリックして Copy launch configuration を選択します。
Launch configuration details タブで、 Edit details をクリックします。
[ユーザーデータ]セクションで、
write_files
セクション(text/cloud-config
とマークされた部分)を編集します。新しいファイル/コンテンツのエントリーを追加します。
- content: |---discovery:docker:match:image: /nginx/integrations:- name: nri-nginxenv:STATUS_URL: http://${discovery.ip}:/statusREMOTE_MONITORING: trueMETRICS: 1path: /etc/newrelic-infra/integrations.d/nginx-config.ymlまた、
runcmd
セクションを編集してyum
コマンドを含めてnri-nginx
をインストールします。runcmd:- [ yum, install, newrelic-infra, -y ]- [ yum, install, nri-nginx, -y ]- [ systemctl, daemon-reload ]- [ systemctl, enable, newrelic-infra.service ]- [ systemctl, start, --no-block, newrelic-infra.service ]
Choose Skip to review.
Choose Create launch configuration.
次に、オートスケーリンググループの更新を行います。
- Amazon EC2 コンソールを開く.
- ナビゲーションペインで、 Auto scaling の下で、 Auto scaling groups を選択します。
- 更新したいオートスケーリンググループを選択します。
- Actions メニューから、 Edit を選択します。
- Launch configuration のドロップダウンメニューで、作成された新しい起動設定を選択します。
- クリック 保存.
EC2インスタンスが終了すると、自動的に新しいNGINXコンテナを探す新しいEC2インスタンスに置き換えられます。