json过滤器失败,使用&gt;#<nomethoderror:undefined =“”method =“”`[]'=“”for =“”nil:nilclass =“”> </nomethoderror:>

时间:2013-08-16 07:41:44

标签: json logstash

我正在尝试处理包含普通消息和json格式消息的日志文件中的条目。我最初的想法是grep用大括号括起来的消息,并让它们由另一个链式过滤器处理。 Grep工作正常(如明文消息处理),但随后的json过滤器报告异常。我在下面附加了logstash配置,输入和错误消息。

你有什么想法可能是什么问题?处理来自同一文件的普通和json格式条目的任何其他建议吗?

非常感谢, 约翰内斯

错误讯息:

Trouble parsing json {:key=>"@message", :raw=>"{\"time\":\"14.08.2013 10:16:31:799\",\"level\":\"DEBUG\",\"thread\":\"main\",\"clazz\":\"org.springframework.beans.factory.support.DefaultListableBeanFactory\",\"line\":\"214\",\"msg\":\"Returning cached instance of singleton bean 'org.apache.activemq.xbean.XBeanBrokerService#0'\"}", :exception=>#<NoMethodError: undefined method `[]' for nil:NilClass>, :level=>:warn}

logstash conf:

file {
        path => [ "plain.log" ] 
        type => "plainlog" 
        format => "plain" 
    }
}
filter {
  # Grep json formatted messages and send them to following json filter
  grep {
    type => "plainlog"
    add_tag => [ "grepped_json" ]
    match => [ "@message", "^{.*}" ]
  }
  json {
    tags => [ "grepped_json" ]
    source => "@message"
  }
}
output { 
  stdout { debug => true debug_format => "json"}
  elasticsearch { embedded => true }
}

从logfile输入(只需一行):

{"time":"14.08.2013 10:16:31:799","level":"DEBUG","thread":"main","clazz":"org.springframework.beans.factory.support.DefaultListableBeanFactory","line":"214","msg":"Returning cached instance of singleton bean 'org.apache.activemq.xbean.XBeanBrokerService#0'"}

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并通过在json过滤器中添加 目标 来解决这个问题。 文档确实说 目标 是可选的,但显然不是。

改变你应该拥有的例子:

json {
  tags => [ "grepped_json" ]
  source => "@message"
  target => "data"
}