2013-09-28 6 views
7

以前のバージョンのJava Playフレームワークでは、監視エージェントを読み込むためのコマンドライン引数を提供することができました。たとえば、NewRelicは、Java Play 2.2はjavaagentをサポートしていません

./path/to/start -javaagent:/path/to/newrelic.jar 

としてロードすることができます。2.2のリリースで、Playチームは開始スクリプトを大幅に変更しました。私が知ることから、それはもはやjavaエージェントをサポートしません。 Java Play 2.2以降でNewRelicを実行している人はいますか?再生環境は素晴らしいですが、プロダクション環境でそれを監視できない場合は役に立たない技術です...

答えて

12

あなたが(-Dを使用してシステムプロパティと同様に)Javaオプション-Jの前に付けることができているようです:

$ bin/<app> -J-javaagent:lib/newrelic.jar 

はスクリプト自体にチャンスをうかがっている間にこれを発見、それが注目されます

$ bin/<app> -h 
Usage: [options]  
... 
    -J-X    pass option -X directly to the java runtime 
        (-J is stripped) 
... 
+0

これは「うまくいく」と思われますが、私はどんなデータも得ていません... – penfold

+0

素晴らしい発見!! -J引数を指定すると、NewRelicエージェントがロードされました。何らかの理由でNewRelicのログにデータが送信されていることが示されますが、NewRelicのWeb UIは更新されません。私は彼らのサポートチームから聞いて戻ってきます。 – Chris

+0

私は今データを取得しているようです。皮肉なことに、私はコレクションが失敗したと思います。 – penfold

1

Play Framework 2.2の新しいネイティブパッケージャでは、JAVA_OPTS環境変数にJavaオプションを設定する必要があります。

+0

こんにちはジェームス - 素晴らしい提案。これを行おうとしたとき、-Dフラグを指定してシステム・プロパティーで動作しましたが、-J javaオプションでは機能しませんでした。 JAVA_OPTSエクスポートを「-J-javaagent:/path/to/newrelic.jar -Dnewrelic.bootstrap_classpath = true」に設定すると、javaagentは開始されませんでした。 – Chris

+0

Bummer。なぜこれがうまくいかないのか調査します。それはすべきだと思われる。 –

+1

私はJAVA_OPTS = " - J-javaagent:path/java.newrelic-agent-3.0.1.jar"を設定しました。 (play2.2、新しい遺物、英雄を使って) – codaR0y

0

Play Frameworkバージョン2.2では、アプリケーション起動スクリプトが別のディレクトリに変更されました。 javaagentライブラリーをロードするには、フルパスを指定する必要があります。例えば

Herokuの-javaagent-1.4.jarは、プロジェクトの libディレクトリにある場合:

heroku config:set JAVA_OPTS="-Xmx384m -Xss512k -XX:+UseCompressedOops -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps -javaagent:/app/lib/heroku-javaagent-1.4.jar=stdout=true,lxmem=true" 
0

これは私が薬の瓶+ YMLの設定ファイルをコピーしたPlayFrameworkの2.3.x以降 のために働きます〜へPLAY_APP_ROOT/lib

sbt start -J-javaagent:lib/newrelic.jar 
関連する問題