巷で話題の New Relic を Windows Azure Web サイトで動かしているサービス上で使ってみました。ほぼリアルタイムでいろんな情報を見れて便利ですね。
スロークエリとか例外などもモニタリング出来るので、メールでの通知を組み込まなくてもいいかなと思いました。何だかんだでメール送信ってめんどくさいし。
で、組み込む方法なんですが、New Relic 公式のドキュメントに Windows Azure Web サイトで運用する方法が載ってます。これを見るだけでぶっちゃけ問題ないと思います。
Azure Web Sites - New Relic Documentation
セットアップ方法は Brady Gaster 氏のブログでも紹介されてます。英語ですが、細かく手順が書かれているので参考になると思います。
BradyGaster.com - New Relic and Windows Azure Web Sites
とまあ、これで終わるのも微妙なので、実際に順を追ってインストール方法を書いておきます。
Web サイトで New Relic クライアントをインストールする方法ですが、基本的には NuGet からパッケージをインストールするだけです。
ただし、Web サイトの標準インスタンス*1の場合は 32 ビットと 64 ビットの選択が出来るようになっているので、インストールするパッケージは間違えないように注意してください。
NuGet Gallery | Packages matching NewRelic.Azure.WebSite
今回は標準インスタンスの 64 ビットを選択しているので、64 ビット向けの New Relic クライアントをインストールしました。
Install-Package NewRelic.Azure.WebSite.x64
NuGet でインストール中にダイアログが表示されて、ライセンスキーを入力しろと言われます。ライセンスキーは Azure Store から購入した場合、管理ポータルのアドオンから接続文字列を選択すると表示されます。
これで New Relic のインストールは完了なので、実際に Web サイトへデプロイを行います。デプロイ自体は今まで通りです。
デプロイ後、管理ポータルの構成から設定を行います。設定値は公式ドキュメントや NuGet でのインストール時に記載されているので、それを見てください。基本的に全サイト設定値は同じだと思います。
設定を保存したタイミングで New Relic が動作を開始して、モニタリングが可能となります。後はグラフ見て楽しんでおきましょう(
最後に Web サイトに New Relic をインストールしてハマった点を書いておきます。
デプロイで失敗する
New Relic のライブラリ更新や複数人でデプロイを行った場合、デプロイが途中で失敗します。
これは NewRelic.Profiler.dll がロックされているのが原因なので、管理ポータルから該当する Web サイトを停止して、その間にデプロイを行って再起動して回避する形になります。
非常にめんどくさい対応なのですが Known issues にも記載されている内容なので、とりあえずはこれで対応する必要があります。
ページで文字化けが発生する
New Relic はデフォルトの設定のままだと、HTML にモニタリング用のスクリプトを追加するようになっています。これでレンダリングやページの表示自体にかかった時間を計測することが出来ます。
しかし、現在の最新バージョン 2.9 ではマルチバイトを含む特定のページでは文字化けが発生するようです。仕方がないので、newrelic.config を以下のように弄ってブラウザモニタリングをオフにします。
<!-- false にすると無効になる --> <browserMonitoring autoInstrument="false" />
オフにすると New Relic のページで Browser 周りのグラフが表示されなくなりますが、サーバサイドのモニタリングは正常に動作します。
*1:元:占有インスタンス