この投稿は Windows Azure Advent Calendar 2013 の19日目の記事です。 前日は shosuz さんの Windows Azure Mobile Services 高度な設定について でした。

Windows Azure モバイル・サービス はその名の通り、モバイルアプリケーションを開発するにあたって非常に便利なサービスです。

稚拙ながら BuildInsider にて iOSアプリを5分で作ろう! という記事を書いています。

本当に5分で作れます。先日JAZUG仙台にて実演しました。無料で試せますので、是非皆様試していただければと思います。

さて、今回はモバイル・サービスのパフォーマンス監視ということで、New Relic を紹介したいと思います。

New Relic とは

レスポンスタイム 等の統計を収集して、New Relic のサイトにて見やすく表示してくれるサービスです。モバイル・サービスだけでは無く、.NET アプリケーション や、Ruby, Node.js 等の様々な言語に対応しています。

インストール方法

Use New Relic to monitor Mobile Servicesを参考に設定していきます。残念ながら今は英語のみのようですので、見出しに沿って補足していきます。

Windows Azure ストア から New Relic を契約する(Sign up for New Relic using the Windows Azure Store)

Windows Azure ポータル から Windows Azure ストア を表示し、 New Relic を追加します。

f:id:nnasaki:20131217034155p:plain
f:id:nnasaki:20131217034155p:plain
f:id:nnasaki:20131217034407p:plain
f:id:nnasaki:20131217034407p:plain
f:id:nnasaki:20131217034722p:plain
f:id:nnasaki:20131217034722p:plain
f:id:nnasaki:20131217035054p:plain
f:id:nnasaki:20131217035054p:plain

アドオンに表示されるようになります。

f:id:nnasaki:20131217035317p:plain
f:id:nnasaki:20131217035317p:plain

New Relic モジュールをインストールする(Install the New Relic module)

インストールするためには、git を有効にしておくことと、Node.js をインストールする必要があります。

git の有効化は Store server scripts in source control を参照してください。詳細は今回の趣旨と外れるので省略します。(日本語の情報はいずれ記事にする予定です)

Node.js のインストールについては、http://nodejs.org/ から [Install] をクリックするとインストーラーがダウンロードできる。

New Relic は次のコマンドを実行して、モジュールを追加します。hogehoge の部分は適当ですので環境に合わせて変えてください。 重要なのは service ディレクトリにて npm を追加することです。

`git clone http://hogehoge
cd hogehoge/service
npm install newrelic
git add .
git commit –m "added newrelic module"
git push origin master
`

ローカルの git リポジトリは次のディレクトリ構成になります。

.
└── service
    ├── api
    ├── node_modules
    ├── scheduler
    ├── shared
    └── table

管理ポータルにて New Relic を有効にする(Enable New Relic developer analytics for the mobile service)

ここは原文の通りに Windows Azure 管理ポータル から、先ほどストアで購入した New Relic を有効にするだけです。次のようになっていれば良いです。

f:id:nnasaki:20131217041546p:plain
f:id:nnasaki:20131217041546p:plain

New Relic のダッシュボードを確認する(Monitor the mobile service in the New Relic dashboard)

Windows Azure 管理ポータル の アドオン から、New Relic のダッシュボードにアクセスできます。ダッシュボードは Windows Azure 管理ポータル外の New Relic のWebサイトになりますが、クリックするだけでシングルサインオン出来ます。

f:id:nnasaki:20131219205321p:plain
f:id:nnasaki:20131219205321p:plain

最初は次のように何も表示されません。

f:id:nnasaki:20131217043315p:plain
f:id:nnasaki:20131217043315p:plain

サンプルアプリにデータを追加したり、表示を更新したりガチャガチャいじってみましょう。

f:id:nnasaki:20131217043952p:plain
f:id:nnasaki:20131217043952p:plain

操作しているうちにログが増えてグラフが更新されていきます。大体処理時間が 40 ms と非常に高速です。

f:id:nnasaki:20131217044715p:plain
f:id:nnasaki:20131217044715p:plain

get, post, patch と各操作ごとの詳細を見ることが出来ます。

f:id:nnasaki:20131217045042p:plain
f:id:nnasaki:20131217045042p:plain
f:id:nnasaki:20131217045230p:plain
f:id:nnasaki:20131217045230p:plain
f:id:nnasaki:20131217045313p:plain
f:id:nnasaki:20131217045313p:plain
f:id:nnasaki:20131217045410p:plain
f:id:nnasaki:20131217045410p:plain

ベンチマークをしてみる

これだけじゃつまらないので、モバイル・サービスに負荷をかけてみます。今回は Load Impact という負荷テストをしてくれるWebサービスを利用しました。

まず、モバイル・サービスのTableの設定で、GET を誰でも出来るようにします。

f:id:nnasaki:20131217055304p:plain
f:id:nnasaki:20131217055304p:plain

ブラウザにて https://hogehoge.azure-mobile.net/tables/TodoItem を入力して、表示されるか確認します。次のようにJSONで値が表示されれば問題ありません。

f:id:nnasaki:20131217055712p:plain
f:id:nnasaki:20131217055712p:plain

loadimpact にて、https://hogehoge.azure-mobile.net/tables/TodoItemを入力してテストをします。設定等は適当にAWSのEC2東京から計測してみました。

f:id:nnasaki:20131217060217p:plain
f:id:nnasaki:20131217060217p:plain

画像には表示されていないですが、レスポンスタイムの平均は293.72msでした。ちょっと遅いですね。日本リージョンが出来るとかなり改善されると思います。テストの詳細はこちらから確認出来ます。

New Relic のほうは、max 433 rpm, avg 88.0 rpmで、処理時間も avg 9.43ms と結構裁けています。

f:id:nnasaki:20131217060918p:plain
f:id:nnasaki:20131217060918p:plain

ちなみに、Windows Azure 管理ポータル のダッシュボードは次のようになっていました。あまりベンチマークやりすぎると無料枠を超えてしまうので注意しましょう。

f:id:nnasaki:20131217061938p:plain
f:id:nnasaki:20131217061938p:plain

まとめ

New Relic を使用することで、どのAPIがいつ・どれぐらいの使われていて、どのくらい速度が出ているか?等の情報が簡単に取得できます。 今回ご紹介した内容はすべて無料で試せますので、是非トライしてみてください!

明日は papeMK2 さんです。