![](/img/trans.png)
[英]Running a java application with spring-boot, and gradle on digitalocean
[英]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.