しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Windows Azure Web サイトで New Relic を使ってみた

巷で話題の New Relic を Windows Azure Web サイトで動かしているサービス上で使ってみました。ほぼリアルタイムでいろんな情報を見れて便利ですね。

f:id:shiba-yan:20130807004731p:plain

スロークエリとか例外などもモニタリング出来るので、メールでの通知を組み込まなくてもいいかなと思いました。何だかんだでメール送信ってめんどくさいし。

で、組み込む方法なんですが、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 から購入した場合、管理ポータルのアドオンから接続文字列を選択すると表示されます。

f:id:shiba-yan:20130802155536p:plain

これで New Relic のインストールは完了なので、実際に Web サイトへデプロイを行います。デプロイ自体は今まで通りです。

デプロイ後、管理ポータルの構成から設定を行います。設定値は公式ドキュメントや NuGet でのインストール時に記載されているので、それを見てください。基本的に全サイト設定値は同じだと思います。

f:id:shiba-yan:20130802155633p:plain

設定を保存したタイミングで 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:元:占有インスタンス