我有以下设置:我有一个Java工具,它将JSON消息发送到RabbitMQ。他们看起来像这样:
{
"a": 0,
"b": 1,
"c": 2
}
现在,我使用Logstash读取RabbitMQ队列并将其存储到Elasticsearch中,以便可以使用Kibana分析数据。存储在Elasticsearch中的JSON看起来像这样:
{
"a": 0,
"b": 1,
"c": 2,
"@version": "1",
"@timestamp": "2014-01-22T19:05:19.136Z"
}
我认为@timestamp字段对我正在做的事情没有任何用处。当我使用cURL在Elasticsearch中存储相同的JSON时,只有@version字段存在,而@timestamp字段不存在。有什么方法可以配置Logstash不保存@timestamp?
当Logstash读取消息时,Logstash将消息视为Event。事件将带有时间戳和消息日志。因此,@ timestamp字段是必需的。
因此,如果要删除@timestamp字段,将导致错误。Logstash无法将事件输出到elasticsearch。
Exception in thread "LogStash::Runner" org.jruby.exceptions.RaiseException: (NoMethodError) undefined method `tv_sec' for nil:NilClass
at RUBY.sprintf(file:/tmp/logstash-1.2.1-flatjar.jar!/logstash/event.rb:239)
at org.jruby.RubyString.gsub(org/jruby/RubyString.java:3062)
at RUBY.sprintf(file:/tmp/logstash-1.2.1-flatjar.jar!/logstash/event.rb:225)
at RUBY.receive(file:/tmp/logstash-1.2.1-flatjar.jar!/logstash/outputs/elasticsearch.rb:153)
到目前为止,并非所有@前缀字段都会导致错误,仅删除@timestamp会导致此错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句