문제
New Relic Java 에이전트로 실행 중인 Java 프로세스를 시작했지만 데이터가 APM UI에 보고되지 않습니다 . 애플리케이션 로그의 스택 추적에 Error bootstrapping New Relic agent
메시지가 표시됩니다.
중요
Error bootstrapping New Relic agent
메시지는 여러 오류 모드를 나타낼 수 있습니다. 스택 추적도 이 문제를 진단하는 데 중요합니다.
Error bootstrapping New Relic agent: java.lang.RuntimeException: java.io.IOException: No such file or directory
java.lang.RuntimeException: java.io.IOException: No such file or directory
at com.newrelic.bootstrap.BootstrapLoader.load(BootstrapLoader.java:136)
at com.newrelic.bootstrap.BootstrapAgent.startAgent(BootstrapAgent.java:100)
at com.newrelic.bootstrap.BootstrapAgent.premain(BootstrapAgent.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:382)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:397)
Caused by: java.io.IOException: No such file or directory
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:1006)
at java.io.File.createTempFile(File.java:1989)
at com.newrelic.bootstrap.EmbeddedJarFilesImpl$1.load(EmbeddedJarFilesImpl.java:36)
at com.newrelic.bootstrap.EmbeddedJarFilesImpl$1.load(EmbeddedJarFilesImpl.java:26)
at com.newrelic.agent.deps.com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3542)
at com.newrelic.agent.deps.com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2323)
at com.newrelic.agent.deps.com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2286)
at com.newrelic.agent.deps.com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201)
at com.newrelic.agent.deps.com.google.common.cache.LocalCache.get(LocalCache.java:3953)
at com.newrelic.agent.deps.com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3957)
at com.newrelic.agent.deps.com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4875)
at com.newrelic.bootstrap.EmbeddedJarFilesImpl.getJarFileInAgent(EmbeddedJarFilesImpl.java:66)
at com.newrelic.bootstrap.BootstrapLoader.addBridgeJarToClassPath(BootstrapLoader.java:73)
at com.newrelic.bootstrap.BootstrapLoader.load(BootstrapLoader.java:129)
... 8 more
해결책
Java 에이전트가 임시 jar
파일을 생성할 수 없으면 시작에 실패하고 스택 추적 앞의 Error bootstrapping New Relic agent
행을 System.err
로 반환합니다. 앱 서버를 사용하는 경우 일반적으로 앱 서버의 오류 로그에 나타납니다.
이 실패의 일반적인 이유와 해결 방법은 다음과 같습니다.
이 실패는 java.io.tmpdir
에 의해 지정된 기본 위치가 아닌 Java 프로세스의 임시 디렉토리 위치를 지정할 때 발생할 수 있습니다. 이 문제를 해결하려면 시작 시 시스템 속성 -Dnewrelic.tempdir=/path/to/tmpdir
을 JVM에 전달하십시오.
New Relic의 Java 에이전트는 이 시스템 속성이 전달되지 않는 한 Java의 기본 임시 디렉토리 위치( java.io.tempdir
)를 사용하려고 시도합니다. JVM이 사용할 다른 임시 디렉토리 위치를 지정한 경우 기본 디렉토리 위치가 존재하지 않을 수 있습니다. , 또는 Java 에이전트에 쓰기 액세스 권한이 없을 수 있습니다.
JVM이 시작될 때 임시 디렉토리가 없는 경우 이 실패가 발생할 수 있습니다. Java 에이전트는 JVM 수명 주기의 매우 초기에 시작됩니다. 에이전트는 임시 디렉토리가 아직 존재하지 않는 경우 생성을 시도하지 않습니다.
예를 들어, 프로세스 수명 주기의 일부는 프로세스가 완료될 때 java 임시 디렉토리를 삭제하는 것일 수 있습니다. 이 경우 Java 에이전트가 다음에 시작되기 전에 java 임시 디렉토리가 다시 생성되는지 확인하십시오.
이 실패는 임시 디렉토리가 존재하지만 Java 프로세스를 시작하는 사용자가 쓸 수 없는 경우에 발생할 수 있습니다. 이렇게 하면 Java 에이전트가 성공적으로 시작되지 않습니다.
이 문제를 해결하려면, 저항 에이전트를 실행하는 Java 프로세스를 시작하는 사용자에 대한 권한을 확인하세요. 사용자에게 임시 디렉터리 위치에 대한 write 및 execute 권한이 있는지 확인하세요.
이러한 문제 해결 팁이 작동하지 않으면 문제 해결 을 위한 Java 정보 제공 에 대한 정보를 참조하십시오.