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

Quarkus应用使用Otel Java Agent如何排除GET /metrics请求上报至Datadog

解决Quarkus+OpenTelemetry Agent上报冗余/metrics链路的问题

你遇到的问题是Quarkus内部定时触发的GET /metrics请求被Otel Agent捕获并上报到Datadog,导致链路数据冗余,之前的排除配置无效是因为路径不匹配(你配置的是/q/metrics,但实际请求路径是/metrics)。以下是几种可行的解决方法:

方法1:修正OpenTelemetry Agent的排除URL配置

直接针对实际请求路径配置排除规则,Otel Java Agent支持ANT风格通配符,可选择以下任一配置:

  • 精确匹配单个路径:
    OTEL_INSTRUMENTATION_HTTP_SERVER_EXCLUDED_URLS=/metrics
    
  • 匹配所有以/metrics开头的路径(如果有变体):
    OTEL_INSTRUMENTATION_HTTP_SERVER_EXCLUDED_URLS=/metrics*
    

配置后重启应用,确保Agent能正确读取到该环境变量。可通过添加OTEL_LOG_LEVEL=debug查看Agent日志,确认排除规则是否加载生效。

方法2:从根源禁用Quarkus的定时metrics采集

如果不需要Quarkus每隔10秒自动采集metrics,可直接在application.properties中关闭相关配置:

# 关闭所有metrics导出
quarkus.micrometer.export.enabled=false

# 或者仅关闭Prometheus风格的scrape定时任务(如果是这个触发的请求)
quarkus.micrometer.prometheus.scrape.enabled=false

这样就不会产生GET /metrics请求,从源头消除冗余链路。

方法3:在Otel Collector层面过滤冗余链路

如果Agent端配置仍不生效,可在Otel Collector中添加过滤规则,丢弃路径为/metrics的HTTP服务器跨度:
在Collector的配置文件中添加filter处理器:

processors:
  filter:
    spans:
      exclude:
        match_type: regexp
        attributes:
          - key: http.target
            value: "^/metrics$"

然后在service.pipelines.traces.processors中引入该处理器,确保链路在转发到Datadog前被过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:06:09