我們有一個docker容器,它通過supervisord在tomcat7中運行java7應用程序。我們希望通過newrelic來監控APM。具有newrelic java代理和supervisord的Docker容器首次啓動時不發送數據
這裏是supervisord配置文件
[program:tomcat]
command=/home/ec2-user/tomcat7/bin/catalina.sh run
environment=CATALINA_OPTS=" -javaagent:/home/ec2-user/tomcat7/newrelic/newrelic.jar"
這裏就是我們在Dockerfile
COPY newrelic.yml /home/ec2-user/tomcat7/newrelic/newrelic.yml
添加我們newrelic.yml配置文件當搬運工容器啓動時,它運行supervisord,這將啓動正確的Java應用程序。雖然,如果我們連接到容器並轉到tomcat7/newrelic
文件夾,我們看到沒有創建logs
文件夾。沒有數據發送到NewRelic的,即使ps aux | grep tomcat
告訴我們,-javaagent
選項正確傳遞:
/usr/bin/java -Djava.util.logging.config.file=/home/ec2-user/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -javaagent:/home/ec2-user/tomcat7/newrelic/newrelic.jar -Djava.endorsed.dirs=/home/ec2-user/tomcat7/endorsed -classpath /home/ec2-user/conf:/home/ec2-user/tomcat7/bin/bootstrap.jar:/home/ec2-user/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/home/ec2-user/tomcat7 -Dcatalina.home=/home/ec2-user/tomcat7 -Djava.io.tmpdir=/home/ec2-user/tomcat7/temp org.apache.catalina.startup.Bootstrap start
如果我們在容器殺死tomcat7過程,supervisord重新啓動過程,然後我們看到了「日誌「文件夾出現,並且數據正確地發送到新的。
是否有任何理由爲什麼第一次supervisord啓動的過程newrelic代理不附加,但在第二次啓動?
- supervisord版本:3.1.3
- 劑NewRelic的版本:3.21.0
- Tomcat的版本:7
- Java版本:7
- 搬運工版本:1.7.1