7.18.2014

How to Monitor Amazon EC2 Instances with NewRelic (Provisioned by Vagrant + Ansible)

New Relic で EC2 インスタンスを監視する方法

 

目的

Amazon EC2 の新規インスタンスを立ち上げ、New Relic でリソース監視をする。
これを vagrant up コマンド一発で実現したい。

プロビジョニングには Ansible を使う。

 

事前準備

 

1. New Relic アカウントの準備

 

2. AWS Management Console の作業
  • AWS アカウントの作成 (手順割愛)
  • ユーザ・グループ作成
    • Services -> Deployment & Management -> IAM
    • IAM -> Groups: vagrant グループ (Power User Access) を追加
    • IAM -> Users: vagrant ユーザを追加し、vagrant グループに所属。APIキーを確認
  • セキュリティグループ作成
    • Services -> Compute & Networking -> EC2 -> NETWORK & SECURITY -> Security Groups
    • vagrant グループを追加し、Inbound 許可, {SSH, HTTP, HTTPS}, Anywhere を設定
  • SSH鍵の作成
    • Services -> Compute & Networking -> EC2 -> NETWORK & SECURITY -> Key Pairs
    • キーペア vagrant を作成し、vagrant.pem を適当な場所に保存 (例: ~/.ssh/aws-vagrant.pem)

 

3. プロビジョニング実行環境の整備
  • Vagrant のインストール
  • Vagrant プラグインのインストール
    $ vagrant plugin install vagrant-aws
    $ vagrant plugin install dotenv
     
  • Ansible のインストール

 

プロビジョニング用ファイルの作成

 

Vagrantfile

 

.env ファイル

Vagrantfile と同じディレクトリに「.env」というファイルを作成する。

以下のように認証情報を適宜設定すること。

# default provider
VAGRANT_DEFAULT_PROVIDER="aws"

# credentials
AWS_SSH_USERNAME="ec2-user"
AWS_SSH_KEY="path/to/your/vagrant.pem"
AWS_ACCESS_KEY_ID="your access key id"
AWS_SECRET_ACCESS_KEY="your secret"
AWS_KEYPAIR_NAME="vagrant"
AWS_SECURITY_GROUP="vagrant"

# new relic
NEWRELIC_LICENSE_KEY="your license key"

 

Ansible 関連ファイル

 

プロビジョニングの実行

$ vagrant up
Bringing machine 'aws-newrelic-test' up with 'aws' provider...
[aws-newrelic-test] Warning! The AWS provider doesn't support any of the Vagrant
high-level network configurations (`config.vm.network`). They
will be silently ignored.
[aws-newrelic-test] Launching an instance with the following settings...
[aws-newrelic-test]  -- Type: t2.micro
[aws-newrelic-test]  -- AMI: ami-29dc9228
[aws-newrelic-test]  -- Region: ap-northeast-1
[aws-newrelic-test]  -- Availability Zone: ap-northeast-1a
[aws-newrelic-test]  -- Keypair: vagrant
[aws-newrelic-test]  -- Security Groups: ["vagrant"]
[aws-newrelic-test]  -- Block Device Mapping: []
[aws-newrelic-test]  -- Terminate On Shutdown: false
[aws-newrelic-test]  -- Monitoring: false
[aws-newrelic-test]  -- EBS optimized: false
[aws-newrelic-test]  -- Assigning a public IP address in a VPC: false
[aws-newrelic-test] Waiting for instance to become "ready"...
[aws-newrelic-test] Waiting for SSH to become available...
[aws-newrelic-test] Machine is booted and ready for use!
[aws-newrelic-test] Running provisioner: ansible...

PLAY [all] ********************************************************************

GATHERING FACTS ***************************************************************
ok: [aws-newrelic-test]

TASK: [newrelic | check if repository is installed] ***************************

*snip*

PLAY RECAP ********************************************************************
aws-newrelic-test          : ok=9    changed=6    unreachable=0    failed=0

AWSインスタンス作成、起動、Ansible によるプロビジョニングが一気通貫で実行される。

暫くすると、New Relic の画面で EC2 サーバの情報が見られるようになった。
AWS課金には注意。

 

 

References

0 件のコメント:

コメントを投稿