Fluent Bit 如何把 JSON 日志拆分成 Elasticsearch 的结构化字段?

Fluent Bit 用 json parser 解析日志行,嵌套对象用 Nest 过滤器的 Operation lift 提升到顶层;输出到 ES 后字段即结构化可检索。本文给出 parser 与 nest 过滤器的完整配置。

最佳实践
Fluent Bit 如何把 JSON 日志拆分成 Elasticsearch 的结构化字段?封面

两步:input 或 filter 用 PARSER json 把 JSON 行解析成字段;嵌套对象再用 Nest 过滤器的 lift 操作提到顶层——ES 中每个字段就可独立检索与聚合。

配置示例

[PARSER]
    Name        json_parser
    Format      json

[INPUT]
    Name        tail
    Path        /var/log/app/*.log
    Parser      json_parser

[FILTER]
    Name        nest
    Match       *
    Operation   lift
    Nested_under request      # 把 request 下的字段提升到顶层

[OUTPUT]
    Name        es
    Match       *
    Host        elasticsearch
    Index       app-logs

原始 {"request":{"method":"GET","path":"/api"}} → ES 文档含顶层 methodpath 字段。

反向操作:nest

Operation nest 把散字段收进一个子对象——适合输出需要特定结构的场景。

观测云对照

观测云 DataKit 对 JSON 日志自动展开为结构化字段(可配置),日志查看器中字段即刻可筛选聚合,无需 lift 类配置。

常见问题(FAQ)

Q:字段提升后与现有字段重名怎么办? lift 前用 nest 把原字段收拢,或重命名。

Q:ES 里字段类型不对(数字成字符串)? 用 filter 中的类型转换插件,或让应用端输出正确类型的 JSON。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台