AWSユーザなら無料で使えるNew Relic導入方法

サーバモニタリングサービス「[New Relic](http://newrelic.com/)」のAWSへの導入についてまとめてみました！

![14d7b9ce3-0ef4-07fb-6bcb-446711f2dec8.png](https://qiita-image-store.s3.amazonaws.com/0/32789/f225c4d3-f23a-f27b-ca4c-935738a48645.png)


# New Relicのアカウント取得
最初は無料だからって焦ってアカウントを取っちゃダメダメ。
もしAWSを使っているならお得な隠れキャンペーンがあります。

[隠れキャンペーンページ](https://newrelic.com/aws)

このページ経由でSign-UPするとStandard版が無料で使えます。
通常のページからSign-UPすると無料になるのはLITE版です。

# はじめてのサーバ監視設定
まずは基本の「き」でサーバの監視から仕込んでみます。
打つコマンドは5つだけです。

```
# rpm -Uvh http://download.newrelic.com/pub/newrelic/el5/i386/newrelic-repo-5-3.noarch.rpm
# yum install newrelic-sysmond
# nrsysmond-config --set license_key=LICENSE_KEY
# /etc/init.d/newrelic-sysmond start
# chkconfig newrelic-sysmond on

```

3行目のライセンスキーはNew Relicの管理画面から取得できます

![New Relic.png](https://qiita-image-store.s3.amazonaws.com/332/32789/a450843f-b2b7-d3ef-b2ba-aacf235a6cf7.png)


たったこれだけで美麗管理画面からサーバの状況が丸裸です！

なに、この感動プロダクト！！

ときめいた！！！


# CloudWatchとの連携
専用エージェントをサーバに入れただけではAWSのEC2以外のサービス（RDSやELB等）のデータは取得できません。
CloudWatchに連携したエージェントを入れることで対応が可能になります。

## 事前準備

### IAMアカウントの作成
- AWSにNew Relicの監視エージェント専用のIAMを作成しておきます。IAMのポリシールールは下記を使ってください。

```IAMポリシー
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "autoscaling:Describe*",
        "cloudwatch:Describe*",
        "cloudwatch:List*",
        "cloudwatch:Get*",
        "ec2:Describe*",
        "ec2:Get*",
        "ec2:ReportInstanceStatus",
        "elasticache:DescribeCacheClusters",
        "elasticloadbalancing:Describe*",
        "sqs:GetQueueAttributes",
        "sqs:ListQueues",
        "rds:DescribeDBInstances",
        "SNS:ListTopics"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```
- IAMアカウントを作成したらaccess_keyとsecret_keyをメモっておきます。

### 監視環境の用意
- EC2 1台（t1.microでエージェント専用インスタンスを立ち上げることが推奨されています）
- Ruby (1.9.2以上)
- Rubygems (1.3.7以上)
- Bundler
- Git

Ruby、Rubygem、Gitはyumからインストール可能です。Bundlerは`gem install bundler`でインストールしましょう。

その際に`ruby-devel`や`libxml2`、`libxslt`が入ってないとBundlerがインストール出来ない場合があるので、yumから追加でインストールしてください。

Bundlerは`/usr/local/bin`にインストールされるのでPATHを通しておくと良いです。

## 監視エージェントのインストール
- githubから[ダウンロード](https://github.com/newrelic-platform/newrelic_aws_cloudwatch_extension/tags)します
- ダウンロードしたファイルを適当な場所に展開します（展開した場所を`/home/newrelic/newrelic_aws`とします）
- 展開したディレクトリのconfigの下にあるtemplate_newrelic_plugin.ymlをnewrelic_plugin.ymlとしてコピーします
- newrelic_plugin.ymlを編集します（後述）
- 以下のコマンドでエージェントを起動します

```
$ cd /home/newrelic/newrelic_aws
$ bundle install
$ bundle exec ./bin/newrelic_aws
```

しばらくするとNew Relicの管理画面に自動的に項目が追加されます。

![New Relic2.png](https://qiita-image-store.s3.amazonaws.com/332/32789/5635e177-1405-cbb2-83cf-ac4fba269ea7.png)


### newrelic_plugin.ymlの記載方法
`license_key`,`access_key`,`secret_key`をあなたの環境に応じて書き換えます。

ファイルの下の方にある`enabled: true`とするとそれぞれのAWSサービスでCloudWatchの値が取得できるようになります。

取得したくないサービスは`enabled: false`にしましょう

```newrelic_plugin.yml
# Please make sure to update the license_key information with the
# license key for your New Relic account.
#
newrelic:
  #
  # Update with your New Relic account license key:
  #
  license_key: 'New Relicのあなたのライセンスキー'
  #
  # Set to '1' for verbose output, remove for normal output.
  # All output goes to stdout/stderr.
  #
  # verbose: 1
#
# AWS configuration.
#
aws:
  # Update with you AWS account keys:
  access_key: '事前準備で作成したAMIのaccess_key'
  secret_key: '事前準備で作成したAMIのsecret_key'
  # Specify AWS regions to query for metrics
  # regions:
  #   us-east-1
#
# Agent configuration.
#
agents:
  #
  # Enable/disable agents with the enabled attribute or by commenting out each agent.
  #
  # Tag filtering is available and is documented at
  # https://github.com/newrelic-platform/newrelic_aws_cloudwatch_plugin/blob/master/README.md#tag-filtering
  #
  # An optional cloudwatch_delay attribute can be added for each agent
  # which adjusts the time window in seconds for CloudWatch querying.
  # Some of the Cloudwatch metrics are not immediately available and may
  # require a delay before being queried.
  ec2:
    enabled: true
  ebs:
    enabled: true
  elb:
    enabled: true
  rds:
    enabled: true
  sqs:
    enabled: true
  sns:
    enabled: true
  ec:
    enabled: true
  ecr:
    enabled: false
```

### 監視エージェントの自動起動
Upstartに登録することでサーバ起動時に監視エージェントが立ち上がるように登録します

- /etc/init/newrelic-aws.confを作成します

```newrelic-aws.conf
# Upstart: /etc/init/newrelic-aws.conf
description 'New Relic AWS Plugin'

start on runlevel [2345]
stop on runlevel [016]

respawn
respawn limit 3 5

chdir /home/newrelic/newrelic_aws

script
        export PATH=$PATH:/usr/local/bin
        bundle install
        bundle exec ./bin/newrelic_aws
end script
```

- 監視エージェントを起動します

```
# initctl start newrelic-aws
# initctl status newlic-aws
newrelic-aws start/running, process 813
```

# 様々な使い方
MySQL監視エージェントの導入については[こちら](http://qiita.com/kou/items/0370dde20b74f23709c1)

# 有料プランへの切替時の注意
- NewRelicのAPMなどは大変便利なので、もっと詳細な情報がみたくて課金を検討することもあると思います
- その際に注意したいのがホスト数です。一度、契約を有料プランに変更すると利用ホスト数だけライセンスがかかってきます
- このホストは有料、このホストは無料という設定はできず、課金したアカウントにぶらさがっているホスト全部が課金対象になりますので、ご注意ください
- これを避けるためには別アカウントを取得し、有料プランで使いたいホストと無料プランで使いたいホストをそれぞれのアカウントにひも付けしなおす必要があります



# 仲間募集
[株式会社スピカ](http://spika.co.jp)では一緒に切磋琢磨できるエンジニアの方を募集しています！ぜひ、[こちら](https://www.wantedly.com/companies/spika/projects)をご覧ください！！