New Relic を Tomcat 7 (jsvc) で使ってみた
環境
インストール
基本的には、New Relic の setup ページの通りに操作する。
newrelic_agent2.10.1.zip を展開し、
/home/tomcat/newrelic
となるように配置する。
# cd /home/tomcat/newrelic # mkdir logs # chmod +w logs # java -jar newrelic.jar install Nov 27, 2012 17:58:22 +0900 NewRelic 1 INFO: Agent is using Log4j ***** ( ( o)) New Relic Java Agent Installer ***** Installing version 2.10.1 ... Backed up start script to /home/tomcat/bin/catalina.sh.20121127_175822 Added agent switch to start script /home/tomcat/bin/catalina.sh No need to create New Relic configuration file because: .:. A config file already exists: /home/tomcat/newrelic/newrelic.yml ***** Install successful ***** Next steps: You're almost done! To see performance data for your app: .:. Restart your app server .:. Exercise your app .:. Log into http://rpm.newrelic.com Within two minutes, your app should show up, ready to monitor and troubleshoot. If app data doesn't appear, check newrelic/logs/newrelic_agent.log for errors.
インストーラの動きは、catalina.sh に以下の内容を書き込むだけらしい。
# diff /home/tomcat/bin/catalina.sh.20121127_175822 /home/tomcat/bin/catalina.sh 99a100,104 > > # ---- New Relic switch automatically added to start command on 2012 Nov 27, 17:58:22 > NR_JAR=/home/tomcat/newrelic/newrelic.jar; export NR_JAR > JAVA_OPTS="$JAVA_OPTS -javaagent:$NR_JAR"; export JAVA_OPTS >
通常はこれで OK なはずだが、Tomcat をデーモン化するために jsvc を使っている場合には、catalina.sh を読まないらしいのでうまくいかないっぽい。
今回試した環境は jsvc に付属している Tomcat7.sh というスクリプトで Tomcat を起動しているので、中身を読むと「JAVA_OPTS を上書きしたい場合は setenv.sh に書け」と書いてある。ので、その通りにする。
# vim /home/tomcat/bin/setenv.sh # cat /home/tomcat/bin/setenv.sh #!/bin/sh NR_JAR=/home/tomcat/newrelic/newrelic.jar; export NR_JAR JAVA_OPTS="$JAVA_OPTS -javaagent:$NR_JAR"; export JAVA_OPTS
あとは、Tomcat を再起動して、適当に Java アプリを動してしばらくすると New Relic 側でデータを見ることができるようになる。