使用以前版本的 Java Play 框架,我们可以提供命令行 argent 来加载监控代理。例如,NewRelic 可以加载为
./path/to/start -javaagent:/path/to/newrelic.jar
随着 2.2 的发布,Play 团队对启动脚本进行了重大更改。据我所知,它不再支持 javaagents。还有其他人使用 Java Play 2.2+ 运行 NewRelic 吗?播放很棒,但如果您无法在生产环境中监控它,它的技术就毫无用处......
使用以前版本的 Java Play 框架,我们可以提供命令行 argent 来加载监控代理。例如,NewRelic 可以加载为
./path/to/start -javaagent:/path/to/newrelic.jar
随着 2.2 的发布,Play 团队对启动脚本进行了重大更改。据我所知,它不再支持 javaagents。还有其他人使用 Java Play 2.2+ 运行 NewRelic 吗?播放很棒,但如果您无法在生产环境中监控它,它的技术就毫无用处......
似乎您可以为Java 选项添加前缀-J
(以类似于使用系统属性-D
的方式):
$ 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)
...
使用 Play Framework 2.2 中的新本机打包程序,您需要在JAVA_OPTS
环境变量中设置 Java 选项。
这适用于 PlayFramework 2.3.x 我将代理 jar + yml 配置文件复制到 PLAY_APP_ROOT/lib
sbt start -J-javaagent:lib/newrelic.jar
在 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"