在 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 堆栈的方式,但对我来说,我做了以下操作并且运行良好:
- 通过 Dockerfile 运送了 application.jar 和 apm-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"]
从这个 Dockerfile 创建镜像:
docker build -t test-apm:latest ./</pre>
运行 创建的图像:
docker run --network host -p 8080:8080 test-apm:latest</pre>
- 注意我的 apm-server 和 ELK-stack 运行ning 在我的主机上,
我想如果你也这样做并且对 mach 你的环境做一些小的改变它应该可以正常工作,
我使用 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 堆栈的方式,但对我来说,我做了以下操作并且运行良好:
- 通过 Dockerfile 运送了 application.jar 和 apm-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"]
从这个 Dockerfile 创建镜像:
docker build -t test-apm:latest ./</pre>
运行 创建的图像:
docker run --network host -p 8080:8080 test-apm:latest</pre>
- 注意我的 apm-server 和 ELK-stack 运行ning 在我的主机上, 我想如果你也这样做并且对 mach 你的环境做一些小的改变它应该可以正常工作,