Spring Boot应用在NewRelic中无法显示自定义代码事务信息,如何自动插桩?
解决New Relic Java Agent无法捕获自定义代码事务详情的方案
1. 确认Agent自动插桩基础配置有效性
首先检查容器内JVM启动参数是否正确注入Agent,示例参数如下:
-javaagent:/path/to/newrelic.jar -Dnewrelic.config.file=/path/to/newrelic.yml
同时验证newrelic.yml核心配置项:
app_name:确保配置正确,避免Agent关联错误应用实体class_transformer.enabled:确认值为true(默认开启,需排查是否被自定义配置覆盖)transaction_tracer.enabled:设置为true,确保事务追踪功能开启
2. 匹配自动插桩默认规则
New Relic Java Agent默认对Spring注解类的方法自动插桩,检查自定义代码:
- 业务类是否使用
@Service、@Component、@RestController等Spring注解,这类类的方法会被自动追踪 - 若为普通Java类,需通过自定义插桩配置指定追踪范围
3. 添加自定义插桩配置(非Spring注解类场景)
如果自定义代码无Spring注解,可通过两种方式配置:
方式1:在newrelic.yml中添加配置
class_transformer: custom_transformers: - name: "CustomBusinessTransformer" class_name: "com.yourcompany.yourproject.service.CustomBizService" methods: - name: "handleUserRequest" parameters: - "com.yourcompany.yourproject.dto.UserRequest"
方式2:创建独立XML配置文件
在Agent的config目录下创建custom_instrumentation.xml:
<?xml version="1.0" encoding="UTF-8"?> <instrumentation> <pointcut transactionStartPoint="true"> <className>com.yourcompany.yourproject.service.CustomBizService</className> <method> <name>handleUserRequest</name> <parameterTypes> <type>com.yourcompany.yourproject.dto.UserRequest</type> </parameterTypes> </method> </pointcut> </instrumentation>
注意:确保配置文件在容器中正确挂载,Agent拥有读取权限。
4. 验证版本兼容性
你使用的v8.7.0版本已支持Spring Boot 3.1.5和Java 17,但如果存在适配问题,可尝试升级到最新稳定版Agent(如v8.10.0+),提升兼容性与稳定性。
5. 容器环境额外检查
在AKS集群中运行时,需确认:
- Agent的JAR包和配置文件已正确挂载到容器,权限设置为可读(如
chmod 644) - JVM启动参数未被容器启动脚本覆盖,Agent配置成功生效
- 容器网络可正常访问New Relic采集端点
collector.newrelic.com,可通过curl命令测试连通性
6. 借助Agent日志排查问题
在newrelic.yml中开启调试日志:
log_level: debug
查看容器日志,重点搜索以下关键词:
ClassTransformer:确认自定义类是否被成功转换Transaction:检查事务是否被正确创建与追踪Error:排查插桩失败的异常信息
内容的提问来源于stack exchange,提问作者Franck Anso
相关产品推荐
相关产品推荐

