如何在Logstash中合并firstname与lastname字段并解决_jsonparsefailure报错
Logstash字段合并与json解析故障解决
问题原因梳理
- _jsonparsefailure报错触发原因
- 输入文件格式不符合要求:需保证每一行对应一个完整独立的JSON对象,无多余换行、特殊字符
- 文件读取配置缺失:file input默认从文件尾部开始读取内容,若使用已有历史文件测试,未配置
start_position => "beginning"会导致读取内容不完整,同时可关闭sincedb记录避免历史读取进度干扰
- 现有配置语法错误
- 字段名大小写不匹配:原始数据中名的字段为小写
firstname,配置中错误使用大写开头的Firstname,Logstash字段名大小写敏感,无法正确取值 add_field语法错误:合并字段需将两个字段的引用写在同一个值字符串中,原配置将%{lastname}作为独立键,不符合键值对语法规则
- 字段名大小写不匹配:原始数据中名的字段为小写
正确配置示例
input { file { path => "替换为你的输入json文件绝对路径" start_position => "beginning" sincedb_path => "/dev/null" # Windows环境改为 NUL codec => "json" # 直接在输入层解析json,可省略filter层的json解析插件 } } filter { mutate { add_field => { "fullname" => "%{firstname} %{lastname}" } # 可选配置:不需要保留原字段和原始报文可打开下方注释 # remove_field => ["firstname", "lastname", "message"] } } output { file { path => "替换为你的输出文件绝对路径" codec => json_lines # 保证输出每行为标准JSON格式 } }
效果验证
配置修改后重启Logstash,清空之前的sincedb记录重新读取文件,输出结果中会新增fullname字段,样例数据合并后结果为"fullname": "Desiree Mays",同时不会再出现_jsonparsefailure标签。
内容的提问来源于stack exchange,提问作者Arya
相关产品推荐
相关产品推荐

