2

我目前正在做一个 PoC 以将 Elastic APM 集成到我的 spring 应用程序中。我正在关注此页面:- https://www.elastic.co/guide/en/apm/agent/java/1.x/setup-attach-api.html 以编程方式附加elastic-apm jar。

我已将所需的 jar 添加到 pom.xml 中,但我不知道应该如何将 Elastic Apm (ElasticApmAttacher.attach()) 附加到我的正常 spring 代码中。给出的示例适用于 SpringBoot。但我的应用程序位于 Spring 核心(spring-core、spring-web ..)上,其余服务使用 Jax-Rs 公开。

4

2 回答 2

0
    Map<String, String> apmConfiguration = new HashMap<>();
    apmConfiguration.put("server_urls", "http://localhost:8200");
    apmConfiguration.put("service_name", "SpringBootApp");
    ElasticApmAttacher.attach(apmConfiguration);
于 2020-05-06T18:46:03.867 回答
0

您可以在 Spring Application 主类中附加 ElasticApmAttacher.attach()

对于打包成war文件并部署到Tomcat服务器的SpringBootApplication,可以在configure方法中加入

下面的代码可能会有所帮助:

package com.test.main

import co.elastic.apm.attach.ElasticApmAttacher
import org.springframework.boot.Banner
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.builder.SpringApplicationBuilder
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer


@SpringBootApplication(scanBasePackages = [ "com.test" ])
class Application extends SpringBootServletInitializer{

    static void main(String[] args) {
        SpringApplication app = new SpringApplication(Application.class)
        app.setBannerMode(Banner.Mode.OFF)
        ElasticApmAttacher.attach();
        app.run(args)
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        ElasticApmAttacher.attach();
        return application.sources(Application.class)
    }
}
于 2020-03-05T07:37:36.357 回答