zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

NewRelicでAWSのCloudWatch値を取得するプラグインを入れた

【概要】
newrelic_aws_cloudwatch_pluginというプラグインを使用して、New RelicでAWSメトリクスをモニタリングする
プラグインhttps://github.com/newrelic-platform/newrelic_aws_cloudwatch_plugin
参考:http://takeshiyako.blogspot.jp/2014/12/ec2-ebs-elb-rds-and-elasticache-to-new.html


1)プラグイン用のIAMロールを作成します。

ポリシーの作成
[AWS 管理ポリシーをコピー]でReadOnlyAccessをコピーし、以下の様に編集

Policy Name:NewRelicCloudWatch
# 参照:http://qiita.com/kou/items/fcb75108e6e882fd12bb

{
"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": "*"
}
]
}

グループの作成
Management Console Home > Identity and Access Management > Groups > Create New Group
手順 1: グループ名
グループ名:NewRelicCloudWatch
手順 2 : ポリシーのアタッチ
→下記手順で作成した「NewRelicCloudWatch」をアタッチしてグループを作成。

2)アクセスキーとシークレットキーの取得

上記の権限のIAM-Groupに紐づいたIAM-Userを作成しAccessKeyとSecretAccessKeyのペアを保存しておきます。こちらのキーペアは追ってconfigファイルの設定時に必要となります。

# 作成
CreateNewUsers > Enter User Names:NewRelicCloudWatch
Generate an access key for each user:ON
でアクセスキーおよびシークレットアクセスキーを取得。

# Groupに追加
Groups > NewRelicCloudWatch > Add User to Group >NewRelicCloudWatch を選択して Add users.

3)必要モジュールの確認と不足分追加

Ruby (>= 1.9.2)
Rubygems (>= 1.3.7)
Bundler gem install bundler
Git

インストール済みバージョンを確認

ruby -v
# ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]

gem -v
# 2.4.5

bundle -v
# Bundler version 1.10.5

gem install rvm
# Fetching: rvm-1.11.3.9.gem (100%)
# Successfully installed rvm-1.11.3.9
# Parsing documentation for rvm-1.11.3.9
# Installing ri documentation for rvm-1.11.3.9
# Done installing documentation for rvm after 1 seconds
# 1 gem installed

yum install ruby-devel
# Installed:
# ruby-devel.noarch 1:2.0-0.3.amzn1
#
# Dependency Installed:
# ruby20-devel.x86_64 0:2.0.0.645-1.27.amzn1

# nokogiri に必要なyumライブラリをインストール
yum -y install libxml2-devel libxslt-devel
# Installed:
# libxml2-devel.x86_64 0:2.9.1-3.1.35.amzn1
# libxslt-devel.x86_64 0:1.1.28-5.12.amzn1
#
# Dependency Installed:
# libgcrypt-devel.x86_64 0:1.5.3-12.18.amzn1
# libgpg-error-devel.x86_64 0:1.11-1.12.amzn1
# xz-devel.x86_64 0:5.1.2-8alpha.11.amzn1
#
# Dependency Updated:
# libgcrypt.x86_64 0:1.5.3-12.18.amzn1

4)newrelic_aws_cloudwatch_plugin インストールおよび設定

NewRelic用homeディレクトリを用意して、ソースを git clone。

mkdir /home/newrelic
cd /home/newrelic
git clone https://github.com/newrelic-platform/newrelic_aws_cloudwatch_plugin.git

# Gemライブラリをインストール

cd newrelic_aws_cloudwatch_plugin
bundle install
# Fetching gem metadata from https://rubygems.org/.............
# Fetching version metadata from https://rubygems.org/..
# Resolving dependencies...
# Installing json 1.8.3 with native extensions
# Installing nokogiri 1.5.9 with native extensions
# Installing uuidtools 2.1.5
# Installing aws-sdk 1.24.0
# Installing daemons 1.2.3
# Installing newrelic_plugin 1.3.1
# Using bundler 1.10.5
# Bundle complete! 4 Gemfile dependencies, 7 gems now installed.
# Use `bundle show [gemname]` to see where a bundled gem is installed.

gem list
# *** LOCAL GEMS ***
# aws-sdk (1.24.0)
# bigdecimal (1.2.6)
# bundler (1.10.5)
# daemons (1.2.3)
# io-console (0.4.3)
# json (1.8.3, 1.8.1)
# minitest (5.4.3)
# newrelic_plugin (1.3.1)
# nokogiri (1.5.9)
# passenger (5.0.11)
# power_assert (0.2.2)
# psych (2.0.8)
# rack (1.6.4)
# rake (10.4.2)
# rdoc (4.2.0)
# rvm (1.11.3.9)
# test-unit (3.0.8)
# uuidtools (2.1.5)

# 設定ファイルを編集。

cd /home/newrelic/newrelic_aws_cloudwatch_plugin/config/
cp template_newrelic_plugin.yml newrelic_plugin.yml
vi newrelic_plugin.yml

・newrelic_plugin.ymlの編集
アクセスキー等を設定

# Update with your New Relic account license key:
access_key: 'YOUR_AWS_ACCESS_KEY_HERE'
secret_key: 'YOUR_AWS_SECRET_KEY_HERE'

# Update with you AWS account keys:
access_key: 'YOUR_AWS_ACCESS_KEY_HERE'
secret_key: 'YOUR_AWS_SECRET_KEY_HERE'

監視対象をtrueにする。以下は例。

ebs:
enabled: true
elb:
enabled: true
rds:
enabled: true

5)Upstart を使ってdaemon

/etc/init/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_cloudwatch_plugin

script
bundle install
bundle exec ./bin/newrelic_aws >>/var/log/newrelic/newrelic_aws.log 2>&1
end script

監視を開始、動作確認

cd /etc/init
initctl reload-configuration
initctl start newrelic_aws

initctl status newrelic_aws
# newrelic_aws start/running, process xxxxx

# NewRelicコントロールパネルにアクセスして、PLUGINが追加されているか確認しておく
f:id:zuntan02:20150821095816p:plain
以上。