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

如何配置Fluent-bit拆分JSON日志字段并写入Elasticsearch?

解决Fluent-bit解析嵌套JSON并提取顶层字段问题

日志示例

原始应用日志格式如下:

{
  "@timestamp": "2020-12-24T12:16:43.2784Z",
  "level": "INFO",
  "category": "HTTP:Request/Response",
  "data": "{\"HttpMethod\":\"POST\",\"Accept-Encoding : gzip\",\"Cache-Control : max-age=259200\",\"Content-Type : application/json\",\"Content-Length : 569\",\"X-Forwarded-Port : 443\"}",
  "identifier": "4c1d2e8d-7585-4a63-abd6-75b4d2a400de"
}

当前Fluent-bit配置

[SERVICE]
    parsers_file        parsers.conf
    plugins_file        plugins.conf

[FILTER]
    Name            parser
    Parser          json
    Match           *
    Key_Name        data
    Reserve_Data    on
    Preserve_Key    on

期望效果

希望将data字段中的属性提取为顶层字段,最终日志结构如下:

{
  "@timestamp": "2020-12-24T12:16:43.2784Z",
  "level": "INFO",
  "category": "HTTP:Request/Response",
  "HttpMethod": "POST",
  "Accept-Encoding": "gzip",
  "Cache-Control": "max-age=259200",
  "Content-Type": "application/json",
  "Content-Length": "569",
  "X-Forwarded-Port": "443",
  "identifier": "4c1d2e8d-7585-4a63-abd6-75b4d2a400de"
}

问题分析

当前配置无法生效的核心原因有两个:

  1. data字段内的JSON不符合标准格式:键名与冒号之间存在空格(如Accept-Encoding : gzip),标准JSON解析器无法正确识别这类键值对;
  2. Preserve_Key设为on会保留原始data字段,且未将解析后的嵌套字段提升至顶层。

解决方案

修改Fluent-bit配置,添加字符串替换、解析、字段提升三个过滤步骤:

[SERVICE]
    parsers_file        parsers.conf
    plugins_file        plugins.conf

# 第一步:清理data字段内的非标准格式,将" : "替换为":"
[FILTER]
    Name modify
    Match *
    Add data_cleaned ${data}
    Replace data_cleaned / : / /:/g

# 第二步:解析清理后的标准JSON字符串
[FILTER]
    Name parser
    Match *
    Parser json
    Key_Name data_cleaned
    Reserve_Data on
    Preserve_Key off  # 不保留临时的data_cleaned字段

# 第三步:将解析后的嵌套字段提升至顶层
[FILTER]
    Name nest
    Match *
    Operation lift
    Nested_under data_cleaned
    Add_prefix ""

配置说明

  • modify过滤器:创建data_cleaned临时字段,替换其中的空格冒号为标准冒号,将非标准JSON转为可解析的格式;
  • parser过滤器:解析data_cleaned字段为结构化JSON,关闭Preserve_Key避免保留临时字段;
  • nest过滤器:将data_cleaned下的所有子字段直接提升至日志顶层,完成字段扁平化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:25:00