2015-11-02 26 views
1

我們有一個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

回答

2

我們發現問題:我們的tomcat中缺少temp文件夾。 如果文件夾不存在,newrelic代理程序將不會啓動,但會創建它。這就解釋了爲什麼我們第二次開始這個過程,代理正確地掛鉤了。

相關問題