0から簡単導入。New RelicによるAWSリソース+PHPアプリケーションの運用監視

サーバの運用監視ツールと言えば、Nagiosやzabbixなどが有名ですが、EC2インスタンスでサービスを監視する場合は、New Relicというサービスで無料でサーバを監視することができます。

New Relicを使えば、監視専用にサーバを立てる必要もなく、コマンドをいくつか叩くだけですぐにEC2インスタンスの監視をできるようになります。
また、RDSやELBなどデータベースやロードバランサといったEC2インスタンス以外のAWSリソースの監視も簡単に導入できます。


下記のURLをクリックして、メールアドレスを登録して、ユーザー登録するとStandard版が無料で登録できます。ただし、いくつかの制限はありますが、無料の範囲内でも十分に使用することができます。
https://newrelic.com/aws
スマホ版のアプリもあるので気軽に監視することもできます。


#New Relic本体のインストール

EC2インスタンス上で以下のコマンドを実行する。以下の5つのコマンドを叩くだけ。

```bash
rpm -Uvh http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm
yum -y install newrelic-sysmond
nrsysmond-config --set license_key=【ライセンスキー】
service newrelic-sysmond start
chkconfig newrelic-sysmond on
```

これだけで、EC2インスタンスの監視が稼働になる。alertメールの設定なども簡単にできるので、適宜カスタマイズすると良い。

#PHPを監視可能に
```bash
yum -y install newrelic-php5
sed -i "s/^newrelic.license =.*$/newrelic.license = \"【ライセンスキー】\"/" /etc/php.d/newrelic.ini
sed -i "s/^;newrelic.appname =.*$/newrelic.appname = \"【任意のアプリケーション名】\"/" /etc/php.d/newrelic.ini
service httpd restart
```
#監視用エージェントのインストール
```bash
sudo yum update

sudo yum install readline-devel git make zlib-devel sqlite-devel.x86_64 gcc g++ svn
sudo yum install gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl openssl-devel make bzip2 autoconf automake libtool bison iconv-devel



curl -sSL https://rvm.io/mpapis.asc | sudo gpg2 --import -
curl -L https://get.rvm.io | bash -s stable --ruby=1.9.3

source /usr/local/rvm/scripts/rvm

```



#bundlerのインストール

```bash
gem install bundler --no-rdoc --no-ri


yum install ruby-devel
gem install io-console
gem environtment


echo $PATH
echo 'export PATH="$PATH:/usr/local/bin"' >> ~/.bash_profile
source ~/.bash_profile
bundle -v
```

```bash
cd /home/ec2-user
mkdir newrelic_aws
git clone https://github.com/newrelic-platform/newrelic_aws_cloudwatch_plugin.git newrelic_aws
```

template_newrelic_plugin.ymlをコピーして、newrelic_plugin.ymlとリネームして、
ファイルを編集する。
AWSアクセスキーとAWSシークレットキーは、IAMでユーザー登録したときに発行されるcsv形式でダウンロードできるデータに記載されているものを使用する。

```bash
cp template_newrelic_plugin.yml newrelic_plugin.yml
vim newrelic_plugin.yml
```

```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: '【ライセンスキー】'
  #
  # 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: '【AWS アクセスキー】'
  secret_key: '【AWS シークレットキー】'

  #Use the following if you would like to configure AWS keys with ENV variables
  #access_key: <%= ENV['AWS_ACCESS_KEY'] %>
  #secret_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>

  #Use the following line disable the key checks and enable usage of AWS instance metadata for setting keys
  #use_aws_metadata: true

  # Specify AWS regions to query for metrics
  # regions:
  #  -
  #   us-west-1
  #  -
  #   us-east-2

#
# Agent configuration.
#
agents:
  #
  # Enable/disable agents with the enabled attribute or by commenting out each agent.
  #
  # Tag and instance ID filtering are available and are 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: false
  sns:
    enabled: false
  ec:
    enabled: false
  ecr:
    enabled: false

```
```bash
# Uptart: /etc/init/newrelic_aws.conf
description "New Relic AWS Plugin"
author "【名前】<【メールアドレス】>"

start on (local-filesystems and net-device-up and runlevel [2345])
stop on [016]

respawn
respawn limit 3 5

chdir /home/ec2-user/newrelic_aws

script
    export PATH=$PATH:/usr/local/rvm/gems/ruby-1.9.3-p551@global/bin:/usr/local/rvm/rubies/gems/ruby-1.9.3-p551@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p551/bin:/usr/local/rvm/bin
    bundle install
    bundle exec ./bin/newrelic_aws
end script
```

# bundleのinstallとそれに必要なnokogiriに必要なパッケージのインストール

```bash
yum install libxml2-devel libxslt-devel
gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/usr/include/libxml2/

bundle install
```


```bash
cd /home/ec2-user/newrelic_aws
bundle install
bundle exec ./bin/newrelic_aws
```
以上で、EC2以外のその他のAWSリソースも監視できるようになる。
New Relicのオフィシャルサイト( http://newrelic.com/ )からチャットでの問い合わせにも英語で丁寧に対応してくれました。

<!--
[](
#(＋α)監視エージェントを起動

/etc/init/newrelic-aws.ymlを編集

```newrelic-aws.yml
description 'New Relic AWS Plugin'

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

respawn
respawn limit 3 5

chdir /home/ec2-user/newrelic_aws

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

```bash
initctl start newrelic-aws
initctl status newlic-aws
```
-->

#参考
http://rikuga.me/category/new-relic/
http://kkurahar.github.io/blog/2013/11/10/newrelic-aws/
http://inaba-serverdesign.jp/blog/20130912/newrelic.html
http://keiwt.hatenablog.com/entry/2015/02/13/123116