在Docker中传递Java APM代理设置



我使用Elastic APM Agent监视我的jar,我手动运行以下命令:

java -javaagent:../infrastructure/agent/apm-agent.jar 
-Delastic.apm.service_name=server 
-Delastic.apm.server_urls=http://${APM_HOST}:8200 
-Delastic.apm.application_packages=package.coù 
-jar ./target/server-0.0.1-SNAPSHOT.jar &

现在,我想使用docker运行来传递这些参数,我创建了图像,并尝试使用此命令来传递这些设置,但应用程序没有启动

docker run --name app -e CATALINA_OPTS='-Dspring.config.location=/usr/local/tomcat/application-recette.properties,/usr/local/tomcat/application.yml' 
-e CATALINA_OPTS='-Delastic.apm.service_name=server' 
-e CATALINA_OPTS='-Delastic.apm.server_urls=http://10.128.0.4:8200' 
-e CATALINA_OPTS='-Delastic.apm.application_packages=package.com' 
-d -p 9000:8080 image:v1

有解决这个问题的办法吗?

感谢

实际上,根据你如何设置和配置ELK堆栈,你的应用程序没有启动有很多原因,但对我来说,我做了以下几点,它运行得很好:

  1. 通过Dockerfile发送application.jarapm-agent.jar,并在容器中运行它们:

FROM openjdk:8-jre-alpine

COPY javaProjects/test-apm/target/test-apm-0.0.1-SNAPSHOT.jar /app.jar 

COPY elastic-apm-agent-1.19.0.jar /apm-agent.jar 

CMD ["/usr/bin/java","-javaagent:/apm-agent.jar", "-Delastic.apm.service_name=my-cool-service -Delastic.apm.application_packages=main.java -Delastic.apm.server_urls=http://localhost:8200","-jar", "/app.jar"]
  1. 从此Dockerfile:创建图像

    docker build -t test-apm:latest ./
  2. 运行创建的图像:

    docker run  --network host -p 8080:8080 test-apm:latest
  • 注意我的apm服务器ELK堆栈正在我的主机上运行,我认为,如果你也这样做,对你的环境做一些小的改变,它应该会很好地工作

最新更新