在 Docker 中传递 Java APM 代理设置

Passing Java APM Agent settings in Docker

我使用 Elastic APM 代理监控我的 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 ./</pre>
    
  2. 运行 创建的图像:

    docker run  --network host -p 8080:8080 test-apm:latest</pre>
    
  • 注意我的 apm-serverELK-stack 运行ning 在我的主机上, 我想如果你也这样做并且对 mach 你的环境做一些小的改变它应该可以正常工作,