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

如何从Log4J2日志中移除Dynatrace遥测数据?

问题解决思路:Dynatrace追踪数据意外注入SpringBoot日志JSON字段

核心原因

这是OpenShift集群中Dynatrace的自动注入组件(如OneAgent或OpenTelemetry自动注入webhook)通过字节码增强或日志框架拦截,对logback JSON Layout的pattern解析结果进行了自动追加追踪信息,和应用代码配置无关。

解决方案

1. 检查并禁用集群级的Dynatrace自动注入

  • 查看Pod的Annotations,确认是否存在Dynatrace自动注入标记(如dynatrace.com/inject: true或oneagent.dynatrace.com/inject: true)
  • 在Deployment的Pod模板中添加反注入Annotation,阻止Dynatrace agent注入:
    metadata:
      annotations:
        dynatrace.com/inject: "false"
    
  • 若集群使用OpenTelemetry Collector自动注入,添加instrumentation.opentelemetry.io/inject-java: "false"来禁用

2. 替换日志JSON Layout的pattern resolver

对于不需要动态解析的静态字段(如nanoOfSecond),改用value resolver替代pattern resolver,避免被拦截追加:

"nanoOfSecond": {
    "$resolver": "value",
    "value": "0",
    "stackTraceEnabled": false 
}

对于需要处理异常的dumpanalysis字段,尝试用throwable resolver结合replace resolver,绕过pattern解析:

"dumpanalysis": {
    "$resolver": "replace",
    "target": {
        "$resolver": "throwable",
        "pattern": "%throwable{separator(|)}"
    },
    "regex": "\t",
    "replacement": " ",
    "stackTraceEnabled": false
}

3. 临时禁用日志追踪信息注入

如果无法修改集群配置,可通过环境变量禁用Dynatrace的日志注入功能(仅当agent已注入时有效):

DT_DISABLE_LOG_INJECTION=true

将该环境变量添加到Deployment的容器环境变量中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:25:01