EOLになったNewRelicのServersからInfrastructureに移行する

![infrastructure-events-feed-screen-79957577e0f3270c082bd4fc0d3860d8.png](https://qiita-image-store.s3.amazonaws.com/0/27027/502079ba-a251-c60e-22b0-c8a089cb66bf.png)


サーバのリソース監視とアラートを提供していたNewRelic Serversが2018年の5月15日にサービスを終了します。(無料アカウントで使っていた場合は、2017年の11月14日にサービス提供が終了しています。)

> New Relic Servers and the legacy alerting features will reach End-Of Life (EOL) on May 15th, 2018
> ...
> who do not have a paid subscription to one or more of our products, the EOL date will be November 14, 2017.

参考: https://discuss.newrelic.com/t/important-upcoming-changes-for-new-relic-servers-and-legacy-alerting-features/49474

この記事では**Serversから後継のNewRelic Infrastructureに移行する方法**をまとめています。

Amazon Linuxを想定したコマンドを例として挙げていますが、他のOSの方は適宜参考リンク先を参照してください。


## Serversエージェントのアンインストール

まず、不要になるServersのエージェントをアンインストールします。

```
sudo yum remove -y newrelic-sysmond
```

参考: https://docs.newrelic.com/docs/servers/new-relic-servers-linux/installation-configuration/install-ubuntu-debian-new-relic-servers#uninstalling


## Infrastructureエージェントのインストール

次にインストールを行います。ライセンスキーはお持ちのものを設定してください。

```
echo "license_key: ****" | sudo tee -a /etc/newrelic-infra.yml
sudo curl -o /etc/yum.repos.d/newrelic-infra.repo https://download.newrelic.com/infrastructure_agent/linux/yum/el/6/x86_64/newrelic-infra.repo
sudo yum -q makecache -y --disablerepo='*' --enablerepo='newrelic-infra'
sudo yum install newrelic-infra -y
sudo vim /etc/newrelic-infra.yml
```

参考: https://docs.newrelic.com/docs/infrastructure/new-relic-infrastructure/installation/install-infrastructure-linux


## newrelic-infraの設定ファイルを編集

```yaml:/etc/newrelic-infra.yml
license_key: ****
display_name: 表示したい名前をここに入れる
custom_attributes:
  environment: 環境を分けたい場合はこちらに設定
```

`custom_attributes`には`environment`以外に`service`や`team`が使えます。

参考: https://docs.newrelic.com/docs/infrastructure/new-relic-infrastructure/configuration/configure-infrastructure-agent

設定ファイル更新後はプロセスを再起動しておきます。

``` bash
sudo initctl restart newrelic-infra
```

参考: https://docs.newrelic.com/docs/infrastructure/new-relic-infrastructure/configuration/start-stop-restart-check-infrastructure-agent-status


## アラートをSlackに飛ばす設定

アラートに必要な設定は3つです。

1. Alert policyの作成
1. Alert conditionの作成
1. Notification channelの設定

### Alert policy(アラートポリシー)の作成

まずアラートポリシーの作成はログイン後の画面右上の"Alerts" > "Alert plicies" > "New alert policy"から行います。

### Alert condition(アラート条件)の作成

ポリシーを作成したら、ポリシーの詳細画面からアラート条件を設定します。  
とりあえず以下の3点あたりは設定しておきましょう。

* CPU使用率
* メモリ使用率
* サーバ死活

アラート条件のサンプル: https://docs.newrelic.com/docs/infrastructure/new-relic-infrastructure/infrastructure-alert-conditions/infrastructure-alerting-examples

アラート条件を作成したら必ずincident(インシデント)の作成条件を確認します。  
デフォルトでは「By Policy(ポリシー毎)」にインシデント作成となっていますが、「By condition and entity(条件・エンティティ毎)」に変えておくとServersでの運用感覚に近くなります。

![Screen Shot 2017-12-15 at 19.24.02.png](https://qiita-image-store.s3.amazonaws.com/0/27027/2e5bb4f5-a5e8-375f-c94a-64fe53fae880.png)

![Screen Shot 2017-12-15 at 19.24.14.png](https://qiita-image-store.s3.amazonaws.com/0/27027/6c52386a-33af-2a8e-28d4-a62026b96443.png)


インシデントが1つしか作られず、アラートが飛ばないなと思ったらここの設定を見直しましょう。


### Notification channel(通知チャンネル)の設定

デフォルトだとメールに通知が飛ぶようになっているので、ここではSlackの設定を行います。

まずアラートポリシーの作成はログイン後の画面右上の"Alerts" > "Notification channels" > "New notification channel"から行います。

チャンネルタイプのSlackを選択して、webhookのURLを入れましょう。

## AWSアカウントと接続するための設定

もしもAWS上にしかない現在の請求価格や、ECSのクラスタメトリクス、RDSなどの情報を監視したい場合はIAMキーを作成して監視することもできます。

``` JSON
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "budgets:ViewBudget"
      ],
      "Resource": "*"
    }
  ]
}
```

細かい手順は公式ドキュメントをご参照ください。

参考: https://docs.newrelic.com/docs/infrastructure/amazon-integrations/getting-started/connect-aws-services-infrastructure

## 利用料金

Serversと異なり、Infrastructureには無料プランがありません。代わりに無料のトライアル期間があります。

Infrastructureの利用料金は以下から計算できます。

https://newrelic.com/infrastructure/pricing

この記事を書いている時点で、以下の見積もりをすると月々6.3ドルでした。

* AWSの`t2.large`のインスタンスを1ヶ月監視
* 月払い
* ESSENTIALSプラン

手軽に設定できることや、便利なAPMと同じプラットフォームで監視できることを考えるとInfrastructureの費用対効果は高そうです。

## おわりに

NewRelic Infrastructureへの移行方法の紹介でした。

Alert周りの概念が変わったことで、以下の設定が特に個人的には見つけにくかったので気をつけてください。

* Incidentの作成条件
* Slackの追加方法

これから移行・導入を検討されている方の参考になれば幸いです。