如何将java代理程序附加到正在运行的spring-boot应用程序

问题描述 投票:1回答:1

我有一个spring boot应用程序打包成在端口上运行的war,现在我想将java代理附加到此应用程序,以使用Prometheus监视微服务。但是没有使用任何弹簧插件来削减指标。

为此我找到了一种方法来运行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启动应用程序一样

怎么能实现这一目标?

java maven spring-boot agent
1个回答
0
投票

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

设置MAVEN_OPTS = -javaagent:路径到javaagent jar = PORT = 9300

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

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

<configuration>

    <agent>    
        PATH to JAR=port=XXXX

    </agent>

</configuration>

但我们的暂存环境与Jenkins作业一起运行,这些作业构建并将应用程序战争部署到tomcat服务器并启动tomcat(通过运行./startup.sh。)所以我已经将java代理的jar路径添加到我的tomcat的setenv.sh中的catalina_opts服务器。

它正如预期的那样有效。

© www.soinside.com 2019 - 2024. All rights reserved.