[英]Unable to insert json arrays from Logstash to mongoDB
I'm using Logstash 1.5.2 我正在使用Logstash 1.5.2
trying to insert datas in MongoDB with logstash-output-mongodb 尝试使用logstash-output-mongodb在MongoDB中插入数据
It works well only when my parsed logs doesn't contain arrays, when the JSON contains array it generates an exception. 仅当我的解析日志中不包含数组时,它才能正常工作;当JSON包含数组时,它会生成异常。
Failed to send event to MongoDB 无法将事件发送到MongoDB
undefined methodbson_type 未定义的方法
NoMethodError: undefined method `error_code' for #NoMethodError:0x39794292 NoMethodError:#NoMethodError:0x39794292的未定义方法`error_code'
@cancelled=false>, :exception=>#<NoMethodError: undefined method
bson_type' for "2015-08-24T12:26:19.664Z":LogStash::Timestamp>, :backtrace=>["/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:44:into_bson'", "org/jruby/RubyHash.java:1341:in
each'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:43:into_bson'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/encodable.rb:57:in
encode_with_placeholder_and_null'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:42:into_bson'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/array.rb:49:in
to_bson'", "org/jruby/RubyArray.java:1613:ineach'", "org/jruby/RubyEnumerable.java:978:in
each_with_index'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/array.rb:46:into_bson'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/encodable.rb:57:in
encode_with_placeholder_and_null'"@cancelled=false>, :exception=>#<NoMethodError: undefined method
bson_type'为“ 2015-08-24T12:26:19.664Z”:LogStash :: Timestamp>,:backtrace => [“ / opt / logstash / vendor /bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:44:into_bson'", "org/jruby/RubyHash.java:1341:in
each'“,” / opt / logstash / vendor / bundle / jruby / 1.9 / gems / bson-3.2.1-java / lib / bson / hash.rb:43:into_bson'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/encodable.rb:57:in
encode_with_placeholder_and_null'“,” /opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/ lib / bson / hash.rb:42:into_bson'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/array.rb:49:in
to_bson'“,” org / jruby / RubyArray.java:1613:ineach'", "org/jruby/RubyEnumerable.java:978:in
each_with_index'“,”each'", "org/jruby/RubyEnumerable.java:978:in
gems / bson-3.2.1-java / lib / bson / array.rb:46:into_bson'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/encodable.rb:57:in
encode_with_placeholder_and_null'“ , "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/array.rb:45:into_bson'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:46:in
to_bson'", "org/jruby/RubyHash.java:1341:ineach'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:43:in
to_bson'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/encodable.rb:57:inencode_with_placeholder_and_null'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:42:in
to_bson'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/protocol/serializers.rb:155:inserialize'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/protocol/message.rb:153:in
serialize_fields'", "org/jruby/RubyArray.java:1613:ineach'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/protocol/message.rb:141:in
serialize_fields'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/protocol/mes ,“to_bson'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:46:in
bson-3.2.1-to_bson'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:46:in
array.rb:to_bson'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:46:in
into_bson'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:46:in
to_bson'“,” org / jruby / RubyHash.java:1341:ineach'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:43:in
to_bson'“,” /opt/logstash/vendor/bundle/jruby/1.9/gems/ bson-3.2.1-java / lib / bson /encode_with_placeholder_and_null'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:42:in
:57:inencode_with_placeholder_and_null'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:42:in
to_bson中”,“ / opt /encode_with_placeholder_and_null'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:42:in
vendor /encode_with_placeholder_and_null'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:42:in
jruby /encode_with_placeholder_and_null'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:42:in
gems /encode_with_placeholder_and_null'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:42:in
2.0.6 /encode_with_placeholder_and_null'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.1-java/lib/bson/hash.rb:42:in
mongo / protocol /serialize'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/protocol/message.rb:153:in
155:在serialize'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/protocol/message.rb:153:in
/ opt / logstash / vendor / bundle / jruby / 1.9 / gems / mongo-2.0.6 / lib / mongo / protocol / message.rb:153:serialize'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/protocol/message.rb:153:in
serialize_fields'”,“ org / jruby / RubyArray.java:1613 :在each'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/protocol/message.rb:141:in
,“ / opt / logstash / vendor / bundle / jruby / 1.9 / gems / mongo-2.0.6 / lib / mongo / protocol / message.rb:141:在serialize_fields中”,“ / opt / logstash /vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/protocol/mes sage.rb:70:inserialize'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/server/connection.rb:123:in
write'", "org/jruby/RubyArray.java:1613:ineach'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/server/connection.rb:122:in
write'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/server/connectable.rb:66:indispatch'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/loggable.rb:44:in
log'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/loggable.rb:67:inlog_debug'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/server/connectable.rb:65:in
dispatch'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/operation/executable.rb:35:inexecute'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/server/connection_pool.rb:99:in
with_connection'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/server/context.rb:63:inwith_connection'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/operation/executable.rb:34:in
sage.rb:70:inserialize'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/server/connection.rb:123:in
write'“, “ org / jruby / RubyArray.java:1613:ineach'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/server/connection.rb:122:in
/ opt / logstash / vendor / bundle / jruby / 1.9 / gems / mongo-2.0.6 / lib / mongo / server / connection.rb:each'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/server/connection.rb:122:in
write'“,” /opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/server/connectable.rb:66:indispatch'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/loggable.rb:44:in
日志中”,“ / opt / logstashdispatch'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/loggable.rb:44:in
2.0 .6 / lib / mongo / loggable.rb:67:在log_debug'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/server/connectable.rb:65:in
dispatch'“,” /opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/operation/executable.rb:35:inexecute'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/server/connection_pool.rb:99:in
with withconnection'“,” /opt/logstash/vendor/bundle/jruby/1.9/gemswith_connection'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/operation/executable.rb:34:in
with_connection'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/operation/executable.rb:34:in
execute'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/operation/write/insert.rb:72:inexecute_write_command'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/operation/write/insert.rb:62:in
execute'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/collection.rb:190:ininsert_many'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/collection.rb:175:in
insert_one'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-mongodb-0.1.4/lib/logstash/outputs/mongodb.rb:56:inreceive'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-1.5.2.2-java/lib/logstash/outputs/base.rb:88:in
handle'", "(eval):513:inoutput_func'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-1.5.2.2-java/lib/logstash/pipeline.rb:243:in
outputworker'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-1.5.with_connection'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/operation/executable.rb:34:in
/ opt / logstash / vendor / bundle / jruby / 1.9 / gems / mongo-2.0.6 / lib / mongo / operation /with_connection'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/operation/executable.rb:34:in
execute'“,” / opt / logstash / vendor /bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/operation/write/insert.rb:72:inexecute_write_command'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/operation/write/insert.rb:62:in
execute'“,” /opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo /collection.rb:190:在insert_many'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/mongo-2.0.6/lib/mongo/collection.rb:175:in
insert_one中”,“ /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-mongodb-0.1.4/lib/logstash/outputs/mongodb.rb:56:inreceive'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-1.5.2.2-java/lib/logstash/outputs/base.rb:88:in
handle'“,”(eval):513:在output_func'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-1.5.2.2-java/lib/logstash/pipeline.rb:243:in
outputworker'“,” / opt / logstash / vendor / bundle / jruby / 1.9 /宝石/logstash-core-1.5。 2.2-java/lib/logstash/pipeline.rb:165:instart_outputs'"], :level=>:warn} NoMethodError: undefined method
error_code' for # receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-mongodb-0.1.4/lib/logstash/outputs/mongodb.rb:60 handle at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-1.5.2.2-java/lib/logstash/outputs/base.rb:88 output_func at (eval):513 outputworker at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-1.5.2.2-java/lib/logstash/pipeline strong text .rb:243 start_outputs at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-1.5.2.2-java/lib/logstash/pipeline.rb:165 ` 2.2-java / lib / logstash / pipeline.rb:165:在start_outputs'"], :level=>:warn} NoMethodError: undefined method
error_code'为#在/opt/logstash/vendor/bundle/jruby/1.9/接收gems / logstash-output-mongodb-0.1.4 / lib / logstash / outputs / mongodb.rb:位于/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-1.5.2.2-java/的60句柄lib / logstash / outputs / base.rb:(eval)处的88 output_func:/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-1.5.2.2-java/lib/logstash/pipeline中的513 outputworker 强文本 .rb:243 start_outputs位于/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-1.5.2.2-java/lib/logstash/pipeline.rb:165`
Any idea to solve this issue please ? 有解决这个问题的想法吗? Thanks ! 谢谢 !
I have this same error when logstash mongoldb output configuration has 当logstash mongoldb输出配置具有
isodate => true
I have no arrays in my data. 我的数据中没有数组。 Just Nginx access-log data. 仅Nginx访问日志数据。 When I output my data with 当我输出数据时
stdout { codec => rubydebug }
@timestamp looks like this @timestamp看起来像这样
{
"@timestamp" => "2015-09-16T18:49:11.347Z",
}
Main issues is that when I output this to mongodb, the data is inserted as string with quotes escaped like this: 主要问题是,当我将其输出到mongodb时,数据以字符串形式插入,并且引号像这样转义:
"@timestamp": "\"2015-09-16T18:14:06.178Z\"",
I'm using logstash 1.5.4 and mongodb 3.0.6, and the error I'm getting is 我正在使用Logstash 1.5.4和mongodb 3.0.6,而我得到的错误是
:exception=>#<NoMethodError: undefined method `bson_type' for "2015-09-16T18:33:52.474Z":LogStash::Timestamp>, :backtrace=>["/opt/logstash/vendor/bundle/jruby/1.9/gems/bson-3.2.4-java/lib/bson/hash.rb:44:in `to_bson'", [...]
I haven't found any solution for this yet. 我还没有找到任何解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.