New Relic InfrastructureでAWS Fargateをモニタリングしよう！

New Relic Infrastructure を、AWS Fargateに導入することで、タスク、サービスに関するリソースの監視ができるようになります。本記事ではAWS Fargate への導入手順を紹介します！

# New Relic Infrastructure とは
New Relic Infrastructure とは、 Goで作られた軽量の実行ファイルであるInfrastructure エージェントをサーバサイドで稼働させることで定期的に**OS、ミドルウェア、ネットワークなどのパフォーマンス情報ログや OSのパッケージ情報を収集する機能**です。**主要なLinux ディストリビューション、Windows、MacOSなどのメジャーなOSに対応**しており、**DockerコンテナやAWS FargateやAmazon EKSなどコンテナ環境にも対応**しています。

インストール要件の詳細は公式ドキュメントをご確認ください。

https://docs.newrelic.com/jp/docs/infrastructure/install-infrastructure-agent/get-started/requirements-infrastructure-agent/

また、Infrastructure エージェントをインストール、エージェントがNew Relicにデータ送信するための通信要件は以下ドキュメントに情報がまとまっておりますのでご確認ください。

https://qiita.com/T_OMORI/items/4b08d73cba29167dd72c

# インストールの概要
AWS Fargateの場合、New Relic Infrastructure エージェントは監視するタスクのサイドカーとしてデプロイされる形になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/2c775f4c-9ba9-b83f-8519-9f1c2b5d3495.png)


インストールオプションは3種類あります。今回は簡単にセットアップできるCloudFormationを使った導入手順を紹介します。

- [AWS CloudFormationを使用してインストール](https://docs.newrelic.com/jp/docs/infrastructure/elastic-container-service-integration/install-ecs-integration/#cloud-formation-install)
- [自動スクリプトを使用してインストール](https://docs.newrelic.com/jp/docs/infrastructure/elastic-container-service-integration/install-ecs-integration/#auto-script-install)
- [手動でインストール](https://docs.newrelic.com/jp/docs/infrastructure/elastic-container-service-integration/install-ecs-integration/#manual-install)

# インストールしてみよう
それでは、AWS Fargateにエージェントをインストールしてみましょう！

New Relicのアカウントをお持ちでない方は**無料アカウント**を作成の上、お試しください！**全機能使い放題のユーザー1名と100GBのデータ転送が無料**で使えます。

https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa


## タスク設定前の事前準備
セットアップで使うNew Relic のライセンスキーをまずは入手します。New Relicにログインし、左下のユーザー名をクリック→「API Keys」をクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/1276cb59-6298-11b8-000b-6f34bd17502b.png" width="45%">

「Create a key」を選択→Key typeは「Ingest - License」を選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/f3d303ee-1572-99a7-0af8-c2e50a463b08.png" width="80%">

生成されたキーをコピーします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/5f96e298-4273-7c83-24f0-5727b418f5fe.png)

CloudFormationの[スタックテンプレート](https://console.aws.amazon.com/cloudformation/home#/stacks/create/review?templateURL=https://nr-downloads-main.s3.amazonaws.com/infrastructure_agent/integrations/ecs/cloudformation/task/master.yaml&stackName=NewRelicECSIntegration)を開きます。

控えたライセンスキーを入力して、スタックを作成します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/83cf0971-2698-54b5-9920-1edc2ee52d07.png" width="50%">

生成されたスタック名「NewRelicECSIntegration-NewRelicECSTaskExecutionRoleStack-****」をクリック→「リソース」タブをクリックし、作成されたNew RelicのAPIキーが保管されているシークレットキーとIAMロールのARNをコピーして控えます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/5313dccf-a88e-54d7-9460-2ee2ebf33f08.png" width="75%">

## タスク設定
デプロイするサイドカーコンテナを含むタスク定義の例をダウンロードします。

```bash
curl -O https://download.newrelic.com/infrastructure_agent/integrations/ecs/newrelic-infra-ecs-fargate-example-latest.json
```

ダウンロードしたテンプレートのexecutionRoleArnを控えたタスクのARNに書き換えます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/97e876ce-4e9b-bf60-b097-f8b9fc959130.png" width="50%">

secretsのvalueFromをシークレットキーのARNに書き換えます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/211821fe-53b4-e6c6-f229-3ab79a2b9aaa.png" width="50%">

テンプレートに入っているbusyboxを任意のコンテナイメージに変更します。今回はnginxのイメージを設定します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/9f877ec6-b48e-3d63-992d-937f2d1e9aa6.png" width="50%">

family（タスク名）を任意の名前に変更します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/acddc337-4489-fc81-e6dd-2fe1836f39be.png" width="50%">

作成したテンプレートからタスクを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/758dbfd5-b60a-7332-9353-f03624ff24bd.png)

作成したタスクをECSクラスターにデプロイして、タスクが正常に起動していることを確認します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/2dc51b0f-5a2d-c719-6456-248c9fddd98e.png" width="70%">

## New Relic UIでデータを確認

New RelicのUIでタスク内のコンテナのサーバーリソースが取れていることを確認します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/7e9e7f3d-29a4-d5a6-076b-a9aec3001345.png" width="90%">

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/c4cc8191-a5ad-a564-3ff0-bec2fcf31104.png" width="70%">

Infrastructure エージェントには動作を調整するための設定が多数用意されています。設定できる項目は以下ドキュメントをご確認ください。

https://docs.newrelic.com/jp/docs/infrastructure/install-infrastructure-agent/configuration/infrastructure-agent-configuration-settings/

とても**簡単な手順**でInfraStructure エージェントをインストールして、AWS Faregateで動くコンテナの**CPU、メモリなどの監視を開始できる**ことを紹介しました。簡単なセットアップでAWS Fargateで動くコンテナのサーバーリソースの統合監視を開始できますよ。ぜひ、お試しください！

# その他
New Relicでは、**新しい機能やその活用方法**について、QiitaやXで発信しています！
**無料でアカウント作成**も可能なのでぜひお試しください！

:::note info
New Relic株式会社の[X(旧Twitter)](https://x.com/NewRelicJapan) や [Qiita OrganizationOrganization](https://qiita.com/organizations/newrelic)では、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
:::

:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::