如何修改Fluent Bit配置解决Humio解析Kubernetes JSON日志前缀报错问题
解决Fluent Bit采集K8s Pod日志前缀导致Humio JSON解析失败问题
你遇到的前缀是容器运行时(Docker/containerd)默认添加的CRI标准日志头,格式为<时间戳> <流类型> <标志位> <实际日志内容>,你的合法JSON内容被包裹在这段前缀之后,因此直接解析整行日志会触发JSON格式错误。
你可以通过修改Humio Helm部署的values.yaml配置,调整Fluent Bit的解析规则解决问题,步骤如下:
- 第一步:开启输入段的CRI自动解析
配置Fluent Bit的tail输入插件使用自带的CRI解析器,自动拆分前缀和实际日志内容,拆分后你的原始JSON会被放到log字段中:humio-fluentbit: config: inputs: | [INPUT] Name tail Path /var/log/containers/*.log Parser cri Tag k8s.* Mem_Buf_Limit 5MB Skip_Long_Lines On - 第二步:调整过滤器配置,对
log字段做JSON解析
因为你已经给Pod添加了humio-parser注解指定解析器,只需要调整解析器的读取字段为拆分后的log字段即可:
如果你不需要保留CRI拆分出来的时间、流类型等元数据,可以把filters: | [FILTER] Name kubernetes Match k8s.* K8S-Logging.Parser On K8S-Logging.Exclude On Merge_Log On Keep_Log Off [FILTER] Name parser Match k8s.* Key_Name log Parser $kubernetes['annotations']['humio-parser'] Preserve_Key Off Reserve_Data OnReserve_Data设为Off。 - 第三步:生效配置
执行helm升级命令重启Fluent Bit即可:helm upgrade <你的Humio Release名称> humio/humio --values values.yaml
配置生效后新采集的日志就可以正常解析JSON,不会再出现前缀导致的报错。
内容的提问来源于stack exchange,提问作者Giovanni Silva
相关产品推荐
相关产品推荐

