2014年12月10日水曜日

EC2, EBS, ELB, RDS and ElastiCache to New Relic

http://www.flickr.com/photos/lizasperling/9110748397/in/photostream/

https://github.com/newrelic-platform/newrelic_aws_cloudwatch_plugin

"New Relic Amazon CloudWatch Plugin"を使って、AWSのサービスの監視データをNew Relicで確認できるようにします。以下の様なイメージです。


このプラグインは、CloudWatchから任意のデータを取得してNew Relicに入れるようになっています。データはCloudWatchでも確認可能な情報ですが、視認性の良いグラフで表示してくれます。

対応サービス:
EC2, EBS, ELB, RDS, SQS, SNS and ElastiCache(Memcached and Redis)

必要なスペック:
A single t1.micro EC2 instance (in any region)
Ruby (>= 1.9.2)
Rubygems (>= 1.3.7)
Bundler gem install bundler
Git

インストール方法:
※ 今回はCentOS6.6でインスールしました。

nokogiri に必要なyumライブラリをインストール。
# yum -y install libxml2-devel libxslt-devel

ソースを git clone。
# git clone https://github.com/newrelic-platform/newrelic_aws_cloudwatch_plugin.git

Gemライブラリをインストール。
# cd newrelic_aws_cloudwatch_plugin
# bundle install

設定ファイルを編集。
# cp config/template_newrelic_plugin.yml config/newrelic_plugin.yml
# emacs config/newrelic_plugin.yml

変更箇所は以下のようになります。

New Relicのライセンスキーを設定。
newrelic:
  #
  # Update with your New Relic account license key:
  #
  license_key: 'New Relicのライセンスキー'

AWSのアクセスキーと、シークレットキーを設定。
#
# AWS configuration.
#
aws:
  # Update with you AWS account keys:
  access_key: 'AWSアクセスキー'
  secret_key: 'AWSシークレットキー'

AWSのリュージョンを設定。Tokyoの場合は、ap-northeast-1 とします。
  # Specify AWS regions to query for metrics
  regions:
    -
      ap-northeast-1

どの項目をチェックするか設定します。
RDSの場合は、インスタンスID(DB Instance Identifier)を設定します。
#
# Agent configuration.
#
agents:
  #
  # Enable/disable agents with the enabled attribute or by commenting out each agent.
  ec2:
    enabled: true
  ebs:
    enabled: true
  elb:
    enabled: true
  rds:
    enabled: true
    instance_identifiers:
      - インスタンスID

エージェントをスタート。
# bundle exec bin/newrelic_aws 2>> /var/log/newrelic/newrelic_aws.log&
うまくいかなかったら、verboseオプションを有効にしてみてください。詳細をログに記録してくれます。
bin/daemonも用意されていますが、ログを落としてくれないので、上記のような起動にしています。スタートスクリプトは自作するのが良いかもしれません。
また、以下の様な警告がログに記録される場合があります。いつの間にかログが肥大したりすることもあるので注意しましょう。
Digest::Digest is deprecated; use Digest

Enjoy!