You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过OpenTelemetry Spring Boot Starter零代码捕获方法级追踪?

问题描述

我正尝试使用零代码插桩的Spring Boot Starter将OpenTelemetry集成到现有Spring Boot应用中,已遵循官方文档在application.yml中完成如下配置:

otel:
  propagators:
    - tracecontext
  exporter:
    otlp:
      traces:
        endpoint: 'http://<otel_collector_server>:4319/v1/traces'
        protocol: http/protobuf
    metrics:
      exporter: none
    logs:
      exporter: none

当前配置下,应用可成功将追踪数据导出至OpenTelemetry Collector,并能在Grafana仪表盘中查看,但仅显示跨服务的端点调用高层信息,无法获取端点命中后调用的具体方法及方法执行时长。我希望捕获方法级追踪,以查看请求链路中调用的方法及其耗时。

已尝试操作

  • 确认项目已添加opentelemetry-spring-boot-starter依赖;
  • 验证追踪数据已成功导出至Collector。

待解答问题

  1. 是否需额外配置以自动捕获方法级追踪?
  2. 若依赖零代码插桩,是否仍需使用@WithSpan或手动埋点?
  3. 是否可通过配置启用该功能,还是需显式扩展插桩逻辑?

环境信息

  • Java版本:21
  • Spring Boot版本:3.3.0
  • OpenTelemetry Spring Boot Starter版本:2.6.0

解决方案

1. 是否需额外配置以自动捕获方法级追踪?

需要。默认零代码插桩仅自动捕获Spring MVC/WebFlux端点、数据库调用、HTTP客户端请求等基础链路节点,不会主动追踪普通业务方法。你可以通过OpenTelemetry的方法级插桩配置开启该功能。

2. 若依赖零代码插桩,是否仍需使用@WithSpan或手动埋点?

如果通过配置覆盖了需要追踪的方法范围,就不需要额外使用@WithSpan或手动埋点;但如果目标方法不在配置的匹配规则内,或者需要自定义Span名称、添加属性等精细化控制,还是得通过@WithSpan或手动埋点补充。

3. 是否可通过配置启用该功能,还是需显式扩展插桩逻辑?

完全可以通过配置启用,无需显式扩展插桩逻辑。在application.yml中添加方法匹配规则即可,示例如下:

otel:
  instrumentation:
    methods:
      enabled: true
      includes:
        # 匹配指定根包下所有类的所有方法
        - "com.yourbiz.**.*(..)"
        # 匹配指定类的特定方法
        - "com.yourbiz.service.OrderService.createOrder(..)"
      # 可选:排除无需追踪的工具类方法
      excludes:
        - "com.yourbiz.util.**.*(..)"

注意事项

  • 匹配规则使用通配符语法:**表示任意子包,*表示任意类/方法名,(..)表示任意参数列表;
  • 方法级追踪会增加追踪数据量,建议仅针对核心业务方法配置,避免不必要的性能开销;
  • 你的OpenTelemetry Spring Boot Starter版本2.6.0已支持该配置项,无需升级依赖。

如果配置后仍未捕获到方法级Span,可排查:

  • 配置的包路径、方法名是否与实际代码匹配;
  • 应用启动日志中是否有OpenTelemetry方法插桩的加载提示;
  • 是否存在配置项拼写错误(如otel.instrumentation.methods.enabled是否设为true)。

内容的提问来源于stack exchange,提问作者Harshad Panmand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:20:16