Logstash过滤器语法求助:管道报错且数据处理异常
Logstash配置语法修正方案
原配置存在的问题
- 重复JSON解析:input的file插件已通过
codec => "json"自动解析文件内容为JSON结构,filter层再调用json过滤器会因message字段已不是字符串而报错。 - 语法不闭合:output块内的elasticsearch配置缺少闭合大括号,导致管道语法校验失败。
- 参数类型错误:
template_name参数应为字符串类型,原配置的数组写法不符合语法要求。
修正后的完整配置
input { file { path => "/var/tmp/wd/accounts/*.json" codec => "json" start_position => "beginning" sincedb_path => "/dev/null" } } # 移除重复的json过滤器,input已完成JSON解析 filter { # 如需额外字段处理,可在此添加mutate等过滤器 } output { elasticsearch { hosts => "http://localhost:9200" template => "/etc/logstash/templates/accounts-template.json" template_name => "accounts-template.json" template_overwrite => true index => "accounts-%{+yyyy.MM.dd}" user => "user" password => "password" } # 补全elasticsearch配置块的闭合大括号 stdout { codec => rubydebug } }
关键修改说明
- 移除filter层的json过滤器,避免重复解析引发的字段错误。
- 补全elasticsearch配置块末尾的
},修复语法不闭合问题。 - 将
template_name的数组格式改为字符串格式,匹配参数类型要求。
内容的提问来源于stack exchange,提问作者Queren Santos
相关产品推荐
相关产品推荐

