Infrastracture インテグレーションで AWS 情報を取得する

# はじめに
AWS を New Relic でモニタリングするための Infrastracture インテグレーションの設定を行います。
設定時にはステップが表示されるためその指示通りに進めれば問題なく設定できます。
とはいえ、実際に検証となるとそれなりに手間がかかると思います。
そんな、まだ触れていなくて興味のある方や導入検討の初期調査を行なっている方の時短になれば幸いです。


# 設定
New Relic ではインテグレーション設定を行うためのステップを説明しながら進めることができます。
そのため New Relic と AWS のトコンソール画面を切り替えながら作業を行う必要があります。


## 事前作業
AWS インテグレーションを行う際に API ライセンスキーを利用します。
以下に記事書きましたのでよかったら参考にして発行しておいてください。

https://qiita.com/kooohei/items/00da439f280adc44cdca

## AWS アカウントの追加
- NewRelicにログインし、画面左のメニューバーから **[ Infrastructure > AWS ]** を選択します。
- 次に、画面中央に表示されている **"Set up Amazon Web Services Integrations through the UI."** のリンクをクリックします。
![create01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/f3fa69b7-f9b4-acb6-969a-67e30bf2dd66.png)

- **Metric streams (recommend)** という項目があるので、その **[ Use metric streams ]** をクリックします。
![create02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/57616239-2175-5239-d517-2eeae93db89b.png)

### Step 1: IAM ロールの作成
ここからは AWS マネジメントコンソールと並行して進んで行きます。
![create03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/eb6eea78-b950-18ef-20eb-a3a697524e57.png)

- まずは **[ Use metric streams ]** のリンクをクリックし、AWS マネジメントコンソールを開きます。

- **[ IAM > ロール > ロールの作成 ]** をクリックします。
![create04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/8851b631-9207-dceb-40f2-c57ffba5b761.png)

- **[ AWS アカウント]** を選択します。
![create05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/fe1d07a9-377e-55f5-510a-1292eaab4a04.png)

- **[ 別の AWS アカウント]** を選択し、NewRelic の画面に表示されている **"Account ID"** を入力します。
また、***□ 外部 ID を要求する（サードパーティがこのロールを引き受ける場合のベストプラクティス）"*** 
 にチェックを入れ **"external ID"** を入力します。
![create06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/9c037f7f-5b69-7448-1d48-1f4c92177e45.png)

- 入力が済んだら **[次へ]** をクリックします。
![create07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/399a34d3-dbb3-7281-10b1-4a25f0426082.png)


### Step 2: ポリシーのアタッチ
ここでは Step 1. の続きでポリシーのアタッチについて説明しています。
![create08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/3729fc49-79a5-5df9-a628-7ea0f98181f0.jpeg)

- 許可ポリシーで **ReadOnlyAccess** にチェックを入れ **[次へ]** をクリックします。
![create09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/21558e19-1955-2204-25ae-f625bb0b7818.png)


### Step 3: ロール名の設定と設定内容の確認
ここではロール名の設定と、設定内容の確認をしています。
![create10-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/6d353034-ff84-c08d-01f1-e962b222b77c.jpeg)

- ロール名 を入力します。(例. NewRelicInfrastructure-Integrations)
![create10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/d7f3d80a-e1be-7ec2-e4bc-10dc68382da5.png)

- **[ロールを作成]** をクリックします。
![create12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/1a03d06c-f952-a357-9714-597c95c5c730.png)

- 作成したらロールの ARN を後で必要になるのでメモしておきましょう。

### Step 4: Budgets ポリシーの設定
ここでは Budgets　へのアクセスポリシーの設定を説明しています。
![create13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/a2ed8fe3-6342-58d2-dfd1-55f63fb4ac7e.jpeg)

- **[ IAM > ロール > NewRelicInfrastructure-Integrations ]** をクリックします。
- ロール詳細画面で **[許可 > 許可を追加 > インラインポリシーを作成]** をクリックします。
![create14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/37eb0dd7-3fad-5780-5339-7f424d9ee8e4.png)

- **[JSON]** をクリックします。
![create15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/bb143fcc-c14b-942c-d461-8781ce7ecae7.jpeg)

- ポリシーエディタに以下のJSONを入力し **[次へ]** をクリックします。
```json:NewRelicBudget
{
    "Statement": [
        {
            "Action": [
                "budgets:ViewBudget"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ],
    "Version": "2012-10-17"
}
```

