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

如何过滤Fluentd日志,仅保留日志内容并移除所有元数据

修改Fluentd配置以移除冗余元数据

针对你的需求,提供两种修改方案,你可以根据实际场景选择:

方案1:仅保留{"log": "ACTUAL LOG CONTENT"}格式(保留JSON结构,仅留核心日志字段)

修改步骤:

  1. 移除冗余元数据来源:如果你不需要Kubernetes/Docker的额外元数据,可以直接删除kubernetes_metadata过滤器(它是添加docker、kubernetes等冗余元数据的核心)。
  2. 清理日志字段:调整record_transformer过滤器,只保留log和日志流命名所需的stream_name字段(避免CloudWatch日志流命名失败)。

修改后的containers.conf中@containers标签部分配置如下:

<label @containers>
  # 若不需要Kubernetes元数据,直接删除以下filter块
  # <filter **>
  #   @type kubernetes_metadata
  #   @id filter_kube_metadata
  # </filter>

  <filter **>
    @type record_transformer
    @id filter_cleanup_logs
    # 仅保留log和stream_name字段,移除所有其他冗余字段
    keep_keys log,stream_name
  </filter>

  <match **>
    @type cloudwatch_logs
    @id out_cloudwatch_logs_containers
    region "#{ENV.fetch('AWS_REGION')}"
    log_group_name "/EKS-LOGS/#{ENV.fetch('AWS_EKS_CLUSTER_NAME')}/containers"
    log_stream_name_key stream_name
    remove_log_stream_name_key true
    auto_create_stream true
    <buffer>
      flush_interval 5
      chunk_limit_size 2m
      queued_chunks_limit_size 32
      retry_forever true
    </buffer>
  </match>
</label>

方案2:直接输出纯文本日志(仅保留ACTUAL LOG CONTENT字符串)

修改步骤:

  1. 移除冗余元数据来源:同样可删除kubernetes_metadata过滤器(若无需元数据)。
  2. 提取原始日志内容:通过record_transformer将整个日志记录替换为log字段的原始内容,并在输出时配置纯文本格式。

修改后的containers.conf中@containers标签部分配置如下:

<label @containers>
  # 若不需要Kubernetes元数据,直接删除以下filter块
  # <filter **>
  #   @type kubernetes_metadata
  #   @id filter_kube_metadata
  # </filter>

  <filter **>
    @type record_transformer
    @id filter_extract_raw_log
    # 移除所有冗余字段,仅保留log的内容
    remove_keys *
    <record>
      raw_log ${record["log"]}
    </record>
  </filter>

  <match **>
    @type cloudwatch_logs
    @id out_cloudwatch_logs_containers
    region "#{ENV.fetch('AWS_REGION')}"
    log_group_name "/EKS-LOGS/#{ENV.fetch('AWS_EKS_CLUSTER_NAME')}/containers"
    log_stream_name_key stream_name
    remove_log_stream_name_key true
    auto_create_stream true
    # 配置输出格式为纯文本,直接打印raw_log字段内容
    format ${raw_log}
    <buffer>
      flush_interval 5
      chunk_limit_size 2m
      queued_chunks_limit_size 32
      retry_forever true
    </buffer>
  </match>
</label>

关键说明:

  • keep_keys:指定保留的字段,其余字段会被自动移除。
  • remove_keys *:移除所有现有字段,再通过<record>块重新定义需要保留的内容。
  • format ${raw_log}:在输出到CloudWatch时,直接以纯文本格式打印日志内容,而非JSON结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:27:09