- NewRelicとは
- よくある利用例
- Webパフォーマンス監視機能
- プラグイン
- PlayFramework1への導入手順
- NetRelic for Java
できること
- Webアプリケーションのパフォーマンス監視
- Webインフラのパフォーマンス監視
- apache, Postgresql, mongoDB, linux, windows...
- プラグインで対応インフラの追加が可能
- 死活監視/アラート
みんな使ってる
- 簡単な設定で詳細な分析が可能
- アプリケーションへの変更不要
- 儲かっててそろそろ上場するというはなし
http://www.slideshare.net/yoshinorikawasaki/newrelic-night-2013
「遅延個所の特定」と「対応効果の検証」
- ターンアラウンドタイムの把握
- リクエストからレスポンス+クライアント描画まで含めた時間
- ユーザ体感速度
- TATの内訳把握
- サーバサイド処理/ネットワーク/レンダリング/DOM操作
- 内訳をドリルダウンして個別分析
おまけ
- 描画の指定秒数を超過したページが発生したら通知する
3つの視点
- https://rpm.newrelic.com/accounts/276778/applications/2380143
- クライアントサイド(TAT)
- リクエスト送信からDOM操作まで
- サーバサイド
- リクエスト受信からレスポンス送出まで
- データベース
- サーバサイドに含まれるが個別に分析できる(有料)
遅延処理の抽出
- https://rpm.newrelic.com/accounts/276778/applications/2380143/transactions
- クライアントTATの平均値が遅いものを抽出
- サーバ処理の平均値が遅いものを抽出
- DB処理の平均値が遅いものを抽出
ドリルダウン
- TATが遅いものをドリルダウン
- 処理要素毎に経過時間を確認
- より詳細な分析も可能(Transaction trace/有料)
- https://rpm.newrelic.com/accounts/276778/applications/2380143/transactions#id=490613242&app_trace_id=2836882186
豊富なプラグイン
- https://rpm.newrelic.com/accounts/276778/plugins/directory
- Windowsサーバプラグインもあるので、普通にCPU・メモリ監視とかもできる
自分でプラグイン書けるよ
NewRelicが公開しているサンプルがある
New Relic for Java マニュアル
- NewRelic JavaAgentダウンロード
- https://oss.sonatype.org/content/repositories/releases/com/newrelic/agent/java/newrelic-java/2.21.4/newrelic-java-2.21.4.zip
- 展開フォルダをどこかに配置
- NewRelicにアカウント登録
- ライセンスキー取得
- Account Settings > Account information から
- newrelic.yml に ライセンスキーを記述
-
dependencies.yml に NewRelic を追加して deps する
-
com.newrelic.agent.java -> newrelic-api 3.1.1
-
当該アプリケーションの main.html に監視設定を差し込む
${com.newrelic.api.agent.NewRelic.getBrowserTimingHeader().raw()}
...
...
${com.newrelic.api.agent.NewRelic.getBrowserTimingFooter().raw()}
- playコマンドにjavaagentを指定してアプリケーション起動する
play run helloworld -javaagent:/full/path/to/newrelic.jar
- 起動ログにエラーが出力されなければOK
$ play run helloworld -javaagent:newrelic/newrelic.jar
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~ play! 1.2.5, http://www.playframework.org
~
~ Ctrl+C to stop
~
CompilerOracle: exclude jregex/Pretokenizer.next
1 31, 2014 10:14:07 +0900 NewRelic 1 INFO: Agent is using Logback
1 31, 2014 10:14:07 +0900 NewRelic 1 INFO: Loading configuration file "newrelic/./newrelic.yml"
Listening for transport dt_socket at address: 8000
2014-01-31 10:14:10,583 INFO Starting ......
javaangetオプションを利用
play run helloworld -javaagent:/full/path/to/newrelic.jar
- JVMがクラスをロードする際に、指定のエージェントがそのクラスのバイトコードを修正することを可能にする機構
- プロファイリングツールなどに利用される
http://www.javainthebox.net/laboratory/J2SE1.5/MiscAPI/Instrumentation/Instrumentation.html
public class AgentSample {
//premain( ) は アプリケーションの main( ) メソッドの前に呼ばれる
public static void premain(String agentArgs, Instrumentation instrumentation) {
Class[] classes = instrumentation.getAllLoadedClasses();
for (Class cls : classes) {
//ロードされたクラスが取得できるのでほげほげする
System.out.println(cls);
}
}
}