用于Java App的Heroku New Relic Add-on无法打开newrelic.jar

时间:2013-01-15 21:30:32

标签: java heroku newrelic

downloaded New Relic 2.12.0并根据Heroku java configuration文档进行配置。

我将包内容解压缩到我的spring mvc应用程序目录的根目录,如下图所示

enter image description here

接下来,我将新文件推送到Heroku:

$ git add newrelic
$ git commit -m 'add newrelic'
$ git push heroku master

最后,我引导了新的遗物代理:

$ heroku config:add JAVA_OPTS='-Xmx384m -Xss512k -XX:+UseCompressedOops -javaagent:newrelic/newrelic.jar'

之后,我的应用程序因以下错误而失败,似乎无法找到newrelic.jar文件。

新的文档文档说JVM args(例如-javaagent:newrelic / newrelic.jar)应该包含newrelic.jar文件的完整路径,但是根据Heroku文档,-javaagent:newrelic / newrelic.jar是所有这一切。

2013-01-15T19:41:11+00:00 heroku[web.1]: Starting process with command `java -Xmx384m -Xss512k -XX:+UseCompressedOops -javaagent:newrelic/newrelic.jar -Dspring.profiles.active=prod -jar target/dependency/webapp-runner.jar --port 47412 target/*.war`
2013-01-15T19:41:11+00:00 app[web.1]: agent library failed to init: instrument
2013-01-15T19:41:11+00:00 app[web.1]: Error occurred during initialization of VM
2013-01-15T19:41:11+00:00 app[web.1]: Error opening zip file or JAR manifest missing : newrelic/newrelic.jar
2013-01-15T19:41:12+00:00 heroku[web.1]: Process exited with status 1
2013-01-15T19:41:12+00:00 heroku[web.1]: State changed from starting to crashed

更新

检查我的web dyno上的newrelic目录后,我注意到jar文件丢失了。现在我正在研究丢失的jar文件的原因。

enter image description here

更新

我的应用程序目录的根目录中的.gitignore文件排除了jar文件,这会阻止部署newrelic.jar文件。

<<<<<<< HEAD
/target
/.classpath
/.project
/.settings
/tomcat.*
/.idea
/*.iml
=======
*.class

# Package Files #
*.jar
*.war
*.ear

2 个答案:

答案 0 :(得分:3)

您是否有可能在.gitignore文件中遗漏忽略罐子的内容?如果你heroku run bash然后ls newrelic,你会看到那里的罐子吗?

答案 1 :(得分:0)

目标/依赖项文件夹中缺少jar文件存在同样的问题。

对我来说问题是pom文件(由Heroku示例提供)

这是我工作的POM:

                <executions>
                 <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>org.eclipse.jetty</groupId>
                                <artifactId>jetty-runner</artifactId>
                                <version>9.2.3.v20140905</version>
                                <destFileName>jetty-runner.jar</destFileName>
                            </artifactItem>
                            <artifactItem>
                                <groupId>com.newrelic.agent.java</groupId>
                                <artifactId>newrelic-agent</artifactId>
                                <version>3.12.0</version>
                                <destFileName>newrelic-agent.jar</destFileName>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                  </execution>
                </executions>

当然还要将New Relic添加为依赖...

        <dependency>
           <groupId>com.newrelic.agent.java</groupId>
           <artifactId>newrelic-api</artifactId>
           <version>3.12.0</version>
        </dependency>