- ポリシー名に **NewRelicBudget** を入力して **[ポリシーの作成]**　をクリックします。
![create16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/723da02d-cb8a-c8f6-dfdf-95be6cb87ff4.png)

### Step 5: 連携先 AWS アカウント情報の設定
New Relic で管理するために、連携先 AWS アカウント　の情報を設定します。
- 初めのテキストボックスには連携AWS先がわかるように任意の値を入力(例.AWS Accound ID)します。
- *"Paste the ARN created in the previous step"* では先ほど Step 3. でメモをした *IAM ロール ARN* を入力します。
![create17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/4c921cb7-7810-cfe2-09f8-a2e99fe01f44.png)
- 入力したら **[Next]** をクリックします。


### Step6: AWS Metric Stream の設定
最後に CloudFormation を利用して AWS Metric Stream の設定を行います。
- **"Use the CloudFormation Template"** をクリックします。
![create18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/39a45b92-58f1-ef62-5d9d-c1d3d4fa7459.png)

すると CloudFormation のスタック作成画面が開き以下を実行します。
- *New Relic Ingest License Key* に **"API License Key"** を入力します。
- 以下のオプションにチェックを入れます。
　　*□ AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。*
- **[ スタックを作成 ]** をクリックします。
![create20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/fff9b8fa-708c-f77f-592e-40aaff181c6a.jpeg)

- *NewRelic-Metric-Stream* が **"CREATE_COMPLETE"** になったら完了です。
![create21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/e74dfac8-5bc7-b509-a91b-8127d6221999.png)

- New Relic の画面に戻り **[Done]** をクリックします。

## 確認
- **[ Infrastructure > AWS ]** の画面右端にある **"Account status dashboard"** をクリックします。
![create19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/75b477cb-21fb-6d41-70e8-4d92e7d0acf0.png)

以下のような画面が表示され、データが取得できていれば完了です。
※ 初回のデータ取得には時間が掛かかるため、表示されない場合は30分ほど待ってから確認をしてください。
![create22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/2c0753de-5651-d2dc-81dc-569bbb9f7de3.png)


## 削除
削除を行う際は *New Relic* 側での連携解除と *AWS* 側での *CloudFormation* と *IAM ロール*の削除を行う必要があります。

### New Relic 連携解除
- 画面左のメニューバーから **[ Infrastructure > AWS ]** を選択します。
- **[ Unlink this account ]** をクリックします。
![delete_newrelic01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/7d31e3ae-961a-0bb1-566b-c25a68c45890.png)

- **[ Unlink NewRelicIncfrastructure-Integrations ]** を押下。
![delete_newrelic02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/dbf13f87-0667-9eac-81d8-dce886032535.png)

### AWS CloudFormation スタックの削除
- AWS コンソール を立ち上げ **[ CloudFormation > スタック ]** をクリックします。
- **NewRelic-Metric-Stream** にチェックを入れ **[削除]** をクリックします。
![delete_cfn01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/fcb6f885-81e6-e8fd-48b4-5f7d81795131.png)
　　
- **[ 削除 ]** をクリックします。
![delete_cfn02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/49c50105-0f14-a911-82d4-899f567280c9.png)


## AWS IAM ロールの削除
- **[ IAM > ロール > NewRelicInfrastructure-Integrations ]** にチェックを入れます。
- **[ 削除 ]** をクリックします。
![delete_iam01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/c6ec9e6a-023f-fefa-2ec8-dadefa9e4cde.png)

- テキスト入力フィールドに **"NewRelicInfrastructure-Integrations"** を入力して **[ 削除 ]** をクリックします。
![delete_iam02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/41ed3ab7-7231-4597-75fd-d158a4b327f8.png)

以上で完了です。


# おわりに
読んでいただいて感じたと思いますが、導入ステップもあり CloudFormation 使って作成するため難しいことは全然行なっていません。
まだ触れてない方で興味のある方や導入検討されている方の初期調査としてはお役に立てるのかなと思います。


### 参考
https://docs.newrelic.com/jp/docs/infrastructure/infrastructure-integrations/get-started/introduction-infrastructure-integrations/

https://docs.newrelic.com/jp/docs/infrastructure/amazon-integrations/connect/aws-metric-stream/

https://docs.newrelic.com/jp/docs/infrastructure/amazon-integrations/connect/aws-metric-stream-setup/