こんにちは、こんばんは、おはようございます。株式会社adingo 高橋です。
弊社adingoは月間200億impを捌くSSP「Fluct」を提供しており、100台近いサーバでリクエストを捌いたり、大規模データの分析をしております。

さて、そんな仕事とは直接の関係は無いですが、最近New Relicがなかなか凄い新機能をβリリースしていたので簡単な紹介をしたいと思います。
New Relicとはアプリケーションとサーバのモニタリングを行うサービスです。yumでagentをインストールするだけで手軽に導入できます。今回紹介する新機能は「JSのエラーレポート機能」と「AJAXの実行時間レポート」で、リリース文は以下となります。
http://blog.newrelic.com/2014/03/13/javascript-error-reporting-ajax-timing-new-relic/

(1)インストールとアプリケーション設定
新機能を使う前にまずアプリケーション設定を行う必要があります。
アカウントを持っていない場合、New Relicページの右上の「Create Free Account」ボタンから新規にアカウントを作成します。
ログインして「Application」のメニューを選択するとメニュー画面が表示されますので、案内に従ってアプリケーションの設定を行ってください。
regist_app2

自分(CentOS)の場合は以下のコマンドで登録しました。
$ sudo rpm -Uvh http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm
$ sudo yum install newrelic-php5
# ↓ライセンスキーの登録
$ sudo newrelic-install install
# ↓apacheであればhttpdを再起動
$ sudo /etc/init.d/php-fpm restart
phpinfoで以下のようにnewrelicが表示されればOKです。
phpinfo

(2)JSのエラーレポート機能を試す
アプリケーションを登録してしばらくすると、Browserメニューの中に「PHP Application」のようにアプリ名が表示されます。
選択して「Settings」タブに移動後、「Enable Beta features」にチェックを入れて保存します。
setting

以下のように「newrelic/render_js.php」を作成後、ブラウザで開いてみてください。
(「alert」をスペルミスしているためスクリプトエラーになるはずです。)
$ cd [アプリケーションのドキュメントルート]
$ mkdir newrelic
$ vi newrelic/render_js.php
<?phpecho <<<EOT
<html>
<head>
<title>test</title>
<script type="text/javascript">
alet('hoge');
</script>
</head>
<body>test</body>
</html>
EOT;
しばらくして、「JS errors」のタブを選択
js_error
「Show all JavaScript errors」を選択 
js_error1
更に詳細を見てみると
js_error2
すげええええ!!!JavaScriptのエラーをハンドリングして表示してくれました。 

(3)AJAXの実行時間レポート機能を試す
次に以下のように「newrelic/render_ajax_js.php」を作成して、ajaxのリクエストを発生させます。
$ vi newrelic/render_ajax_js.php
<?php
echo <<<EOT
<html>
<head>
<title>test</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#test').click(function(){
$.get('/', function(){ });
});
});
</script>
</head>
<body>
<input type="button" id="test" value="test">
</body>
</html>
 しばらく待ってレポートを見てみると以下のようにレポートに反映されました。
ajax_timing

今のところ、 下記の値がグラフされるようです。
・Total time percentage:処理時間に占めるAJAXリクエストの割合
・Throughput:1分あたりのリクエスト数
・Status codes of all requests:200以外のステータスコードの割合
・Average data transfer per request:リクエストあたりの平均送信バイト数

以上、New Relicに追加された新機能の紹介でした。
βリリースかつ htmlにJavaScriptのハンドリング処理を差し込むので本番環境に入れるのは少し怖いですが、テスト環境に導入してみるのは良いかもしれないと思いました。

[PR]
VOYAGE GROUPではアドテクエンジニアを絶賛募集中です!
Cosmi データマイニングエンジニア
広告配信システムエンジニア
Zucksフロントエンジニア