Logstash使用mongodb插件报错: ArgumentError: wrong number of arguments (given 2, expected 1)
背景
今天在使用logstash收集日志存储到mongodb的安装过程遇到了个错误,记录下来,错误就是下面这样:
配置文件很简单,由于是测试环境,命令行传入日志输入由ruby过滤一下内容,转换一个time属性的字符串日期为ISODate。
input {
stdin { }
}
filter {
ruby {
path => "/usr/local/etc/logstash/parse_json_records.rb"
}
date {
match => [ "time", "yyyy-MM-dd HH:mm:ss,SSS" ]
locale => "Asia/Shanghai"
timezone => "Asia/Shanghai"
target => "ctime"
}
mutate {
remove_field => ["@timestamp", "@version"]
}
}
output {
mongodb {
collection => "ACTION"
generateId => "true"
database => "evo-rcs"
uri => "mongodb://172.31.254.239:27017"
}
stdout { codec => rubydebug }
}
所以启动时指定配置文件,问题肯定不在这。
安装插件过程
logstash想把数据存储到mongodb中需要先安装插件
➜ logstash logstash-plugin install logstash-output-mongodb
Validating logstash-output-mongodb
Installing logstash-output-mongodb
Installation successful
我们看下当前插件的版本
logstash-plugin list --verbose
...
logstash-output-mongodb (3.1.6)
...
Google一下,看到Github作者回复,原来是个版本问题。。。需要切换到3.1.5,那我来试试看。
之前是通过默认不指定版本的安装,现在需要指定版本:
➜ logstash logstash-plugin install --version=3.1.5 logstash-output-mongodb
Validating logstash-output-mongodb-3.1.5
Installing logstash-output-mongodb
Installation successful
安装完之后再重启启动:
就一点问题都没有了。
问题很小,但是很烦人呢。