有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

maven如何将java代理附加到正在运行的springboot应用程序上

我有一个spring boot应用程序打包成war,在一个端口上运行,现在我想在这个应用程序上附加一个java代理,使用Prometheus监控微服务。但是没有使用任何spring插件从中获取度量

为此,我找到了一种在应用程序中运行java代理的方法,方法是以以下方式启动它(JU将我的应用程序打包到jar中以供试用—它工作得非常好)

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

如果我的项目被打包到jar中,它在端口上启动java代理,在另一个端口上启动我的应用程序,并且我能够从java代理获得度量,那么这就很好了

但实际问题是我的应用程序被打包成了一场战争

我们可以用war文件运行java代理吗

另外,我想尝试的另一件事是,在应用程序使用maven启动后,将这个代理jar连接到jvm,就像任何其他使用“mvn spring boot:run”的spring boot应用程序一样

如何做到这一点


共 (1) 个答案

  1. # 1 楼答案

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

    set MAVEN_OPTS =-javaagent:Path-to javaagent jar=PORT=9300

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

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

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

    但是我们的登台环境使用Jenkins jobs运行,Jenkins jobs在tomcat服务器中构建并部署应用程序war,并启动tomcat(通过运行./startup.sh.) 因此,我在setenv中将java代理的jar路径添加到catalina_选项中。我的tomcat服务器

    正如预期的那样,它起了作用