繁体   English   中英

如何将Java代理附加到正在运行的Spring Boot应用程序

[英]How to attach a java agent on to a running spring-boot application

我有一个春季启动应用程序打包成一个在端口上运行的war,现在我想将Java代理附加到此应用程序,以使用Prometheus监视微服务。 但是,无需使用任何spring插件即可抓取指标。

为此,我找到了一种通过以下方式启动应用程序来运行Java代理的方法(jus将我的应用程序打包到jar中以进行试用,它可以正常工作)

java -javaagent <Path-to javaagent jar>:PORT -jar app.jar

如果将我的项目打包到jar中,这将很好地工作。它在PORT上启动了Java-agent,并且在其他端口上启动了我的应用程序,并且无法从java-agent获取指标。

但是实际的问题是我的应用程序打包成一堆大战。

我们可以运行带有war文件的Java代理吗?

另外,我想尝试的另一件事是,使用maven启动应用程序后,将此代理jar附加到jvm,就像其他任何带有“ mvn spring-boot:run”的spring boot应用程序一样

如何做到这一点?

正如@Strelok所建议的那样,我已将java代理添加到maven_opts中,以便在端口上运行,

设置MAVEN_OPTS = -javaagent:Path-to javaagent jar = PORT = 9300

当我使用mvn spring-boot:run命令运行应用程序时,这在我的本地环境中有效。

但是,如果要同时运行/监视两个不同的微服务,则如上所述添加maven_opts可能会导致第二个微服务出现问题,因为该代理已经在同一端口上运行。 在这种情况下,我们可以在spring-boot-maven-plugin下将agent标记添加到pom.xml中,而不是将maven_opts添加到env变量中以启动代理,如下所示:

<configuration>
    <agent>    
        PATH to JAR=port=XXXX
    </agent>
</configuration>

但是我们的暂存环境使用Jenkins作业运行,该作业将应用程序war构建并部署到tomcat服务器并启动tomcat(通过运行./startup.sh。)因此,我在tomcat的setenv.sh中的catalina_opts中添加了Java代理的jar路径。服务器。

并按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM