heroku でのパフォーマンス測定に、New Relic というアドオンが使えると聞いたので、早速使ってみました。以下に手順をメモっときます。
アドオンの有効化
まず最初にアドオンを有効にします。
mor@T105-PandRDev:~/work/projects/pandr/vehicle$ heroku addons:add newrelic:standard Adding newrelic:standard on buslock... done, v29 (free) Use `heroku addons:docs newrelic:standard` to view documentation. mor@T105-PandRDev:~/work/projects/pandr/vehicle$
でOKです。
Play! Framework 用の設定
基本的に設定手順はNew Relic のドキュメントに書いてあります。が、2点ほどはまりました。
最初に、newrelic.yml ファイルをプロジェクトのルートフォルダに置け、とあるのですが、これが既にどこにあるのか分かりません。結局、New Relicのサイトのドキュメントを見ると、Java用のテンプレートファイルがあったので、これを使いました。このページに載っているファイルの内容をそのままコピペして、newrelic.yml という名前で保存しただけです。ファイルの中身に、ライセンスキーを入れる箇所等がありますが、特に何もしませんでした。
次に、project/Build.scala に New Relic Agent の依存性を書くのですが、このときバージョン番号が必要になります。調べ方はいろいろあると思うのですが、とりあえず、New Relic Java Agent のリリースノートがあったのでこちらの最新版を指定しました(この時点で、3.1.0)。
val appDependencies = Seq( // Add your project dependencies here, javaCore, javaJdbc, javaEbean, "postgresql" % "postgresql" % "8.4-702.jdbc4", "com.newrelic.agent.java" % "newrelic-agent" % "3.1.0" )
こんな感じです。
あとは、ドキュメントのとおりです。ProcFileにJAVA_OPTSを追加します。
web: target/start -Dhttp.port=${PORT} -DapplyEvolutions.default=true -Ddb.default.url=${DATABASE_URL} ${JAVA_OPTS} scheduledtask: java -Dconfig.file=conf/application.conf -DapplyEvolutions.default=true -Ddb.default.url=${DATABASE_URL} -cp "target/staged/*" jobs.DbMaintenanceTask .
ここまでの変更をリポジトリに追加します。
git add . git commit -m "add newrelic" git push heroku master
最後に、heroku の環境変数を設定します。
mor@T105-PandRDev:~/work/projects/pandr/vehicle$ heroku config:set JAVA_OPTS="-XX:MaxPermSize=128m -Xmx334m -Xss512k -XX:+UseCompressedOops -Dnewrelic.bootstrap_classpath=true -javaagent:target/staged/newrelic-agent-3.1.0.jar" Setting config vars and restarting buslock... done, v31 JAVA_OPTS: -XX:MaxPermSize=128m -Xmx334m -Xss512k -XX:+UseCompressedOops -Dnewrelic.bootstrap_classpath=true -javaagent:target/staged/newrelic-agent-3.1.0.jar mor@T105-PandRDev:~/work/projects/pandr/vehicle$
これで、OKです。
確認
さて、確認してみましょう。
herokuのダッシュボードを開きます。
適当にアプリケーションへのアクセスを起こしておいてから、New Relic を選択すると
のように、パフォーマンスが記録されているのが分かります。
詳しい機能はおいおい調べるとしてとりあえずこれで使えるようになりました。