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 側でデータを見ることができるようになる。