Spring Boot 2.5.12应用集成Paketo OpenTelemetry Buildpack失败
问题解决:Spring Boot 2.5.12 + OpenTelemetry自动Instrumentation Docker部署失效
问题描述
- 环境:Spring Boot 2.5.12应用,通过
spring-boot-maven-plugin构建Docker镜像,使用docker-compose部署 - 操作:参考相关文档配置,在
pom.xml的插件配置中添加<BP_OPENTELEMETRY_ENABLED>true</BP_OPENTELEMETRY_ENABLED>,执行mvn clean spring-boot:build-image构建镜像后,在app.yml中设置BPE_OTEL_TRACES_EXPORTER等OpenTelemetry相关环境变量,通过docker compose -f app.yml up启动应用 - 异常:执行
docker run --entrypoint launcher -it appname:latest bash -c set未看到配置的环境变量生效,无追踪数据发送到Zipkin,日志也无相关OpenTelemetry信息;但非Docker环境下功能正常
解决方法
通过在spring-boot-maven-plugin的配置中显式指定buildpacks,并将所有OpenTelemetry相关环境变量统一移入pom.xml的插件配置中,问题得到解决。完整配置示例如下:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <image> <name>appname</name> <buildpacks> <buildpack>paketo-buildpacks/java</buildpack> <buildpack>gcr.io/paketo-buildpacks/opentelemetry</buildpack> </buildpacks> <env> <BP_OPENTELEMETRY_ENABLED>true</BP_OPENTELEMETRY_ENABLED> <BPE_OTEL_JAVAAGENT_ENABLED>true</BPE_OTEL_JAVAAGENT_ENABLED> <BPE_OTEL_TRACES_EXPORTER>zipkin</BPE_OTEL_TRACES_EXPORTER> <BPE_OTEL_EXPORTER_ZIPKIN_ENDPOINT>http://zipkinhost:9411/api/v2/spans</BPE_OTEL_EXPORTER_ZIPKIN_ENDPOINT> <BPE_OTEL_SERVICE_NAME>appname</BPE_OTEL_SERVICE_NAME> </env> </image> </configuration> </plugin>
注意事项
- 当前配置直接将追踪数据发送到Zipkin,后续可调整为发送到OpenTelemetry Collector
- 所有OpenTelemetry相关环境变量不要在
app.yml中设置,必须统一放在pom.xml的插件配置内
内容的提问来源于stack exchange,提问作者Jeremy
相关产品推荐
相关产品推荐

