ちょっと話題の記事

New Relicでアプリケーションのパフォーマンス測定

2013.04.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

New Relicとは

New Relicとは、パフォーマンス監視サービスです。
サーバ側にnewrelic用モジュールをインストールし、サーバ/アプリケーションの
レスポンスや実行にかかった時間などの統計情報をNew Relicのサイトで確認できます。
Java/Python/PHP/nodeなど、いろいろな言語に対応しており、
Heroku等のPaaS上で使用することもできます。
さらに最近は、モバイルの用アプリ(iOS/Android)のパフォーマンスをモニタリングできるようになったらしいです。

今回はEC2インスタンスにnewrelicサーバ用モジュールをインストールし、
EC2上で動作しているnodeアプリケーションのパフォーマンスを測定してみます。

使用した環境

今回使用した動作環境は以下のとおりです。

  • OS : Amazon Linux(EC2)

New Relicを使ってみる

1.New Relicアカウント登録

まずは、New Relicの公式サイトで無料アカウント登録をします。
その後、Account settings画面へいき、License keyを確認しておきましょう。
このキーを、後でインストールする設定ファイルに記述します。

2.newrelicサーバモジュールをインストール

対象のEC2サーバにsshログインし、下記コマンドを実行してモジュールをインストールしましょう。

% sudo rpm -Uvh http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm
% sudo yum -y install newrelic-sysmond
% sudo nrsysmond-config --set license_key=<先ほど確認したライセンスキー>
% sudo /etc/init.d/newrelic-sysmond start

これでnewrelicモジュールが起動し、ダッシュボードで情報を見ることができるようになります。
自動的にサーバ一覧に追加してくれるので楽ですね。
newrelic-servers

CPUやメモリの使用量、ネットワーク通信量等、いろいろな情報を確認することができます。
さらに、サーバで起動しているプロセスの詳細も確認することができます。
newrelic-processdetail

3.nodeアプリにnewrelicモジュールをインストール

では次に、EC2上で稼働しているnode.jsアプリのパフォーマンスを測定してみましょう。 node用newrelicはnpmでインストールできます。
EC2上で稼働するnodeアプリのカレントへ移動し、モジュールのインストールと設定ファイルのコピーを行います。

% npm install newrelic
% cp node_modules/newrelic/newrelic.js ./

コピーしたnewrelic.jsを編集します。 app_nameにはアプリ名を、license_keyにはライセンスキーを指定しましょう。
そして、node.jsアプリのエントリーポイントとなるjsファイルの先頭で、
newrelicモジュールのロードを行います。

//nodeアプリの起動ファイルの先頭に記述
require('newrelic');

ファイルを修正したらnodeアプリを再起動しましょう。
しばらくすると、ダッシュボードのアプリケーション項目にデータが表示されます。
URL毎のレスポンスタイム等の詳細データを確認することができます。
newrelic-app

まとめ

パフォーマンス監視サービスである、New Relicを少しだけ使ってみました。
今回は無料プランで試したのですが、無料の場合はログの保存期間が短かったり
機能が制限されていたります。
有料プランを使用すれば、いろいろな機能が使えます。
Aamazon Cloud watchと併用すれば、さらに詳細な情報を分析することができますね。

参考サイトなど