如何在OpenShift上运行搭载elastic-apm Java代理的Spring Boot应用
OpenShift部署Spring Boot应用接入Elastic APM的可行方案
以下两种方案均可以实现你的需求,优先推荐第一种无需修改启动命令的方案,适配OpenShift S2I构建的默认逻辑,操作门槛更低。
方案一:使用Java S2I镜像原生环境变量配置(推荐)
OpenShift官方提供的Java 8构建镜像默认支持通过JAVA_OPTS_APPEND环境变量追加JVM启动参数,无需修改容器启动命令,操作步骤如下:
- 第一步:将
elastic-apm-agent-1.26.0.jar、elasticapm.properties两个文件放到你的Spring Boot项目的任意目录(比如src/main/resources/apm/),提交到GitLab仓库,确保构建时文件会被打包到镜像中。 - 第二步:在OpenShift Web控制台进入对应应用的「部署」管理页面,添加以下环境变量:
- 变量名
JAVA_OPTS_APPEND,值为:-javaagent:/deployments/src/main/resources/apm/elastic-apm-agent-1.26.0.jar -Delastic.apm.config_file=/deployments/src/main/resources/apm/elasticapm.properties - 其余APM配置可以直接通过Elastic APM支持的环境变量传入(无需写在配置文件里,修改更灵活),示例配置:
变量名 变量值 ELASTIC_APM_SERVICE_NAME ms-salarie ELASTIC_APM_SERVER_URLS http://<apm-server的集群内部Service地址>:8200 ELASTIC_APM_ENVIRONMENT production ELASTIC_APM_APPLICATION_PACKAGES com.leanerp.salarie
- 变量名
- 第三步:保存部署配置,触发重新部署即可生效。
方案二:手动覆写容器启动命令
如果需要完全自定义启动逻辑,可以直接修改Deployment的容器启动命令,操作步骤如下:
- 同样先将agent相关文件提交到GitLab,确保构建后镜像内存在对应文件。
- 进入应用的「部署」管理页面,找到容器配置板块,修改「命令」和「参数」:
- 命令填写:
java - 参数按顺序依次填写:
-javaagent:/deployments/src/main/resources/apm/elastic-apm-agent-1.26.0.jar -Delastic.apm.service_name=ms-salarie -Delastic.apm.server_urls=http://<apm-server的集群内部Service地址>:8200 -Delastic.apm.secret_token= -Delastic.apm.environment=production -Delastic.apm.application_packages=com.leanerp.salarie -Delastic.apm.config_file=/deployments/src/main/resources/apm/elasticapm.properties -jar /deployments/salarie-1.1.3-SNAPSHOT.jar
- 命令填写:
- 保存配置触发重新部署即可。
补充注意事项
- 不要使用
localhost作为apm-server的访问地址,需要替换为OpenShift集群内apm-server对应的Service域名,格式一般为<apm-server服务名>.<项目命名空间>.svc.cluster.local。 - 如果不想将agent包提交到代码仓库,可以在构建配置中添加预构建脚本,构建阶段自动下载agent包到镜像指定路径即可。
内容的提问来源于stack exchange,提问作者Eloi
相关产品推荐
相关产品推荐

