如何在OpenTelemetry Java Agent埋点中过滤特定HTTP API调用
回答
OpenTelemetry Java Agent本身已经支持按HTTP请求路径过滤追踪数据的能力,不需要等待后续版本规划,该功能从1.9.0稳定版开始就已内置,早期没有在Agent主配置页标注,属于文档同步遗漏问题。
针对你要过滤/actuator/health探针请求的场景,不需要修改业务代码,直接在启动参数中添加路径排除配置即可,配置支持Ant风格路径匹配规则。
- 新增配置项说明:
-Dotel.traces.exclude.urls用于配置不需要生成追踪、也不会导出到采集端的请求路径列表,多个路径用英文逗号分隔 - 针对k8s存活探针场景,建议配置为
/actuator/health,/actuator/health/**,可以覆盖健康检查端点的所有子路径请求
调整后的完整启动命令参考:
java \ -javaagent:/opentelemetry/opentelemetry-javaagent.jar \ -Dotel.javaagent.extensions=/opentelemetry/exporter-auto-0.22.0-alpha.jar \ -Dotel.traces.exporter=google_cloud_trace \ -Dotel.metrics.exporter=none \ -Dotel.traces.exclude.urls=/actuator/health,/actuator/health/** \ -jar \ /app.jar
如果你需要更复杂的过滤规则(比如同时匹配请求来源IP、请求头User-Agent为kube-probe标识),可以通过两种方式实现:
- 升级Agent到1.13.0以上版本,使用自定义采样规则配置,支持按请求头、请求方法、路径多维度组合过滤
- 低版本Agent可以自行编写扩展包,实现Span导出拦截器,在导出逻辑中判断Span的http.route属性,匹配到健康检查路径时直接丢弃即可,不需要修改业务代码
注意事项:
- 如果你当前使用的Java Agent版本低于1.9.0,内置的路径排除配置不生效,建议优先升级Agent版本,比自行编写扩展的维护成本低很多
- 配置路径排除后,匹配到的请求从Agent采集层就不会生成Span,不会产生额外的性能开销,也不会出现多余数据上报的问题
内容的提问来源于stack exchange,提问作者singe3
相关产品推荐
相关产品推荐

